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

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
交互式建模 PAI-DSW,每月250计算时 3个月
模型训练 PAI-DLC,100CU*H 3个月
简介: 阿里云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
(Elasticsearch)使用阿里云 infererence API 及 semantic text 进行向量搜索
本文展示了如何使用阿里云 infererence API 及 semantic text 进行向量搜索。
|
7天前
|
JSON API 数据安全/隐私保护
淘宝评论API接口操作步骤详解,代码示例参考
淘宝评论API接口是淘宝开放平台提供的一项服务,通过该接口,开发者可以访问商品的用户评价和评论。这些评论通常包括评分、文字描述、图片或视频等内容。商家可以利用这些信息更好地了解消费者的需求和偏好,优化产品和服务。同时,消费者也可以从这些评论中获得准确的购买参考,做出更明智的购买决策。
|
23天前
|
机器学习/深度学习 人工智能 监控
AutoTrain:Hugging Face 开源的无代码模型训练平台
AutoTrain 是 Hugging Face 推出的开源无代码模型训练平台,旨在简化最先进模型的训练过程。用户无需编写代码,只需上传数据即可创建、微调和部署自己的 AI 模型。AutoTrain 支持多种机器学习任务,并提供自动化最佳实践,包括超参数调整、模型验证和分布式训练。
96 4
AutoTrain:Hugging Face 开源的无代码模型训练平台
|
12天前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2024 年 11 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
|
18天前
|
API Python
【Azure Developer】分享一段Python代码调用Graph API创建用户的示例
分享一段Python代码调用Graph API创建用户的示例
41 11
|
1月前
|
API
全国行政区划代码与经纬度查询免费API接口教程
该接口提供全国各行政区划代码及经纬度查询服务。通过POST或GET请求,输入用户ID、KEY及地点名称,可获取地区代码、省份、市级、区县级名称及经纬度等信息。示例URL:https://cn.apihz.cn/api/other/xzqhdm.php?id=88888888&key=88888888&sheng=北京&place=北京。返回数据包含状态码、信息提示及查询结果。
147 14
|
1月前
|
机器学习/深度学习 数据采集 人工智能
探索机器学习:从理论到Python代码实践
【10月更文挑战第36天】本文将深入浅出地介绍机器学习的基本概念、主要算法及其在Python中的实现。我们将通过实际案例,展示如何使用scikit-learn库进行数据预处理、模型选择和参数调优。无论你是初学者还是有一定基础的开发者,都能从中获得启发和实践指导。
47 2
|
1月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2024 年 10 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
|
1月前
|
机器学习/深度学习 数据采集 人工智能
揭秘AI:机器学习的魔法与代码
【10月更文挑战第33天】本文将带你走进AI的世界,了解机器学习的原理和应用。我们将通过Python代码示例,展示如何实现一个简单的线性回归模型。无论你是AI新手还是有经验的开发者,这篇文章都会给你带来新的启示。让我们一起探索AI的奥秘吧!
|
1月前
|
弹性计算 负载均衡 监控
阿里云slb的slb-api介绍
【10月更文挑战第17天】
100 1

热门文章

最新文章

相关产品

  • 人工智能平台 PAI
  • 下一篇
    DataWorks