阿里云PAI-Stable Diffusion开源代码浅析之(一)所有api的入参如何看

本文涉及的产品
交互式建模 PAI-DSW,5000CU*H 3个月
模型训练 PAI-DLC,5000CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: 阿里云PAI-Stable Diffusion开源代码浅析之所有api的入参如何看

1. 需求

PAI基于开源Stable-Diffusion做了eas的封装,客户想用API版本做内部业务的调用,需要该API的所有参数的接口文档。

这里衍生一下类似的问题应该如何找到API的所有可用的入参(接口文档)。

现状及话术:pai-eas-sd模型额外支持的参数,类似的最佳实践都是基于开源来做的,可以让客户根据eas的配置json中的启动命令,参考开源的github来找源码分析所有可用的入参,pai在这个基础上做了额外的封装,额外支持的参数可以参考上述文档。

2. pai-eas-sd实例类型

image.png

image.png

3. 开源sd的api入参分析

看一下API版本的脚本启动命令:

"script": "./webui.sh --listen --port 8000 --skip-version-check --no-hashing --no-download-sd-model --skip-prepare-environment --api-log --time-log --nowebui"

结合github上的源码:https://github.com/AUTOMATIC1111/stable-diffusion-webui

git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git

我们找到webui.py的入口,main方法中cmd_opts接收了shell脚本的后面的入参,cmd_opts具体的实现在

modules.cmd_args.py

image.png

可以直接从这个parser对象中找到指定参数的含义,上面命令中API版本和WEBUI版本比较关键的差异就是参数 --nowebui,根据代码的判断结果在指定了该参数后会调用 api_only的方法

image.png

api_only方法中主要是通过python的FastAPI框架搭建起来的服务端,其中create_api方法中封装的主要是这个类:

from modules.api.api import Api

image.png

从这个类的init方法我们可以看出,这个类接受两个参数,第一个是FastAPI的类app,第二个看着是队列相关的,可以暂时不深究。类中的add_api_route方法做了一层封装,将不同的path,endpoint注册到app中,除了两个核心的参数之外还有比较常见的参数,接受POST还是GET方法,以及响应体的数据类。

image.png

image.png

这里我们主要以文生图的模型为例,即text to image,对应的path是/sdapi/v1/txt2img,我们通过endpoint绑定的方法可以看到这个path在这个服务中的handler为text2imgapi方法,那接下来我们只需要看这个方法的入参即可找到这个API的所有可用参数。

image.png

StableDiffusionTxt2ImgProcessingAPI的构造方法:

image.png

PydanticModelGenerator类的入参和部分逻辑:

merge_class_params获取了入参的这个个类及其所有父类__init__方法的参数

并通过列表推导式的方式将参数通过ModelDef封装并添加到数组容器_model_def中

除此之外还有additional_fields,应该是额外的一些配置,通过遍历的方式也添加到数组容器_model_def中

image.png

所以我们需要重点关心StableDiffusionProcessingTxt2Img以及它除object之外所有父类的参数都有哪些,通过点击跳转我们就可以看到如下的参数,基本都可以和webui上对上,通过json的方式传递到api来调整推理即可。

image.png

4. 阿里云PAI-eas-API额外支持的参数

https://help.aliyun.com/zh/pai/use-cases/deploy-stable-diffusion-api-service-with-pai-eas?spm=a2c4g.11174283.0.i2#1c133de448x5k

相关实践学习
使用PAI-EAS一键部署ChatGLM及LangChain应用
本场景中主要介绍如何使用模型在线服务(PAI-EAS)部署ChatGLM的AI-Web应用以及启动WebUI进行模型推理,并通过LangChain集成自己的业务数据。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
5天前
|
API
阿里云短信服务文档与实际API不符
阿里云短信服务文档与实际API不符
|
6天前
|
数据采集 移动开发 数据可视化
模型预测笔记(一):数据清洗分析及可视化、模型搭建、模型训练和预测代码一体化和对应结果展示(可作为baseline)
这篇文章介绍了数据清洗、分析、可视化、模型搭建、训练和预测的全过程,包括缺失值处理、异常值处理、特征选择、数据归一化等关键步骤,并展示了模型融合技术。
22 1
模型预测笔记(一):数据清洗分析及可视化、模型搭建、模型训练和预测代码一体化和对应结果展示(可作为baseline)
|
7天前
|
IDE API 开发工具
沉浸式集成阿里云 OpenAPI|Alibaba Cloud API Toolkit for VS Code
Alibaba Cloud API Toolkit for VSCode 是集成了 OpenAPI 开发者门户多项功能的 VSCode 插件,开发者可以通过这个插件方便地查找API文档、进行API调试、插入SDK代码,并配置基础环境设置。我们的目标是缩短开发者在门户和IDE之间的频繁切换,实现API信息和开发流程的无缝结合,让开发者的工作变得更加高效和紧密。
沉浸式集成阿里云 OpenAPI|Alibaba Cloud API Toolkit for VS Code
|
4天前
|
机器学习/深度学习 人工智能 算法
揭开深度学习与传统机器学习的神秘面纱:从理论差异到实战代码详解两者间的选择与应用策略全面解析
【10月更文挑战第10天】本文探讨了深度学习与传统机器学习的区别,通过图像识别和语音处理等领域的应用案例,展示了深度学习在自动特征学习和处理大规模数据方面的优势。文中还提供了一个Python代码示例,使用TensorFlow构建多层感知器(MLP)并与Scikit-learn中的逻辑回归模型进行对比,进一步说明了两者的不同特点。
18 2
|
5天前
|
API
阿里云短信平台API错误码提示错误天级流控显示小时级错误码
阿里云短信平台API错误码提示错误天级流控显示小时级错误码
|
7天前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2024 年 09 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
|
8天前
|
JSON 测试技术 API
阿里云PAI-Stable Diffusion开源代码浅析之(二)我的png info怎么有乱码
阿里云PAI-Stable Diffusion开源代码浅析之(二)我的png info怎么有乱码
|
2月前
|
机器人 API Python
智能对话机器人(通义版)会话接口API使用Quick Start
本文主要演示了如何使用python脚本快速调用智能对话机器人API接口,在参数获取的部分给出了具体的获取位置截图,这部分容易出错,第一次使用务必仔细参考接入参数获取的位置。
156 1
|
12天前
|
人工智能 自然语言处理 PyTorch
Text2Video Huggingface Pipeline 文生视频接口和文生视频论文API
文生视频是AI领域热点,很多文生视频的大模型都是基于 Huggingface的 diffusers的text to video的pipeline来开发。国内外也有非常多的优秀产品如Runway AI、Pika AI 、可灵King AI、通义千问、智谱的文生视频模型等等。为了方便调用,这篇博客也尝试了使用 PyPI的text2video的python库的Wrapper类进行调用,下面会给大家介绍一下Huggingface Text to Video Pipeline的调用方式以及使用通用的text2video的python库调用方式。
|
11天前
|
JSON JavaScript API
(API接口系列)商品详情数据封装接口json数据格式分析
在成长的路上,我们都是同行者。这篇关于商品详情API接口的文章,希望能帮助到您。期待与您继续分享更多API接口的知识,请记得关注Anzexi58哦!

相关产品

  • 人工智能平台 PAI