腾讯云大模型训推平台TI-ONE 导入和部署 Stable Diffusion Diffuser 服务

这篇讲述如何在 TI-ONE 上导入 Stable Diffusion V1 模型,并基于 Hugging Face 的 Diffusers 模块部署服务。

相关产品
腾讯云大模型训推平台TI-ONE 产品页,含版本规格、价格与购买入口。

总览

这篇提供了4个案例:

·基础 Stable Diffusion 模型推理加速

·Stable Diffusion + ControlNet 模型推理加速

·Stable Diffusion + 固定 Lora 模型推理加速

·Stable Diffusion + Lora 模型动态加速

前置要求

你需先开通 对象存储 业务,后续所有操作均要在对象存储中存储模型。

操作步骤

二、第一步:将模型上传到 COS

1. 在任何一个终端运行如下下载命令:

curl 'https://tione-prod-open-1256580188.cos.ap-guangzhou.myqcloud.com/ti-cloud/ti-ems/tiacc-demo-models/hg-stable_diffusion/runwayml-stable-diffusion-v1-5-models.zip' -o runwayml-stable-diffusion-v1-5-models.zip

下载后解压文件,然后将模型包文件夹上传到 COS,推荐使用 COS Browser 客户端工具上传,详细使用方式详见 桌面端使用说明。

2. 在客户端工具,进入个人存储桶,将 runwayml-stable-diffusion-v1-5-models 模型文件夹完整上传。

注意:对象存储 COS 为腾讯云的分布式存储服务,计费独立详情请参见 对象存储-计费概述。

三、第二步:注册模型

进入 TI-ONE 控制台,进入 模型管理 > 模型仓库,单击 导入模型。

选择 导入新模型 > 从 COS 导入,模型格式选择 Hugging Face-stable diffusion,运行环境来源选择 内置-stable-diffusion(gpu)

模型来源路径选择第一步中上传的模型文件夹。

完成配置后单击确定,完成模型导入。

四、第三步:进行模型优化

在模型仓库模块,选择第二步导入的模型,选择 操作 > 优化模型。

开始配置优化任务:

·填写任务名称

·填写 tensor 信息

针对 Stable Diffusion 模型:

·input_shapes 样例: shape_str = ['input_0:array.char()', 'input_1:scalar.int32(512)', 'input_2:scalar.int32(512)']

·input_shapes 说明:第一个 shape 参数代表输入的 prompt 类型,prompt 为单个 string 填 'input_0:array.char()',prompt 为 string 列表填 'input_0[0-{min_batch_id},0-{max_batch_id}]:array.char()'

·第二个 shape 参数和第三个 shape 参数指定输出图片的高和宽,可选填,默认与模型配置一致。

·当输出图片的高和宽动态变化,需要将第二个和第三个 shape 参数配置 min 和 max,样例: 'input_1:scalar.int32(256, 512)', 'input_2:scalar.int32(384, 512)',代表输出图片高为256~512,宽为384~512。

当前 demo 填写的内容为:input_0:array.char()

·优化级别:选择 FP16

·部署机型:当前支持 A10、A100,选择 A10。

·SD 模型专业参数设置 pipeline_kwargs,为 stable diffusion 初始化参数,json 格式:本 demo 填写。

{"safety_checker" : null}

完成配置启动任务后,优化任务会展示在列表,可查看优化进度。

加速完成后,可在列表页看到加速报告,单击优化任务名称后,可查看优化任务详情以及优化报告。

五、第四步:将加速后的模型保存到模型仓库

若你对加速比满意,可单击优化任务名称,在优化进度模块单击 保存到模型仓库,将优化后的模型保存到模型仓库,单击后,可在模型仓库的优化模型列表看到保存后的优化模型。

六、第五步:部署模型

单击 操作 > 发布在线服务,可以进入服务发布流程。

·服务名称:填写服务名称

·计费模式:选择你需要的计费模式

