一、硬件环境
主机配置
| 项目 |
规格 |
| CPU |
AMD Ryzen 9 7900X |
| 主板 |
铭瑄 B850 AIGA |
| 内存 |
32GB |
| 独显(主卡) |
AMD Radeon RX 6750 GRE 12GB |
| 计算卡(副卡) |
AMD Radeon Instinct MI50 16GB |
| 电源 |
1000W |
| 操作系统 |
飞牛 OS(fnOS) |
| 后端 |
Vulkan |
💡 关键说明:AMD 已停止对 MI50 的 ROCm 支持,新版镜像无法启用 LCM。目前 Vulkan 是唯一可用的最佳方案。
网络环境
- 飞牛 NAS IP:局域网内可访问
- 网络模式:使用外部已创建的 localNetwork 桥接网络
2.1 启动命令参数说明
以下参数说明供参考:
- --listen-ip 0.0.0.0 --listen-port 8061 → 监听地址和端口(0.0.0.0 表示允许局域网访问)
- --diffusion-model /app/models/boogu/boogu-edit-turbo-dit-Q4_0.gguf → 扩散模型文件路径(文生图核心模型,Turbo 模式快速生成)
- --llm /app/models/boogu/Qwen3VL-8B-Instruct-Q4_K_M.gguf → LLM 模型路径(用于理解文字提示词)
- --llm_vision /app/models/boogu/mmproj-Qwen3VL-8B-Instruct-Q8_0.gguf → LLM 视觉模型路径(用于图像理解/图生图)
- --vae /app/models/boogu/boogu-vae.safetensors → VAE 模型路径(变分自编码器,负责图像解码)
- --cfg-scale 1 → CFG Scale:提示词引导强度(1 为 Turbo 模式最低值,生成更快)
- --steps 4 → 采样步数:Turbo 模式建议 4-8 步(速度快,画质足够)
- --sampling-method euler → 采样方法:euler 是最基础的采样算法,稳定可靠
- --diffusion-fa → 启用扩散模型 Flash Attention 优化(注意:仅 Vulkan 2 后端支持)
- --backend diffusion=vulkan2,te=vulkan1,vae=vulkan1 → 后端分配:
- diffusion=vulkan2 → 扩散模型使用 Vulkan 2(支持 Flash Attention)
- te=vulkan1 → 文本编码器使用 Vulkan 1
- vae=vulkan1 → VAE 解码器使用 Vulkan 1
- --params-backend diffusion=vulkan2 → 参数后端:扩散模型参数使用 Vulkan 2 后端
- --lora-model-dir /app/models/LoRa → LoRA 模型目录(存放额外的风格/角色微调模型)
- -v → 启用详细日志输出(调试时 useful)
注意:command: > 使用 YAML 折叠块字符串语法,> 符号后面的内容会被当作字符串,因此注释不会被执行。
# ============================================================
# 服务定义:stable-diffusion.cpp Vulkan 版本
# ============================================================
services:
# 服务名:sd-cpp
sd-cpp:
# Docker 镜像:官方 Vulkan 版本(支持 AMD GPU)
image: ghcr.io/leejet/stable-diffusion.cpp:master-vulkan
# 容器名称(便于后续 docker 命令操作)
container_name: sd-cpp-vulkan
# 容器异常退出时自动重启(除非手动 stop)
restart: unless-stopped
# 容器入口:运行 sd-server 可执行文件
entrypoint: ["/sd-server"]
# --- 端口映射 ---
ports:
- "8061:8061"
# --- 网络配置 ---
networks:
openNetwork:
# --- 数据持久化 ---
volumes:
- /vol1/1000/docker/stable-diffusion/sd-dir/models:/app/models
- /vol1/1000/docker/stable-diffusion/sd-dir/output:/app/output
# --- 硬件设备直通 ---
devices:
- /dev/kfd:/dev/kfd
- /dev/dri:/dev/dri
# --- 权限配置 ---
group_add:
- video
command: >
--listen-ip 0.0.0.0 --listen-port 8061
--diffusion-model /app/models/boogu/boogu-edit-turbo-dit-Q4_0.gguf
--llm /app/models/boogu/Qwen3VL-8B-Instruct-Q4_K_M.gguf
--llm_vision /app/models/boogu/mmproj-Qwen3VL-8B-Instruct-Q8_0.gguf
--vae /app/models/boogu/boogu-vae.safetensors
--cfg-scale 1
--steps 4
--sampling-method euler
--diffusion-fa
--backend diffusion=vulkan2,te=vulkan1,vae=vulkan1
--params-backend diffusion=vulkan2
--lora-model-dir /app/models/LoRa
-v
# --- 安全选项 ---
# 解除 seccomp 安全限制(GPU 相关操作需要)
#security_opt:
#- seccomp:unconfined
#- label:disable
# --- 额外权限 ---
cap_add:
- SYS_ADMIN
#- SYS_PTRACE
# ============================================================
# 网络配置
# ============================================================
networks:
openNetwork:
external: true
driver: bridge
三、所需模型文件
| 模型 |
文件格式 |
用途 |
| boogu-edit-turbo |
.gguf |
扩散模型(文生图核心,Turbo 模式) |
| Qwen3VL-8B-Instruct |
.gguf |
LLM 文字提示理解 |
| mmproj-Qwen3VL-8B-Instruct-Q8_0 |
.gguf |
LLM 视觉理解(图生图) |
| boogu-vae |
.safetensors |
VAE 图像解码 |
| LoRA 模型(可选) |
.safetensors |
风格/角色微调 |
我测试了好多模型,目前这个boogu可以在较快的速度下出图质量较好。
四、使用方法
4.1 通过 fnconnect 访问
打开飞牛 fnconnect → Docker → 容器列表 → 点击 sd-cpp-vulkan 容器行右侧的端口下拉框(显示 8061:8061),点击即可在浏览器打开 API 页面。
五、注意事项
5.1 硬件相关
- GPU 驱动:飞牛 OS 需安装 AMD GPU 驱动,确保 /dev/kfd 和 /dev/dri 设备可用
- 显存要求:boogu 模型较大,建议至少 12GB 显存(6750 GRE 12GB 可用,MI50 16GB 可作为副卡)
- 内存要求:建议 32GB 及以上(模型加载 + 推理过程需要大量内存)
5.2 Vulkan 后端
- AMD GPU 使用 Vulkan 后端,--backend 参数中 te 和 vae 设为 vulkan1,diffusion 设为 vulkan2 以启用 Flash Attention
- --diffusion-fa 参数仅在 Vulkan 2 后端有效
- 如果只有单卡,去掉 te=vulkan1,vae=vulkan1 部分,只保留 diffusion=vulkan2
七、参考资料
| 资源 |
链接 |
| stable-diffusion.cpp 官方仓库 |
https://github.com/leejet/stable-diffusion.cpp |
| Vulkan 官方文档 |
https://www.vulkan.org |
| AMD ROCm 文档 |
https://rocm.docs.amd.com |
| 魔搭社区(模型下载) |
https://modelscope.cn |
免责声明:本文基于个人实际测试经验编写,仅供参考。不同硬件配置可能导致结果差异,请根据自身情况调整配置。