更新时间:2024-08-17 GMT+08:00
分享

pipeline应用准备

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

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

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

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

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

  3. 下载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

  4. 安装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

  5. 通过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目录下。

  6. 通过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目录下。

  7. 下载好模型后,需要编写推理脚本。为了便于讲解,本指导中所需的代码已发布在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 代码目录

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

    cd modelarts-ascend/examples/AIGC/stable_diffusion # 必须执行该命令,否则会报错找不到sketch-mountains-input.jpg
    python onnx_pipeline.py
    生成的图片fantasy_landscape.png会保存在当前路径下,该图片也可以作为后期精度校验的一个对比。
    图2 生成图片

相关文档