AI开发平台MODELARTS-SDXL基于DevServer适配MindSpore-Lite NPU推理指导(6.3.T041):Step3 下载原始模型

时间:2024-07-06 17:52:04

Step3 下载原始模型

SDXL主要涉及5个模型,分别是text_encoder,text_encoder2,unet,unet2和vae_decoder。这里unet2表示refiner line下的unet模型。除了unet2,其他模型都可以从HuggingFace网站直接下载到onnx模型文件。

  1. 下载text_encoder,text_encoder2,unet和vae_decoder模型。下载地址:stable-diffusion-xl-base-1.0,下载如图2所示4个文件。
    图2 下载SDXL模型

  2. 将下载的模型放到/home/ma-user/sdxl_ms/onnx的对应文件夹中,容器内外文件拷贝的命令参考如下。
    docker cp model.onnx container_name:/home/ma-user/sdxl_ms/onnx/text_encoder/

    拷贝完模型文件后目录结构如下所示

    /home/ma-user/sdxl_ms/onnx / 
    |-  || text_encoder
         |-- config.ini 
         |-- config.json 
         |-- model.onnx 
    |-  || text_encoder2 
         |-- config.ini
         |-- config.json 
         |-- model.onnx 
         |-- model.onnx_data 
    |-  || unet 
         |-- config.ini 
         |-- config.json 
         |-- model.onnx 
         |-- model.onnx_data 
    |-  || unet_2 
         |-- config.ini 
         |-- config.json 
    |-  || vae_decoder 
         |-- config.ini 
         |-- config.json 
         |-- model.onnx
  3. 下载unet2模型。这里unet2表示refiner line下的unet模型。下载地址:stable-diffusion-xl-refiner-1.0。这里需要把整个stable-diffusion-xl-refiner-1.0模型文件下载下来,可以在sdxl_ms下创建一个temp文件夹,将下载好的stable-diffusion-xl-refiner-1.0模型文件拷贝到temp文件夹中。
    由于启动容器时默认用户为ma-user用户。如果需要切换到root用户可以执行以下命令:
    sudo su
    source /home/ma-user/.bashrc

    如果继续使用ma-user,在使用其他属组如root用户上传的数据和文件时,可能会存在权限不足的问题,因此需要执行如下命令统一文件属主。

    sudo chown -R ma-user:ma-group  ${container_work_dir}   
    # ${container_work_dir}:/home/ma-user/ws 容器内挂载的目录

    例如:

    sudo chown -R ma-user:ma-group  /home/ma-user/ws
  4. unet_2转换。unet2模型使用前需要先转换为onnx文件。
    1. 进入temp文件夹,将/home/ma-user/sdxl_ms/convert_xl_unet.py复制到文件夹中。
      cd temp/ 
      cp ../convert_xl_unet.py ./
    2. 修改转换脚本convert_xl_unet.py第63行为如下内容并保存。
      unet_path = "./unet.onnx"
    3. 安装依赖。
      pip install transformers torch diffusers
    4. 执行转换脚本。
      python convert_xl_unet.py

      转换完成后在temp文件夹下有如下文件。

      图3 转换后的unet2模型文件
    5. 将上图中的两个文件unet.onnx和weights.pb都复制到/home/ma-user/sdxl_ms/onnx/unet_2文件夹中,并修改unet.onnx为model.onnx,最终onnx文件夹的目录结构如下:
      /home/ma-user/sdxl_ms/onnx / 
      |-  || text_encoder
           |-- config.ini 
           |-- config.json 
           |-- model.onnx 
      |-  || text_encoder2 
           |-- config.ini
           |-- config.json 
           |-- model.onnx 
           |-- model.onnx_data 
      |-  || unet 
           |-- config.ini 
           |-- config.json 
           |-- model.onnx 
           |-- model.onnx_data 
      |-  || unet_2 
           |-- config.ini 
           |-- config.json 
           |-- model.onnx 
           |-- weights.pb 
      |-  || vae_decoder 
           |-- config.ini 
           |-- config.json 
           |-- model.onnx
support.huaweicloud.com/bestpractice-modelarts/modelarts_10_1501.html