Deng_RH/dreamshaper-7
模型介绍
文件和版本
Pull Requests
讨论
分析

dreamshaper-7 昇腾NPU部署文档

1. 模型简介

模型名称: Lykon/dreamshaper-7

模型链接: HuggingFace | HF 镜像

模型描述: Dreamshaper-7 是基于 Stable Diffusion 1.5 微调的高质量文生图模型,擅长生成艺术风格的图像。由 Lykon 团队维护,广泛用于创意图像生成、概念艺术和设计辅助场景。

模型架构: Stable Diffusion 1.5 (CLIP Text Encoder + UNet2DConditionModel + AutoencoderKL),基于 Diffusers 框架

参数规模: 约 860M(fp32)/ 约 430M(fp16)


2. 环境依赖

依赖项版本要求说明
Python>= 3.10推荐 3.11
torch / torch_npu2.10.0昇腾 NPU 运行时
diffusers>= 0.30.0HuggingFace Diffusers 库
transformers>= 4.30.0HuggingFace 库
numpy>= 1.26.0数值计算
fastapi>= 0.100.0HTTP 服务框架
uvicorn>= 0.20.0ASGI 服务器
Pillow>= 9.0.0图像处理库
昇腾驱动CANN 8.5.1推荐最新版

安装命令:

# 华为镜像源
export PIP_INDEX_URL=https://repo.huaweicloud.com/repository/pypi/simple/

pip install -r requirements.txt

3. 推理步骤

3.1 环境准备

# 加载 CANN 环境
source /usr/local/Ascend/ascend-toolkit/set_env.sh

# 检查 NPU 设备
npu-smi info

3.2 下载模型权重

# 通过 hf-mirror 国内镜像下载(fp16 版本)
mkdir -p /data2/drh/models/Lykon/dreamshaper-7
cd /data2/drh/models/Lykon/dreamshaper-7

# 下载配置文件
wget -nc "https://hf-mirror.com/Lykon/dreamshaper-7/resolve/main/model_index.json"
wget -nc "https://hf-mirror.com/Lykon/dreamshaper-7/resolve/main/text_encoder/config.json" -P text_encoder/
wget -nc "https://hf-mirror.com/Lykon/dreamshaper-7/resolve/main/unet/config.json" -P unet/
wget -nc "https://hf-mirror.com/Lykon/dreamshaper-7/resolve/main/vae/config.json" -P vae/
wget -nc "https://hf-mirror.com/Lykon/dreamshaper-7/resolve/main/scheduler/scheduler_config.json" -P scheduler/
wget -nc "https://hf-mirror.com/Lykon/dreamshaper-7/resolve/main/tokenizer/*" -P tokenizer/
wget -nc "https://hf-mirror.com/Lykon/dreamshaper-7/resolve/main/feature_extractor/preprocessor_config.json" -P feature_extractor/

# 下载 fp16 权重文件
wget -nc "https://hf-mirror.com/Lykon/dreamshaper-7/resolve/main/text_encoder/model.fp16.safetensors" -P text_encoder/
wget -nc "https://hf-mirror.com/Lykon/dreamshaper-7/resolve/main/unet/diffusion_pytorch_model.fp16.safetensors" -P unet/
wget -nc "https://hf-mirror.com/Lykon/dreamshaper-7/resolve/main/vae/diffusion_pytorch_model.fp16.safetensors" -P vae/

# 创建符号链接(Diffusers 需要标准文件名)
cd /data2/drh/models/Lykon/dreamshaper-7
ln -sf model.fp16.safetensors text_encoder/model.safetensors
ln -sf diffusion_pytorch_model.fp16.safetensors unet/diffusion_pytorch_model.safetensors
ln -sf diffusion_pytorch_model.fp16.safetensors vae/diffusion_pytorch_model.safetensors

3.3 运行推理

# 单次推理
python3 inference.py --prompt "a cat sitting on a wooden table, highly detailed" --steps 15 --seed 42

# 自定义推理参数
python3 inference.py --prompt "一只猫坐在桌子上" --steps 20 --guidance-scale 7.5 --width 512 --height 512

