NPU 模型转换
本节介绍如何将你自己的 Stable Diffusion 模型转换为 Local Dream 可以在骁龙设备上加载的 NPU 兼容资源。
何时需要
- ✅ 你想在 NPU 路径上运行自定义的 SD1.5 或 SDXL 模型。
- ❌ 你想在 CPU/GPU 路径上运行自定义 SD1.5 模型 — 这在应用内直接支持,无需主机端转换。
可用工作流
| 工作流 | 状态 | 指南 |
|---|---|---|
| SD1.5 → NPU | 稳定 | SD1.5 转换指南 |
| SDXL → NPU | 实验性 | SDXL 转换指南 |
概要
- 转换在 主机端 完成,不是在设备上。你需要一台 Linux 或 WSL 机器。
- 流水线生成 W8A16 量化的 QNN 二进制文件,打包成应用可导入的 zip。
- SD1.5 需要为每个芯片级别(
_min/_8gen1/_8gen2)分别转换一份 zip。SDXL 只有一个芯片级别(_8gen3)。 - 单次 SD1.5 转换需要 数小时 的 CPU 时间。SDXL 需要更长时间。
为什么有两个 QNN SDK 版本?
转换脚本固定使用 QNN SDK 2.28,而 Android 应用自身搭载 QNN SDK 2.39 作为运行时。这是有意为之:2.28 是已知能为本文档中的转换流水线产出正确量化二进制的版本,而运行时保持较新。转换模型时不需要 2.39,且不要在一次转换中混用两个版本。
硬件要求
| 工作流 | 内存 + swap | 磁盘 | GPU |
|---|---|---|---|
| SD1.5 @ 512×512 | ~20 GB | ~30 GB | 可选 |
| SD1.5 @ 更高分辨率 | 64 GB+ | 60 GB+ | 可选 |
| SDXL @ 1024×1024 | 64 GB+ | 60 GB+ | 可选 |
CUDA GPU 是 可选的 — 它只加速数据准备阶段。实际量化在 CPU 上运行。
跳过转换?
如果你只想要一个开箱即用的模型,可以先查看社区预转换模型集合。许多热门的 SD1.5 和 SDXL 模型已经可用。