·模型推理文件:模型服务发布需要上传模型推理文件定义前后处理逻辑,模型推理文件样例请单击下载地址下载,下载后上传,如下所示;若你需要自定义推理逻辑,可参考 模型推理文件简介和示例 进行自定义。

·算力规格:选择12C44GB A10*1

·环境变量:为了能够方便的查看模型推理返回结果,我们的推理文件中撰写了相关图片保存的逻辑,需要在启动服务的时候添加以下环境变量进行映射,具体信息如下:

COS_UPLOAD_ENABLE=1

COS_SECRET_ID=COS secret id,在https://console.cloud.tencent.com/cam/capi获取。

COS_SECRET_KEY=COS secret key,在 ttps://console.cloud.tencent.com/cam/capi获取。

COS_BUCKET=COS 桶名称

COS_REGION=桶所在地域

COS_FILE_PREFIX=推理生成的图片文件所在的目录

配置完服务后,单击 启动服务 ,开始发布服务。服务启动成功后,可在服务列表查看服务信息。

单击服务名称 > 服务调用,在接口信息页进行服务测试,输入如下请求体:

{"draw_parameters": {"prompt":"a cute dog sleeping with a mushroom"}}

在接口信息中输入,单击下方发送请求,即可返回结果。将结果中的图片地址输入浏览器,可查看图片内容。

八、第一步:将模型上传到 COS

1. 在任何一个终端运行如下下载命令:

curl 'https://tione-prod-open-1256580188.cos.ap-guangzhou.myqcloud.com/ti-cloud/ti-ems/tiacc-demo-models/hg-stable_diffusion/runwayml-stable-diffusion-v1-5-models-controlnet.zip' -o runwayml-stable-diffusion-v1-5-models-control.zip

下载后解压文件,然后将模型包文件夹上传到 COS,推荐使用 COS Browser 客户端工具上传,详细使用方式详见 桌面端使用说明。

2. 在客户端工具,进入个人存储桶,将 runwayml-stable-diffusion-v1-5-models-control 模型文件夹完整上传。

九、第二步:注册模型

进入 TI-ONE 控制台,进入 模型管理 > 模型仓库,单击 导入模型。

选择 导入新模型 > 从 COS 导入,模型格式选择 Hugging Face-stable diffusion,运行环境来源选择 内置-stable-diffusion(gpu)

模型来源路径选择第一步中上传的模型文件夹:

完成配置后单击确定,完成模型导入。

十、第三步:进行模型优化

在模型仓库模块,选择第二步导入的模型,选择 操作 > 优化模型。

开始配置优化任务:

·填写任务名称

·填写 tensor 信息

针对 Stable Diffusion-ControlNet 模型:

·input_shapes 样例: shape_str = ['input_0:array.char()', 'input_1:float(1*3*512*512)' 'input_2:scalar.int32(512)', 'input_3:scalar.int32(512)']

·input_shapes 说明:第一个 shape 参数代表输入的 prompt 类型,prompt 为单个 string 填 'input_0:array.char()',prompt 为 string 列表填 'input_0[0-{min_batch_id},0-{max_batch_id}]:array.char()'

·ControlNet 模型第二个输入为图片,根据输出图片所需的分辨率指定,n*c*h*w。

·第三个 shape 参数和第四个 shape 参数指定输出图片的高和宽,与第二个参数的图片宽高一致。

·当输出图片的高和宽动态变化,需要将第二个、第三个和第四个 shape 参数配置 min 和 max,样例: 'input_1:float(1*3*256*384,1*3*512*512)', 'input_2:scalar.int32(256, 512)', 'input_3:scalar.int32(384, 512)',代表输出图片高为256~512,宽为384~512。

当前 demo 填写的内容为:

·input_0:array.char()

·input_1:float(1*3*512*512)

·input_2:scalar.int32(512)

·input_3:scalar.int32(512)

·优化级别:选择 FP16

·部署机型:当前支持 A10、A100,选择 A10。

