leejet/stable-diffusion.cpp
机器学习用纯 C/C++ 在本地运行 Stable Diffusion、FLUX、Wan 等扩散模型,覆盖 CPU 与多种 GPU 后端。
项目介绍
stable-diffusion.cpp 是一个基于 ggml、用纯 C/C++ 实现的扩散模型推理引擎,思路与 llama.cpp 类似。它支持文生图、图生图、图像编辑和视频生成,不依赖 Python 运行时。覆盖的模型包括 SD1.x/2.x/XL/3.x、FLUX.1/2/3、Qwen Image 与 Qwen Image Edit、Z-Image、Wan2.1/2.2、LTX-2、HunyuanVideo,并支持 ControlNet、IP-Adapter、LoRA、PhotoMaker、ESRGAN 放大和 TAESD 解码 README lines 37–133。
适合希望在本地、以轻量依赖完成生成的用户,平台包括 Linux、macOS、Windows,以及通过 Termux 使用的 Android。后端覆盖 CPU(AVX/AVX2/AVX512)、CUDA、Vulkan、Metal、OpenCL 和 SYCL,权重格式支持 .ckpt、.safetensors 与 .gguf;convert 模式可把权重转换为 .gguf 或 .safetensors。2026-04-11 起内置了新的 Web UI README lines 16–36。
项目处于活跃开发阶段,API 和命令行参数可能频繁变化 README lines 5–15。
快速使用
- 获取
sd-cli可执行文件:从 releases 页面下载预编译二进制,或按构建指南从源码编译 README lines 136–140。 - 把模型权重下载到本地
models目录,README 以 SD v1.5 为例:
curl -L -O https://huggingface.co/stable-diffusion-v1-5/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors
mv v1-5-pruned-emaonly.safetensors ../models/
- 在仓库构建目录下执行生成:
./bin/sd-cli -m ../models/v1-5-pruned-emaonly.safetensors -p "a lovely cat"
CLI 会把生成的图片写入磁盘。完整参数见 CLI 文档 README lines 150–157;各模型的准备说明见对应文档,例如 SD、FLUX.1、Qwen Image、Wan。
使用约束
- 生成速度和内存占用取决于所选后端与模型规模。性能指南和后端选择指南介绍了线程、降低 VRAM/RAM、Flash Attention、VAE tiling 与采样设置。
- 分词器只实现了 stable-diffusion-webui 的部分行为,目前仅有 token 加权 README lines 37–133。
- 跨平台复现需要匹配 RNG 参数:
--rng cuda对齐 stable-diffusion-webui 的 GPU RNG,--rng cpu对齐 ComfyUI 的 RNG。 - 仓库不附带模型权重,需要单独获取,并遵守对应模型的许可。
- 代码以 MIT 许可证发布。
HotRepo 点评
项目发布时的 HN 讨论集中在扩散模型是否需要 C/C++ 移植:有评论指出扩散模型的计算与内存特征与 LLM 不同 brucethemoose2 的评论;也有用户反馈自己在没有独立显卡的旧笔记本上跑通了,并认为单个二进制替代了大量 Python 依赖 badsectoracula 的评论。这些取舍仍是项目的核心定位:适合受限硬件和极简环境,但未必追求最高吞吐。HotRepo 记录中,仓库在 2026-11-03 为 7,881 星,当天位列 C++ 日榜第 10、新增 16 星;2023 年的原始 HN 讨论获得 303 分和 115 条评论。
本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。