# 启动 FastAPI 服务化推理
python3 service.py --host 0.0.0.0 --port 8080

# 端到端测试
python3 test_case.py --port 8081

3.4 推理参数说明

参数类型默认值说明
--promptstr"a beautiful landscape..."正向提示词(inference.py)
--negative-promptstr"blurry, low quality..."负向提示词
--model-pathstr自动检测模型权重目录
--devicestrnpu:0推理设备
--stepsint25推理步数
--guidance-scalefloat7.5CFG 引导系数
--seedint随机随机种子
--widthint512图像宽度
--heightint512图像高度

4. 测试样例及输出结果

样例 1:文生图推理

提示词:

"a cat sitting on a wooden table, highly detailed, 8k"

参数: 15步, 512×512, seed=42

输出:

【推理设备】: npu:0
【图像尺寸】: (512, 512)
【推理步数】: 15
【单次推理耗时】: 2.50 秒 (2498 ms)

样例 2:服务化推理

请求:

POST /generate
{
    "prompt": "a beautiful landscape with mountains and a lake, highly detailed, 8k",
    "steps": 15,
    "seed": 42,
    "width": 512,
    "height": 512
}

输出:

推理耗时: 2.44 秒 (2437 ms)
设备: npu:0
生成图像尺寸: 512x512

样例 3:简单提示词推理

输入:

prompt: "a cat sitting on a wooden table, highly detailed"
steps: 10

输出:

推理耗时: 1.56 秒 (1564 ms)

5. Agent适配截图

5.1 Agent适配全过程截图

Agent 适配流程

5.2 NPU设备调用截图

NPU 设备调用

5.3 模型适配结果截图

模型适配结果


6. 性能数据

指标耗时
Pipeline 加载1536 ms
单次推理(15步,512×512,含warmup)2.50 秒 (2498 ms)
服务化推理(15步,512×512)2.44 秒 (2437 ms)
简单推理(10步,512×512)1.56 秒 (1564 ms)

7. API 接口说明

接口方法说明
/healthGET健康检查,返回 NPU 状态信息
/generatePOST文生图接口,请求体 {"prompt": "...", "steps": 25, "seed": 42}

/generate 请求参数:

参数类型默认值说明
promptstring(必填)正向提示词
negative_promptstring""负向提示词
stepsint25推理步数
guidance_scalefloat7.5CFG 引导系数
seedint-1随机种子(-1 为自动)
widthint512图像宽度
heightint512图像高度

/generate 返回字段:

字段类型说明
image_base64stringBase64 编码的 PNG 图像
latency_sfloat推理耗时(秒)
latency_msfloat推理耗时(毫秒)
devicestring推理设备
modelstring模型名称
promptstring使用的提示词
seedint实际使用的随机种子

8. 目录结构

dreamshaper-7-npu/
├── inference.py                     # NPU 推理脚本
├── service.py                       # FastAPI 服务
├── test_case.py                     # 端到端测试
├── requirements.txt                 # 依赖包列表
├── README.md                        # 本文档
├── adaptation_report.md             # 适配报告
├── assets/
│   ├── agent_workflow.png           # Agent适配全过程截图
│   ├── npu_device_call.png          # NPU设备调用截图
│   ├── model_result.png             # 模型适配结果截图
│   ├── npu_screenshot.txt           # NPU 设备文本截图(原始)
│   ├── test_result.txt              # 测试结果文本截图(原始)
│   └── adaptation_process.txt       # 适配过程文本截图(原始)
└── results/                         # 推理结果
    ├── dreamshaper_npu_output.png
    ├── dreamshaper_npu_result.json
    ├── test_generated.png
    ├── test_simple_generated.png
    └── test_case_result.json

9. 注意事项

  • 推理脚本通过 torch_npu + transfer_to_npu 自动迁移调用 NPU,无需修改上游 Diffusers 代码
  • 首次推理耗时较高,原因是 NPU 算子编译;warmup 后性能稳定
  • 模型使用 fp16 精度,Ascend 910B1 对 fp16 有良好支持
  • 服务化推理基于 FastAPI,支持单卡部署
  • 模型目录中的权重文件使用符号链接指向 fp16 版本