If you are familiar with English, you can read English Version
本项目是一个通过文字生成图片的项目,基于开源模型Stable Diffusion V1.5生成可以在手机的CPU和NPU上运行的模型,包括其配套的模型运行框架。
你可以尝试使用以下端侧部署框架运行Stable Diffusion模型。

这个project中包含了两个分支
NPU分支主要使用嵌入式神经网络处理器(NPU)进行计算,可以在小米13系列和小米14系列以及其他符合平台要求的机器上进行上使用。分支默认是在米13系列上使用,如果需要切换到小米14系列上使用本框架,需要在CMakeLists.txt中修改DL_MODE为2即可。
CPU分支采用中央处理器(CPU)进行计算,可以在符合系统要求的任意手机上工作。你可以自由选择模型推理步数,种子数,以及生成图像的尺寸,从而调整图片生成的效果。
在Huggingface上下载模型放入下述目录
QNN分支:
ONNX分支:
未量化模型地址:
| SDK | NDK | CMAKE | DEVICE PLATFORM |
|---|---|---|---|
| 33 | 26.0.10792818 | 3.18.1 | Qualcomm 8 Gen 2/8 Gen 3 |
| Device | Platform | Processing Unit | Units of Memory | Model Size(GB) | Memory Request(GB) | Image Resolution | Inference Time(s) |
|---|---|---|---|---|---|---|---|
| Xiaomi 13/Pro | 8Gen2 | NPU | INT8 | 1.10 | 1.5 | 512 | 9.4 |
| XiaoMi 14/Pro | 8Gen3 | NPU | INT8 | 1.10 | 1.5 | 512 | 4.6 |
| Xiaomi 13/Pro | 8Gen2 | CPU | FLOAT16 | 1.93 | 12 | 256 | 134 |
| XiaoMi 14/Pro | 8Gen3 | CPU | FLOAT16 | 1.93 | 12 | 256 | 103 |
注意事项:
小米SD采用训练后量化(PTQ)将Float32的模型转换为INT8数据类型的量化模型,将模型大小缩减到了约$\frac{1}{4}$的大小,模型大小约为1.1GB。
通过收集高精度校准数据和优化量化方法方法对模型进行量化:
PTQ能够在不牺牲SD大模型性能的前提下,大幅度降低模型的存储和计算需求,从而提高了模型在资源受限环境下的可用性。
相比于CPU方案,小米SD将量化后模型通过QNN框架部署在高通的NPU上,充分利用了NPU的并行计算能力,让深度学习中的矩阵运算和卷积运算等高密度的算子可以利用到芯片层的硬件加速,从而达到降低功耗,提升计算效率的目的。
C++
75.3%
C
24.1%
If you are familiar with English, you can read English Version
本项目是一个通过文字生成图片的项目,基于开源模型Stable Diffusion V1.5生成可以在手机的CPU和NPU上运行的模型,包括其配套的模型运行框架。
你可以尝试使用以下端侧部署框架运行Stable Diffusion模型。

这个project中包含了两个分支
NPU分支主要使用嵌入式神经网络处理器(NPU)进行计算,可以在小米13系列和小米14系列以及其他符合平台要求的机器上进行上使用。分支默认是在米13系列上使用,如果需要切换到小米14系列上使用本框架,需要在CMakeLists.txt中修改DL_MODE为2即可。
CPU分支采用中央处理器(CPU)进行计算,可以在符合系统要求的任意手机上工作。你可以自由选择模型推理步数,种子数,以及生成图像的尺寸,从而调整图片生成的效果。
在Huggingface上下载模型放入下述目录
QNN分支:
ONNX分支:
未量化模型地址:
| SDK | NDK | CMAKE | DEVICE PLATFORM |
|---|---|---|---|
| 33 | 26.0.10792818 | 3.18.1 | Qualcomm 8 Gen 2/8 Gen 3 |
| Device | Platform | Processing Unit | Units of Memory | Model Size(GB) | Memory Request(GB) | Image Resolution | Inference Time(s) |
|---|---|---|---|---|---|---|---|
| Xiaomi 13/Pro | 8Gen2 | NPU | INT8 | 1.10 | 1.5 | 512 | 9.4 |
| XiaoMi 14/Pro | 8Gen3 | NPU | INT8 | 1.10 | 1.5 | 512 | 4.6 |
| Xiaomi 13/Pro | 8Gen2 | CPU | FLOAT16 | 1.93 | 12 | 256 | 134 |
| XiaoMi 14/Pro | 8Gen3 | CPU | FLOAT16 | 1.93 | 12 | 256 | 103 |
注意事项:
小米SD采用训练后量化(PTQ)将Float32的模型转换为INT8数据类型的量化模型,将模型大小缩减到了约$\frac{1}{4}$的大小,模型大小约为1.1GB。
通过收集高精度校准数据和优化量化方法方法对模型进行量化:
PTQ能够在不牺牲SD大模型性能的前提下,大幅度降低模型的存储和计算需求,从而提高了模型在资源受限环境下的可用性。
相比于CPU方案,小米SD将量化后模型通过QNN框架部署在高通的NPU上,充分利用了NPU的并行计算能力,让深度学习中的矩阵运算和卷积运算等高密度的算子可以利用到芯片层的硬件加速,从而达到降低功耗,提升计算效率的目的。
C++
75.3%
C
24.1%