stable-diffusion.cpp 是 Stable Diffusion 的纯 C++/C 实现,基于原始的 PyTorch 模型权重,无需 Python 环境即可运行。
前不久在查看 LLaMA.cpp 的 GitHub 项目的时候一个不小心进入到一个名为 stable-diffusion.cpp 的项目,这不由得让我想起在几年前的时候的 stable-diffusion-webui 项目。
时隔这么久已经无法记起当时是怎么将二进制可执行文件下载到本地的了,反正不是编译的就是下载编译好的二进制可执行文件,由于当时按照 READ.md 的步骤验证一番直接非法参数无法解决而不得不放弃进一步的研究。
不过到了近日再次访问到对应的 GitHub 仓库的时候又有了新的发现,不知道怎么滴这一次才发现到其 releases 页面其实是有各种环境的二进制可执行文件的,依稀记得就是在无意间点进topics/ggml页面,在里面的浏览中第一眼看到的关键词stable-diffusion就进去了,一开始还以为都是ggml-org的,后来才发现是leejet的项目仓库。
明明就是记得也是在 GitHub 下载已经编译好的二进制可执行的吧,不知道怎么地在使用时就是出现非法参数的错误。看着一时之间无法愉快地运行起来,就干脆这样一只搁置了许久直至到了现在,我才再在 GitHub 上看到了适宜各个架构版本的二进制可执行文件的压缩包可供下载,眼看如此就尝试从这下载一个适合的压缩包来尝试尝试。
下载安装
- 下载 stable-diffusion.cpp :
当前所使用的版本,可能后续会有新的版本可供下载。curl -LO https://github.com/leejet/stable-diffusion.cpp/releases/download/master-782-b290693/sd-master-b290693-bin-Linux-Ubuntu-24.04-x86_64.zip
对于有显卡的环境可以使用
vulkan的版本。 - 解压 stable-diffusion.cpp :
unzip sd-master-b290693-bin-Linux-Ubuntu-24.04-x86_64.zip
- 下载模型:
由于配置实在是太低只能使用小模型来验证 stable-diffusion.cpp 的使用。当前使用的模型:
second-state/stable-diffusion-v-1-4-GGUF
Xet hash:36d416a3c75b8c2159b9ca0f16cfb4157e3e594703108321df582ba2192f616a
Size of remote file:1.59 GB
SHA256:1c060b9172ec1fa1393303f4206a3cca02c0549b1544c2aebc68ca6485d3dbb4curl -LO https://huggingface.co/second-state/stable-diffusion-v-1-4-GGUF/resolve/main/stable-diffusion-v1-4-Q4_1.gguf
- 运行 stable-diffusion.cpp :
./sd-server -m ./models/stable-diffusion-v1-4-Q4_1.gguf -l 0.0.0.0 -H 256 -W 256 -t 1 --mmap --sampling-method euler_a --scheduler karras --steps 50
使用
用浏览器打开http://ip:1234即可在浏览器中的 WebUI 操作,当然也是可以直接使用sd-cli用命令行的方式操作。
可惜的是出图效果不是很理想的样子……甚至是出图效果“惨不忍睹”的状态。
参考
- Diffusion model(SD,Flux,Wan,Qwen Image,Z-Image,…) inference in pure C/C++
https://github.com/leejet/stable-diffusion.cpp
ChiuYut
2026年07月18日