·SD 模型专业参数设置 pipeline_kwargs,为 stable diffusion 初始化参数,json 格式:本 demo 填写。

{"safety_checker" : null}

完成配置启动任务后,优化任务会展示在列表,可查看优化进度。

加速完成后,可在列表页看到加速报告,单击优化任务名称后,可查看优化任务详情以及优化报告。

十一、第四步:将加速后的模型保存到模型仓库

若你对加速比满意,可单击优化任务名称,在优化进度模块单击 保存到模型仓库,将优化后的模型保存到模型仓库,单击后,可在模型仓库的优化模型列表看到保存后的优化模型。

十二、第五步:部署模型

单击 操作 > 发布在线服务,可以进入服务发布流程。

·服务名称:填写服务名称

·计费模式:选择你需要的计费模式

·模型推理文件:模型服务发布需要上传模型推理文件定义前后处理逻辑,模型推理文件样例请单击下载地址下载,下载后上传,如下所示;若你需要自定义推理逻辑,可参考 模型推理文件简介和示例 进行自定义。

·算力规格:选择12C44GB A10*1

·环境变量:为了能够方便的查看模型推理返回结果,我们的推理文件中撰写了相关图片保存的逻辑,需要在启动服务的时候添加以下环境变量进行映射,具体信息如下:

COS_UPLOAD_ENABLE=1

COS_SECRET_ID=COS secret id,在https://console.cloud.tencent.com/cam/capi获取。

COS_SECRET_KEY=COS secret key,在https://console.cloud.tencent.com/cam/capi获取。

COS_BUCKET=COS 桶名称

COS_REGION=桶所在地域

COS_FILE_PREFIX=推理生成的图片文件所在的目录

配置完服务后,单击 启动服务 ,开始发布服务。服务启动成功后,可在服务列表查看服务信息。

请先在 COS 中上传一张 .jpg 样本图片,给定其 URL 为<url>。单击服务名称 > 服务调用,在接口信息页进行服务测试,输入如下请求体:

{"draw_parameters": {"prompt": "cartoon style, simple background", "image": "<url>"}}

请将上述代码中的<url>替换为图片实际的 URL。

注意:输入的图片尺寸需要满足模型优化时输入 tensor 设定的宽和高的范围,本案例设置的为:input_1:float(1*3*512*512),因此输入图片尺寸需要为512*512。例如输入图片下载地址为 单击下载。

单击下方发送请求,即可返回结果。

将结果中的图片地址输入浏览器,可查看图片内容。

十三、案例三:Stable Diffusion + 固定 Lora 模型

SD + 固定 Lora 模型的推理加速使用路径和案例一以及案例二一致,这里需要特别说明的是在进行模型优化时,lora 模型和基础 sd 模型的路径规范如下,即 lora 模型需要置于 sd 模型子目录中:

├── stable-diffusion-1.5│ ├── lora│ ├── feature_extractor│ ├── ….(其他sd模型子目录)

进行模型优化时,若包含 lora 模型,则需要配置 lora_scale 参数。

其他所有的操作和案例一或者案例二一致。

十四、案例四:Stable Diffusion + Lora 模型动态加载

若你需要 SD 模型推理加速的过程中动态加载不同的 Lora 模型,则需要按照如下使用指引进行模型加速和部署:

十五、第一步:将模型上传到 COS

1. 在任何一个终端运行如下下载命令:

curl 'https://tione-prod-open-1256580188.cos.ap-guangzhou.myqcloud.com/ti-cloud/ti-ems/tiacc-demo-models/hg-stable_diffusion/sd21-with-lora.zip' -o sd21-with-lora.zip

下载后解压文件,然后将模型包文件夹上传到 COS,推荐使用 COS Browser 客户端工具上传,详细使用方式详见 桌面端使用说明。

2. 在客户端工具,进入个人存储桶,将 sd-dynamic-lora-demo 模型文件夹完整上传。

