stable-diffusion.cpp
纯C++实现的AI图像/视频生成推理引擎,无需Python即可在任何硬件上运行
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
纯C++实现的AI图像/视频生成推理引擎,无需Python即可在任何硬件上运行
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
2026 年 7 月 8 日 · 深度分析
2023 年下半年,AI 图像生成领域有一个微妙的变化:开发者们不再满足于用 Python + PyTorch 的重型环境来跑扩散模型,而是开始探索——能不能像 llama.cpp 那样,用纯 C/C++ 把 AI 画图跑在「任何设备」上?
stable-diffusion.cpp 就是在这一背景下诞生的。它由开发者 leejet 于 2023 年 8 月发起,定位非常清晰:做一个纯 C/C++ 实现的扩散模型推理引擎,让图像生成无需 Python 依赖、无需 GPU 驱动,像编译运行一个普通程序那样简单。
这个思路直接借鉴了 llama.cpp 的成功哲学——轻量化、无外部依赖、跨平台、硬件通吃。上线不到三年,GitHub 已累计超过 6470 颗星,692 个 Fork,成为开源社区最活跃的纯 C++ 图像生成项目之一。
stable-diffusion.cpp 的所有底层计算都建立在 ggml 库之上。ggml 最初是为 llama.cpp 设计的张量计算库,支持多线程、量化、内存映射等核心能力。在 stable-diffusion.cpp 中,ggml 负责模型的矩阵运算、反向采样(denoising)等关键计算路径。
项目以 git submodule 方式引入 ggml,这意味着它紧跟 ggml 主仓库的更新节奏,可以及时获取最新的性能优化和硬件支持。
源码目录结构清晰地分为多个层次:
src/core/ — 共享基础设施:张量抽象、ggml 集成、各计算后端(CUDA/Vulkan/Metal/OpenCL/SYCL)、随机数生成器(RNG)、计算图(graph)构建和执行src/model/ — 模型族与组件:SD1.x/SD2.x、SDXL、FLUX、Wan 等各代扩散模型的结构定义src/model_io/ — 模型加载:支持 GGUF(ggml 的自定义格式)、Safetensors、PyTorch pickle 三种格式src/runtime/ — 推理运行时:采样算法(Euler A、DDPM、DPM++ 等)、去噪循环、引导(guidance)、缓存、预处理src/conditioning/ — 条件控制:文本 prompt 编码、negative prompt 处理src/tokenizers/ — Tokenizer 实现:复用 stable-diffusion-webui 风格的 tokenizer,支持 token 加权这种分层设计的优势在于:添加新模型只需在 src/model/ 增加对应族类,而无需改动核心推理循环。
这是 stable-diffusion.cpp 最令人印象深刻的能力之一。通过 ggml 的后端抽象,同一套代码可以在不同硬件上运行:
| 后端 | 适用场景 |
|---|---|
| CUDA | NVIDIA GPU(主流推荐,4GB+ 显存即可) |
| ROCm/HIPBLAS | AMD GPU(Linux/Windows 均支持) |
| Metal | Apple Silicon M 系列芯片 |
| Vulkan | 通用 GPU(Intel 集显/独显、安卓) |
| OpenCL | 通用 GPU/异构计算 |
| SYCL | Intel 集显/独显、Data Center GPU |
| 纯 CPU(AVX2/AVX512) | 无 GPU 环境,2GB+ RAM 即可运行 |
CUDA 后端还支持动态 CPU 后端(GGML_BACKEND_DL=ON),可在 GPU 显存不足时自动降级部分计算到 CPU。
项目原生支持 GGUF 量化格式,可以将原始 FP16/FP32 的模型权重压缩为 INT4、INT8 等低精度格式,显著降低内存占用。assets/ 目录中有多张对比图(q4_0.png、q5_0.png、q8_0.png、f16.png)展示不同量化精度下的生成效果差异——这说明作者非常重视量化对实际可用性的影响。
stable-diffusion.cpp 早已不只支持最初的 Stable Diffusion 1.5,截至 2026 年 7 月,它支持的主流模型包括:
图像生成模型
编辑与控制
视频生成
采样方法覆盖 Euler A、Heun、DPM++ 2M、LCM 等主流算法,并实现了 stable-diffusion-webui 风格的 VAE tiling(瓦片式解码),可在低显存下生成高分辨率图像。
项目在 docker/ 目录下提供了 5 个 Dockerfile:
Dockerfile — Ubuntu 24.04 + CPU 多变体(AVX/AVX2/AVX512)Dockerfile.cuda — NVIDIA CUDA 12.6.3 + cuDNN(最常用)Dockerfile.vulkan — Vulkan SDK(通用 GPU)Dockerfile.sycl — Intel SYCL(oneAPI)Dockerfile.musa — 沐曦 GPU(MUSA 生态)所有 Dockerfile 均采用多阶段构建(multi-stage),构建阶段包含 Node.js + pnpm(用于编译内置 Web UI),运行时镜像极度精简,仅依赖 libgomp1。
2026 年 4 月,项目引入了嵌入式 Web UI(examples/server/)。这个服务基于 C++ 原生实现,提供了类似 OpenAI API 的接口格式,同时内嵌前端界面。通过以下命令即可启动一个带图形界面的推理服务:
./bin/sd-server --port 8080
服务端支持 OpenAI 兼容 API(/v1/images/generations)、Stable Diffusion 原生 API(SDAPI)以及 sdcpp 专用接口,满足不同场景的集成需求。
| 方式 | 适用用户 | 特点 |
|---|---|---|
| sd-cli(命令行) | 开发者/自动化脚本 | 一行命令生成图片,支持 pipeline 集成 |
| sd-server(Web UI + API) | 普通用户/API 对接 | 图形界面 + REST API,一键部署 |
| Bindings(多语言 SDK) | 不同技术栈开发者 | Golang、C#、Python、Rust、Flutter 等 |
社区还涌现了多个第三方集成:KoboldCpp、LocalAI、Backend.AI GO 等都将 stable-diffusion.cpp 作为后端。
项目 README 明确标注:"API and command-line option may change frequently"(API 和命令行选项可能频繁变更)。对于生产环境来说,这是一个需要评估的风险点。
其他局限性:
.safetensors,但部分优化场景仍需转换为 GGUF 格式src/model/ 增加对应的实现代码,更新节奏存在延迟stable-diffusion.cpp 的崛起代表了 AI 推理领域的一个重要趋势:从「能用 Python 跑」到「能在任何地方跑」。
在 llama.cpp 开创的这条路上,stable-diffusion.cpp 是图像生成方向的标杆。它证明了扩散模型的推理同样可以被完全「C++ 化」,从而摆脱对 Python 生态的依赖。
对于硬件受限的开发者来说,这是一个巨大的解放——无需配置 conda 环境、安装 PyTorch CUDA 版本,仅需一个编译好的二进制文件和模型文件,就能在任何有计算能力的地方生成 AI 图像。
项目增长轨迹:2023 年 8 月上线 → 2024 年突破 3000 星 → 2025 年底突破 5000 星 → 2026 年 7 月已达 6470 星,增长曲线稳健,社区活跃度持续上升。