在 Windows 11 下从零编译 stable-diffusion.cpp (CUDA 硬件加速版)
1. 前言
- 技术背景:在大模型本地化趋势下,stable-diffusion.cpp 凭借对 GGUF 格式的卓越支持,成为低显存、高性能部署的首选。
- 模型优势:配合阿里通义 Z-Image-Turbo 模型(DiT 架构),可在消费级显卡上实现亚秒级绘图响应。
- 编译意义:针对 RTX 4070 Ti Super 或 50 系列等高性能显卡,手动编译并锁定硬件架构可解决编译器冲突并压榨硬件潜力。
2. 极速部署:直接下载预编译文件
- 下载地址:前往 GitHub Releases 页面 获取构建好的二进制文件。
- 版本选择:RTX 30/40/50 系列用户需下载带 cuda12 后缀的压缩包(如 sd-master-f957fa3-bin-win-cuda12-x64.zip)。
- 运行补丁:必须同时下载 cudart-sd-bin-win-cu12-x64.zip,并将其中的 .dll 文件解压至主程序根目录。
- 驱动要求:确保驱动版本在 525.xx 以上,50 系列显卡建议使用最新版驱动。
3. 环境准备:编译“三件套”
- Visual Studio 2026 安装步聚:
- 运行 Visual Studio Installer,勾选“使用 C++ 的桌面开发”工作负载。
- 在详细信息面板确认勾选:MSVC 编译器、C++ CMake 工具以及 Windows 11 SDK。
- 在“单个组件”中确认已包含对旧版工具集的兼容性支持,以确保与 CUDA 链接顺畅。
- NVIDIA CUDA Toolkit:
- 推荐安装 12.x 或 13.x 版本。
- 安装时选择“自定义”,确保选中“开发文件”和“运行时”组件。
- CMake 构建工具:
- 建议独立安装官方版本,并确认已加入系统环境变量 PATH。
- 在终端输入以下命令验证安装:
cmake --version
4. 获取源码与子模块同步
- 源码克隆:使用 –recursive 参数确保拉取所有关联的子模块(如 ggml)。
git clone --recursive https://github.com/leejet/stable-diffusion.cpp cd stable-diffusion.cpp - 补救指令:若克隆后文件夹为空,请手动运行:
git submodule update --init --recursive
5. 核心:针对不同显卡架构的编译配置
- 确定架构代码:
- RTX 4070 Ti Super (Ada Lovelace):使用代码 89。
- RTX 50 系列 (Blackwell):建议使用代码 101。
- 编译器兼容性:在 VS 2026 环境下,需使用 -allow-unsupported-compiler 标志绕过 NVCC 检查。
- 配置指令:
mkdir build cd build cmake .. -G "Visual Studio 18 2026" -A x64 ^ -DSD_CUDA=ON ^ -DCMAKE_CUDA_ARCHITECTURES=89 ^ -DCMAKE_CUDA_FLAGS="-allow-unsupported-compiler"
6. 构建与产物部署
- 并行构建:使用 /m 参数开启多核编译以节省时间。
cmake --build . --config Release -- /m - 部署产物:构建后的 sd-cli.exe 位于 bin\Release。
- 依赖补齐:若系统无全局 CUDA 环境,务必将 cudart 库文件拷贝至该目录下。
7. 实战测试:分体式加载 Z-Image-Turbo
- 加载逻辑:由于 DiT 架构特性,需手动指定三个核心组件路径以对齐张量命名。
- 核心模型下载:
- Diffusion 主模型:z-image-turbo-Q8_0.gguf
- 文本编码器 (LLM):Qwen3-4B-Instruct-2507-Q4_K_M.gguf
- VAE 模块:ae-Q8_0.gguf
- 推理指令:
.\sd-cli.exe --diffusion-model z-image-turbo-Q8_0.gguf ^ --llm Qwen3-4B-Instruct-2507-Q4_K_M.gguf ^ --vae ae-Q8_0.gguf ^ -p "A professional photographic render of a high-tech gas storage facility, realistic, 8k" ^ --steps 8 --cfg-scale 1.0 --guidance 0.0 --sampling-method euler -o result.png
8. 性能表现与结语
- 显存占用:1024x1024 尺寸生成时,显存占用约 10.5 GB,适合 16GB 显存显卡。
- 生成速度:RTX 4070 Ti Super 8 步采样耗时约 2 秒。
- 总结:定制化编译虽然繁琐,但其带来的极致性能增益是本地 AI 创作的最佳路径。