华为云AI开发平台ModelArtspipeline应用准备_云淘科技

当前迁移路径是从onnx模型转换到mindir模型,再用mindspore lite做推理, 所以迁移前需要用户先准备好自己的onnx pipeline。下文以官方开源的图生图的Stable Diffusion v1.5的onnx pipeline代码为例进行说明。

进入容器环境,创建自己的工作目录,由于在Snt9B裸金属服务器环境配置指南的配置环境步骤中,我们在启动容器时将物理机的home目录挂载到容器的“/home_host”目录下,该目录下可以直接使用上传到物理机“home”目录下的文件。本文中,我们将基于容器的“/home_host”目录创建工作目录:

mkdir -p /home_host/work
cd /home_host/work

在迁移onnx pipeline前,首先需要确保原始的onnx pipeline能在昇腾机器的ARM CPU上正常执行。进入容器环境后,安装依赖包。

pip install torch==1.11.0 onnx transformers==4.27.4 accelerate onnxruntime diffusers==0.11.1

下载git lfs,用于下载git仓中的大文件。由于欧拉源上没有git-lfs包,所以需要从压缩包中解压使用,在浏览器中输入如下地址下载git-lfs压缩包并上传到服务器的/home目录。

https://github.com/git-lfs/git-lfs/releases/download/v3.2.0/git-lfs-linux-arm64-v3.2.0.tar.gz

安装git lfs:

tar -zxvf git-lfs-linux-arm64-v3.2.0.tar.gz
cd git-lfs-3.2.0
sh install.sh
rm -rf git-lfs-linux-arm64-v3.2.0.tar.gz git-lfs-3.2.0

通过git下载sd pytorch模型。

该模型用于获取模型shape,也可以转换生成onnx模型。后文中的modelarts-ascend仓库已经给出了模型shape,可以直接使用,onnx模型也可以单独下载。

# git clone sd模型
git lfs install
mkdir -p /home_host/work/runwayml
cd /home_host/work/runwayml
git clone https://huggingface.co/runwayml/stable-diffusion-v1-5/ -b main
# 将下载的文件夹重命名,以便后续脚本中引用
mv stable-diffusion-v1-5 pytorch_models

这里由于Huggingface网站的限制以及模型文件的大小原因,很可能会下载失败。可以进到Huggingface网站,从浏览器下载模型后,再手工上传到物理机/home/pytorch_models目录下。

通过git下载sd onnx模型。

# git clone sd模型
git lfs install
cd /home_host/work/runwayml
git clone https://huggingface.co/runwayml/stable-diffusion-v1-5 -b onnx
# 将下载的文件夹重命名,以便后续脚本中引用
mv stable-diffusion-v1-5 onnx_models

这里由于Huggingface网站的限制以及模型文件的大小原因,很可能会下载失败。可以进到Huggingface网站,从浏览器下载模型后,再手工上传到物理机/home/onnx_models目录下。

下载好模型后,需要编写推理脚本。为了便于讲解,本指导中所需的代码已发布在ModelArts代码仓,可以使用如下命令下载推理脚本样例代码:

cd /home_host/work
git clone https://gitee.com/ModelArts/modelarts-ascend.git
ll modelarts-ascend/examples/AIGC/stable_diffusion

代码目录如下图所示,onnx_pipeline.py是图生图推理脚本。mslite_pipeline.py、mslite_model_proxy.py、pipeline_onnx_stable_diffusion_img2img_mslite.py是迁移后的文件,其中mslite_model_proxy.py是代理模型类,pipeline_onnx_stable_diffusion_img2img_mslite.py是从Stable Diffusion源码中的pipeline拷贝并修改的,这些文件在后续的章节中会使用并做进一步讲解。

图1 代码目录

将“modelarts-ascend/examples/AIGC/stable_diffusion/onnx_pipeline.py”文件中的“onnx_model_path”改为步骤6中下载的onnx_models地址“/home_host/work/runwayml/onnx_models”。执行推理脚本进行测试,这里使用的推理硬件是CPU,验证待迁移的代码能在CPU跑通,由于是CPU执行会比较慢,大约需要15分钟左右:

cd modelarts-ascend/examples/AIGC/stable_diffusion # 必须执行该命令,否则会报错找不到sketch-mountains-input.jpg
python onnx_pipeline.py

生成的图片fantasy_landscape.png会保存在当前路径下,该图片也可以作为后期精度校验的一个对比。

图2 生成图片

父主题: AIGC推理业务迁移指导

同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家