十六、第二步:注册模型

进入 TI-ONE 控制台,进入 模型管理 > 模型仓库,单击 导入模型。

选择 导入新模型 > 从 COS 导入,模型格式选择 Hugging Face-stable diffusion(动态加速),运行环境来源选择 内置-stable-diffusion(gpu),你需要选择同时包含 SD 基础模型 + Lora 模型的 COS 路径,由于 Lora 模型支持在服务部署动态加载,你可以配置多个 Lora 模型,在服务部署时通过推理脚本编写服务推理逻辑(后续会有推理脚本示例)

十七、第三步:部署模型

在模型仓库中,选择第二步注册的模型,单击发布在线服务,进入服务新建页面:

1. 在服务新建页面,输入服务名称,默认为开启加速的状态(若需要关闭加速,可以关闭该按钮),同时,你需要上传模型推理文件定义前后处理逻辑,模型推理文件样例请单击下载地址下载,下载后上传,如下所示;若你需要自定义推理逻辑,可参考 模型推理文件简介和示例 进行自定义。

2. 当前 sd 动态加速仅支持 A10 和 A100 机型进行推理加速,因此你需要在算力规格中选择符合要求的 GPU 机型。配置完成后单击启动服务。

3. 你可以打开模型热更新,打开后模型路径下的数据将会自动同步到服务本地盘,你可以在模型推理文件中按照业务需求指定模型的调用方式(该功能可以使你在服务不停止的前提下动态更新 lora 模型)

4. 配置完服务后,单击 启动服务 ,开始发布服务。服务启动成功后,可在服务列表查看服务信息。

5. 单击 服务名称 > 服务调用,在接口信息页进行服务测试,输入如下请求体:

{ "lora_model": "lora-library/lora-dreambooth-sample-dog", "draw_parameters": { "prompt": "a photo of a sksdog in a bucket", "num_inference_steps": 50, "cross_attention_kwargs": { "scale": 1 } }}

获得推理结果:

更换 lora 模型,输入:

{ "lora_model": "lora-library/dragon-ball-wufan", "draw_parameters": { "prompt": "a photo of a sksdog in a bucket", "num_inference_steps": 50, "cross_attention_kwargs": { "scale": 1 } }}

获得推理结果:

资源要求

推荐使用以下机型部署推理服务:

·8C32GB T4*1

·28C116GB A10*1

注意事项

十八、SD 推理加速服务支持的参数有哪些

SD 推理服务 HTTP 请求默认可支持传入的参数如下:

·非动态 Lora 优化:支持 prompt, height, width, num inference steps, negative_prompt, num_images_per_prompt。

·动态更新 Lora 加速:支持 prompt, height, width, num inference steps, guidance_scale, negative_prompt, num_images_per_prompt, callback_steps, cross_attention_kwargs。

除了上述服务可直接传入的参数外,部分参数需要修改模型推理文件来支持,例如 generator, latents, prompt_embeds, negative_prompt_embeds, output_type (需改脚本支持, 不改脚本传入此参数会导致服务异常), return_dict(需改脚本支持, 不改脚本传入此参数会导致服务异常), callback。

不在上述清单中的参数暂未验证,正常情况下均可使用,如在使用中遇到问题,可提交工单联系平台工程师。

十九、SD 推理的时候服务超时怎么办

在部分场景下,例如图片尺寸较大,steps 参数值较大,会出现推理超时的情况,如下所示,此时你可以调小图片尺寸或者修改 steps 参数,或者你也可通过工单联系我们,工程同学会针对你的具体业务场景打通内网私有连接解决超时问题。

20、当前 SD 推理加速支持的 SD 模型和 Lora 模型类型有哪些

当前支持 Hugging Face Diffusers 生态中的模型。

21、SD 推理加速支持的机型有哪些

推理加速当前推荐部署机型 A10、A100。

赞 (0)
上一篇 4天前
下一篇 4天前