AI开发平台MODELARTS-SDXL基于DevServer适配MindSpore-Lite NPU推理指导(6.3.T041):Step3 下载原始模型
Step3 下载原始模型
SDXL主要涉及5个模型,分别是text_encoder,text_encoder2,unet,unet2和vae_decoder。这里unet2表示refiner line下的unet模型。除了unet2,其他模型都可以从HuggingFace网站直接下载到onnx模型文件。
- 下载text_encoder,text_encoder2,unet和vae_decoder模型。下载地址:stable-diffusion-xl-base-1.0,下载如图2所示4个文件。
- 将下载的模型放到/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
- 下载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
- unet_2转换。unet2模型使用前需要先转换为onnx文件。
- 进入temp文件夹,将/home/ma-user/sdxl_ms/convert_xl_unet.py复制到文件夹中。
cd temp/ cp ../convert_xl_unet.py ./
- 修改转换脚本convert_xl_unet.py第63行为如下内容并保存。
unet_path = "./unet.onnx"
- 安装依赖。
pip install transformers torch diffusers
- 执行转换脚本。
python convert_xl_unet.py
转换完成后在temp文件夹下有如下文件。
图3 转换后的unet2模型文件
- 将上图中的两个文件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
- 进入temp文件夹,将/home/ma-user/sdxl_ms/convert_xl_unet.py复制到文件夹中。