stable-diffusion.cpp:纯C/C++实现的高性能Stable Diffusion推理引擎
stable-diffusion.cpp是一个纯C/C++实现的Stable Diffusion推理引擎,旨在提供一个轻量级、高性能、跨平台的Stable Diffusion部署方案。该项目基于ggml库开发,采用与llama.cpp类似的工作方式,具有以下主要特性:
主要特性
- 纯C/C++实现,无外部依赖
- 超轻量级,内存占用低
- 支持SD1.x、SD2.x、SDXL和SD3等多种Stable Diffusion模型
- 支持Flux-dev/Flux-schnell模型
- 支持SD-Turbo和SDXL-Turbo等高速模型
- 支持PhotoMaker个性化图像生成
- 支持16位、32位浮点数和2-8位整数量化
- 加速的内存高效CPU推理
- 支持x86架构的AVX、AVX2和AVX512指令集
- 支持CUDA、Metal、Vulkan和SYCL等GPU加速后端
- 可直接加载ckpt、safetensors和diffusers格式的模型和检查点
- 支持Flash Attention优化内存使用(目前仅CPU)
- 支持原始txt2img和img2img模式
- 支持负面提示词
- 支持LoRA模型
- 支持Latent Consistency Models (LCM/LCM-LoRA)
- 使用TAESD进行快速解码
- 使用ESRGAN进行图像超分辨率
- 支持VAE分块处理以减少内存使用
- 支持ControlNet (SD 1.5)
- 支持多种采样方法:Euler A、Euler、Heun、DPM2等
- 跨平台可重现性
- 将生成参数嵌入PNG输出
支持平台
- Linux
- macOS
- Windows
- Android (通过Termux)
使用方法
对于大多数用户,可以直接从最新发布下载预编译的可执行程序。如果预编译版本不满足需求,也可以选择手动构建。
获取代码
git clone --recursive https://github.com/leejet/stable-diffusion.cpp
cd stable-diffusion.cpp
如果之前已经克隆了仓库,可以使用以下命令更新到最新代码:
cd stable-diffusion.cpp
git pull origin master
git submodule init
git submodule update
下载权重
下载原始权重文件(.ckpt或.safetensors格式)。例如:
- Stable Diffusion v1.4: https://hugging