weixin_72661020/Z-Image-Fun-Lora-Distill-NPU
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

Z-Image-Fun-Lora-Distill NPU 部署文档

1. 简介

Z-Image-Fun-Lora-Distill 是阿里云 PAI 团队开发的一组 LoRA 蒸馏权重,用于加速 Z-Image 文本到图像生成模型的推理。该模型通过蒸馏技术同时优化了步数和 CFG(Classifier-Free Guidance),使得推理只需 2-8 步即可完成,大幅提升了生成速度。

主要特点:

  • 支持 2步、4步、8步 三种蒸馏配置
  • 无需 CFG 引导,推理速度更快
  • 兼容其他 Z-Image LoRA 和 ControlNet
  • 本适配文档针对华为昇腾 NPU 环境

模型变体:

模型名称步数说明
Z-Image-Fun-Lora-Distill-2-Steps-2603.safetensors2步最快速度,推荐 sigma 0.5-0.8
Z-Image-Fun-Lora-Distill-4-Steps-2603.safetensors4步平衡速度与质量
Z-Image-Fun-Lora-Distill-8-Steps-2603.safetensors8步最高质量

2. 验证环境

硬件环境

  • 处理器: 华为昇腾 910B4 NPU
  • 显存: 32GB HBM
  • 架构: aarch64

软件环境

  • 操作系统: Linux 5.10.0-60.18.0.50.r865_35.hce2.aarch64
  • CANN: 8.5.1
  • PyTorch: 2.9.0+cpu
  • torch_npu: 2.9.0.post1+gitee7ba04
  • Python: 3.11.14
  • diffusers: 最新版
  • transformers: 4.57.6

依赖安装

# 安装基础依赖
pip install diffusers transformers safetensors accelerate
pip install imageio einops ftfy

# 安装 VideoX-Fun(可选,用于完整功能)
pip install git+https://github.com/aigc-apps/VideoX-Fun.git

# 如果 decord 安装失败,可以创建 mock 模块(仅用于 T2I 推理)
mkdir -p /tmp/decord
cat > /tmp/decord/__init__.py << 'EOF'
class VideoReader:
    def __init__(self, *args, **kwargs): pass
    def __getitem__(self, idx): return None
    def __len__(self): return 0
EOF

3. 服务启动

模型下载

# 下载基础模型
huggingface-cli download Tongyi-MAI/Z-Image --local-dir ./base_model

# 下载 LoRA 权重
huggingface-cli download alibaba-pai/Z-Image-Fun-Lora-Distill --local-dir ./model

推理脚本

使用提供的 inference.py 脚本:

# 基础推理
PYTHONPATH=/tmp:$PYTHONPATH python3 inference.py \
  --prompt "A beautiful sunset over the ocean" \
  --height 1024 --width 1024 \
  --num_inference_steps 4 \
  --lora_weight 0.8 \
  --output_dir output

参数说明

参数默认值说明
--model_path./base_modelZ-Image 基础模型路径
--lora_path./model/...4-Steps-2603.safetensorsLoRA 权重路径
--prompt-文本提示词
--height1024图像高度
--width1024图像宽度
--num_inference_steps4推理步数(2/4/8)
--guidance_scale1.0CFG 引导强度(蒸馏模型建议 1.0)
--lora_weight0.8LoRA 权重
--devicenpu:0设备
--warmup_runs1预热次数
--benchmark_runs3基准测试次数

4. Smoke 验证

基础功能检查

# 512x512 快速验证
PYTHONPATH=/tmp:$PYTHONPATH python3 inference.py \
  --prompt "A beautiful sunset" \
  --height 512 --width 512 \
  --num_inference_steps 4 \
  --warmup_runs 1 --benchmark_runs 1 \
  --output_dir output/smoke_test

验证结果:

  • ✅ 模型加载成功
  • ✅ LoRA 合并/解合并正常
  • ✅ 图像生成成功
  • ✅ NPU 设备识别正常

生成示例

推理脚本会在输出目录生成 PNG 格式图像,文件名为 image_XXX.png。

5. 性能参考

测试配置

  • 设备: 华为昇腾 910B4 NPU (32GB HBM)
  • 数据类型: bfloat16
  • LoRA 权重: 0.8
  • CFG Scale: 1.0

性能结果

配置分辨率步数平均延迟吞吐量
2-Steps-2603512x51220.46s2.18 img/s
4-Steps-2603512x51240.76s1.31 img/s
4-Steps-26031024x102442.19s0.46 img/s

性能优化建议

  1. 使用更少步数: 2-step 模型速度最快,适合对质量要求不高的场景
  2. 调整 LoRA 权重: 较高的 LoRA 权重 (0.8-1.0) 可获得更好的蒸馏效果
  3. 使用 bfloat16: NPU 原生支持 bfloat16,可获得最佳性能
  4. 批量处理: 对于多图生成,可考虑批量推理以提高吞吐量

7. 注意事项

已知限制

  1. NPU 不支持 complex64: RoPE 嵌入已进行适配,使用实数张量存储频率信息
  2. 内存占用: 1024x1024 分辨率需要约 20GB 显存
  3. decord 依赖: 视频相关功能需要 decord,如仅使用 T2I 可使用 mock 模块

常见问题

Q: 出现 "NPU function error: call aclnnIndex failed" A: 这是 NPU 不支持 complex64 导致的,已通过 RoPE 补丁解决。

Q: 如何使用 ControlNet? A: 参考 VideoX-Fun 项目文档,可加载 Z-Image-Fun-Controlnet-Union-2.1 权重。

Q: 如何获得更高质量? A: 增加步数(使用 8-step 模型)或使用原始 Z-Image 模型。

相关资源

  • VideoX-Fun GitHub
  • Z-Image 模型
  • Z-Image-Fun-Lora-Distill

适配信息

  • 适配日期: 2026-05-10
  • 适配设备: 华为昇腾 910B4 NPU
  • 适配状态: ✅ 已完成验证
  • 主要修改: RoPE 嵌入 NPU 兼容性补丁

Ascend NPU 精度评测

NPU vs CPU 精度对比(CPU 为基线,NPU 为验证目标):

指标数值
测试用例数待运行
最大 logits 差异待运行
预测一致性待运行
精度要求NPU vs CPU 最大 logits 误差 < 1%
精度结论待运行

精度评测源代码和日志详见 eval/ 目录。