表 1 版本配套表
| 配套 | 版本 | 环境准备指导 |
|---|---|---|
| Python | 3.10 / 3.11 | - |
| torch | 2.9.0 | - |
注意:
# 增加软件包可执行权限,{version}表示软件版本号,{arch}表示CPU架构,{soc}表示昇腾AI处理器的版本。
chmod +x ./Ascend-cann-toolkit_{version}_linux-{arch}.run
chmod +x ./Ascend-cann-kernels-{soc}_{version}_linux.run
# 校验软件包安装文件的一致性和完整性
./Ascend-cann-toolkit_{version}_linux-{arch}.run --check
./Ascend-cann-kernels-{soc}_{version}_linux.run --check
# 安装
./Ascend-cann-toolkit_{version}_linux-{arch}.run --install
./Ascend-cann-kernels-{soc}_{version}_linux.run --install
# 设置环境变量
source /usr/local/Ascend/ascend-toolkit/set_env.sh# 增加软件包可执行权限,{version}表示软件版本号,{arch}表示CPU架构。
chmod +x ./Ascend-mindie_${version}_linux-${arch}.run
./Ascend-mindie_${version}_linux-${arch}.run --check
# 方式一:默认路径安装
./Ascend-mindie_${version}_linux-${arch}.run --install
# 设置环境变量
cd /usr/local/Ascend/mindie && source set_env.sh
# 方式二:指定路径安装
./Ascend-mindie_${version}_linux-${arch}.run --install-path=${AieInstallPath}
# 设置环境变量
cd ${AieInstallPath}/mindie && source set_env.sh安装pytorch框架 版本2.9.0 安装包下载
使用pip安装
# {version}表示软件版本号,{arch}表示CPU架构。
pip install torch-${version}-cp310-cp310-linux_${arch}.whl下载 pytorch_v{pytorchversion}_py{pythonversion}.tar.gz
tar -xzvf pytorch_v{pytorchversion}_py{pythonversion}.tar.gz
# 解压后,会有whl包
pip install torch_npu-{pytorchversion}.xxxx.{arch}.whlgit clone https://modelers.cn/MindIE/stable_diffusion_2.1.gitpip3 install -r requirements.txt --no-deps下载权重和配置文件
# stable-diffusion-v2.1:
git clone https://huggingface.co/stabilityai/stable-diffusion-2-1-base将model_index.json中所有的diffusers字段修改为stablediffusion
设置权重路径
model_base='./stable-diffusion-2-1-base'执行命令:
export ENABLE_CACHE=1
export CACHE_LEVEL=1
export TOKEN_DOWNSAMPLE=1
python3 inference_stablediffusion.py \
--model ${model_base} \
--prompt_file ./prompts/prompts.txt \
--steps 50 \
--batch_size 1 \
--save_dir ./results \
--device 0 \
--use_compile参数说明:
设置权重路径
model_base='./stable-diffusion-2-1-base'执行命令:
export ENABLE_CACHE=1
export CACHE_LEVEL=1
export TOKEN_DOWNSAMPLE=1
ASCEND_RT_VISIBLE_DEVICES=0,1 torchrun \
--nproc_per_node 2 \
--master_addr localhost \
--master_port 29500 \
inference_stablediffusion.py \
--model ${model_base} \
--prompt_file ./prompts/prompts.txt \
--steps 50 \
--batch_size 1 \
--save_dir ./results \
--enable_dp \
--use_compile增加的参数说明:
下载lora模型的权重,设置权重路径
model_base='./stable-diffusion-2-1-base'
lora_base='./pytorch_lora_weights.safetensors'执行命令
export ENABLE_CACHE=1
export CACHE_LEVEL=1
export TOKEN_DOWNSAMPLE=1
python3 inference_stablediffusion.py \
--model ${model_base} \
--prompt_file ./prompts/prompts.txt \
--steps 50 \
--batch_size 1 \
--save_dir ./results \
--device 0 \
--use_lora \
--lora_path ${lora_base}参数说明:
性能参考下列数据。
| 硬件形态 | 迭代次数 | 平均耗时(w/o cache) | 平均耗时(with cache) |
|---|---|---|---|
| Atlas 800I A2(8*32G) | 50 | 2.345s | 0.997s |
本章节将使用Parti数据集对Stable-Diffusion-2.1进行精度验证。 由于生成的图片存在随机性,所以精度验证将使用CLIP-score来评估图片和输入文本的相关性,分数的取值范围为[-1, 1],越高越好。
注意,由于要生成的图片数量较多,进行完整的精度验证需要耗费很长的时间。
下载Parti数据集
wget https://raw.githubusercontent.com/google-research/parti/main/PartiPrompts.tsv --no-check-certificate下载Clip模型权重
# 安装git-lfs
apt install git-lfs
git lfs install
git clone https://huggingface.co/laion/CLIP-ViT-H-14-laion2B-s32B-b79K
# 或者访问https://huggingface.co/laion/CLIP-ViT-H-14-laion2B-s32B-b79K/blob/main/open_clip_pytorch_model.bin,将权重下载并放到这个目录下使用推理脚本读取Parti数据集,生成图片
export ENABLE_CACHE=1
export CACHE_LEVEL=1
export TOKEN_DOWNSAMPLE=1
# 单卡
python inference_stablediffusion_parti.py \
--model ${model_base} \
--prompt_file ./PartiPrompts.tsv \
--num_images_per_prompt 4 \
--steps 50 \
--save_dir ./results \
--device 0 \
--use_compile
# 双卡
ASCEND_RT_VISIBLE_DEVICES=0,1 torchrun --nproc_per_node 2 \
--master_port 6001 \
inference_stablediffusion_parti.py \
--model ${model_base} \
--prompt_file ./PartiPrompts.tsv \
--num_images_per_prompt 4 \
--steps 50 \
--save_dir ./results \
--use_compile \
--enable_dp增加的参数说明:
执行完成后会在./results目录下生成推理图片。
计算CLIP-score 设置CLIP权重路径
clip_model_base='./open_clip_pytorch_model.bin'ASCEND_RT_VISIBLE_DEVICES=0 python clip_score_parti.py \
--device="npu" \
--model_name="ViT-H-14" \
--model_weights_path=${clip_model_base} \
--prompt_file="./PartiPrompts.tsv" \
--image_prefix="./results"参数说明:
执行完成后会在屏幕打印出精度计算结果。
本模型使用的优化手段如下: