Stable Diffusion 本地部署实战指南:从“显存不足”到“秒出大片”
“老师,我按教程装好了,但一生成图片就报错,显存直接爆掉,是不是我电脑太差了?”
这是上周训练营里一位学员小周的原话。他用的是一台搭载 RTX 3060 Laptop 6GB 显存的游戏本,按理说配置不算古董,但在默认设置下跑 SD 1.5 模型,512×512 分辨率都要等上两分钟,还经常出现黑图或 CUDA out of memory。我远程一看,问题不在硬件,而在部署策略——他用的还是最原始的 WebUI 自动安装包,虚拟内存没调,VAE 没加载,采样器选成了最慢的 DDIM。
今天这篇文章,我们就以小周的案例为起点,手把手拆解 Stable Diffusion 本地部署的完整流程,并给出两个能直接落地的实操案例:低显存优化方案 和 ControlNet 精准控制工作流。全程基于 Stable Diffusion WebUI (AUTOMATIC1111) v1.9.3 与 ComfyUI v0.2.3 双平台讲解,所有参数均经过实测。
—
一、部署前的“地基”:环境与依赖的五个关键点
很多教程只说“装 Python 3.10.6,装 Git”,但忽略了版本精确匹配。这里直接给结论:
1. Python 版本必须锁定 3.10.x(非 3.11/3.12)
SD WebUI 的 `torch` 依赖在 3.11+ 下有已知的兼容性问题,尤其是 Windows 下 `xformers` 编译失败概率极高。建议使用 `pyenv-win` 或直接安装 Python 3.10.11,安装时勾选“Add Python to PATH”。
2. 虚拟环境隔离(强烈建议)
不要在全局环境装依赖,否则你其他项目的 `numpy` 版本会被强行覆盖。在项目根目录执行:
python -m venv sd_env
sd_env\Scripts\activate # Windows
source sd_env/bin/activate # Linux/Mac
3. 显卡驱动与 CUDA 版本匹配
这一步是“显存爆掉”的隐形元凶。打开命令行输入 `nvidia-smi`,查看右上角 CUDA Version(注意这是驱动支持的最高版本,不是已安装版本)。如果你的是 12.x,那么 PyTorch 必须选择 cu121 或 cu124 版本,否则会走 CPU 推理,速度慢 20 倍以上。
安装 PyTorch 时,不要用官网默认命令,而是:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
4. 显存不足的“急救三件套”
小周的 6GB 显存,其实足够跑 SD 1.5 和 SDXL(配合优化)。关键在 WebUI 的启动参数。在 `webui-user.bat` 中修改 `COMMANDLINE_ARGS`:
set COMMANDLINE_ARGS=--xformers --medvram --no-half-vae --opt-split-attention
- `–xformers`:显存占用降低 30%,速度提升 20%
5. 模型放置路径与命名规范
主模型放 `models/Stable-diffusion/`,建议文件名用英文+版本号,例如 `sd_xl_base_1.0.safetensors`。VAE 放 `models/VAE/`,但如果你用的是 SDXL 模型,它自带 VAE,不需要单独加载。
—
二、实操案例 1:6GB 显存跑 SDXL——低显存优化全流程
小周的问题是“显存不足”,而 SDXL 模型(Base 版本)官方要求至少 8GB 显存,但通过以下流程,6GB 也能稳定出图。
步骤 1:下载 SDXL Base 1.0 与 Refiner
步骤 2:WebUI 设置 Refiner 联动
在 WebUI 的 `Settings` → `Refiner` 选项卡中:
步骤 3:分辨率与裁剪策略
SDXL 原生支持 1024×1024,但 6GB 显存直接跑会爆。关键技巧:分段生成。先以 768×768 生成,再通过 `Hires. fix` 放大到 1024×1024:
步骤 4:实测参数与结果
在小周的机器上(i7-12700H + RTX 3060 Laptop 6GB),上述设置下:
对比他之前的默认设置(512×512,DDIM,无优化),时间反而快了 30%,且画质明显提升。核心逻辑是:用步数换分辨率,用分段换显存。
—
三、实操案例 2:ControlNet 精准控制——让 AI 听你的构图
很多学员反馈“AI 生成的图,构图完全不受控”,比如想要“人物在画面右侧,背景是城市夜景”,结果 AI 总是把人物放中间。解决方案就是 ControlNet,它通过额外输入(线稿、深度图、姿态骨架)来约束生成过程。
步骤 1:安装 ControlNet 扩展
在 WebUI 的 `Extensions` → `Install from URL` 中填入:
https://github.com/Mikubill/sd-webui-controlnet.git
安装后重启 WebUI,在 `Settings` → `ControlNet` 中确认 `Config` 路径指向 `models/ControlNet/` 下的 `yaml` 文件。
步骤 2:下载关键模型(以 Canny 和 OpenPose 为例)
放置到 `models/ControlNet/` 目录。
步骤 3:实操——用 OpenPose 控制人物姿势
1. 在 WebUI 的 `ControlNet` 选项卡中,上传一张带有人物姿态的参考图(建议用 OpenPose Editor 在线生成骨架图)
2. 勾选 `Enable`,选择 `OpenPose` 模型
3. 关键参数:
– `Control Weight`(控制权重):`0.8`(过高会完全复制原图姿势,过低则无效)
– `Starting Control Step`:`0.0`
– `Ending Control Step`:`0.8`(后 20% 步数让模型自由发挥细节)
– `Preprocessor`:`openpose`(自动提取骨架)
4. 配合正向提示词:`masterpiece, best quality, a woman in cyberpunk outfit, neon city background, dynamic pose`
5. 生成结果:人物姿势严格匹配骨架,但服装、背景、光影完全由 AI 发挥。
步骤 4:进阶——Canny 边缘控制建筑生成
如果你要生成“同一栋建筑的不同风格”,用 Canny:
1. 上传建筑的线稿或边缘图
2. 选择 `Canny` 模型,`Control Weight` 设为 `0.9`
3. 提示词写:`a futuristic skyscraper, glass facade, sunset lighting, ultra-detailed`
4. 结果:建筑轮廓完全一致,但材质、光效、环境全部改变。
—
四、总结与进阶建议
STABLE DIFFUSION 本地部署的核心不是“装好”,而是“调好”。回顾今天的内容:
1. 环境:Python 3.10.6 + PyTorch cu121 + `–xformers –medvram` 是低显存标配
2. 模型:SDXL 用 Refiner 联动 + 分段生成,6GB 显存也能跑
3. 控制:ControlNet 的 OpenPose 和 Canny 是构图精准度的两大杀器
进阶建议:
最后送大家一句话:“AI 绘画不是魔法,而是工程。” 当你把每个参数都理解透,你的作品自然就有辨识度。
—
常见问题 FAQ
Q1:我安装 WebUI 时卡在 `Installing torch` 很久不动,怎么办?
A:大概率是网络问题。国内用户建议使用清华镜像:`pip install torch torchvision torchaudio -i https://pypi.tuna.tsinghua.edu.cn/simple`,同时设置 `–index-url` 为 cu121 版本。如果还卡,直接下载离线 wheel 包安装。
Q2:生成图片全黑,但过程没有报错,是什么原因?
A:最常见是 VAE 未正确加载或 `–no-half-vae` 未启用。去 WebUI 的 `Settings` → `VAE` 中显式选择 `vae-ft-mse-840000`(SD 1.5)或 `sdxl_vae`(SDXL)。另外检查是否开启了 `–medvram` 与 `–no-half-vae` 冲突,建议同时开启。
Q3:ControlNet 上传图片后,生成结果完全没变化?
A:三个排查点:① 确认 `Enable` 已勾选;② `Control Weight` 是否太低(至少 0.6);③ 模型与主模型版本不匹配(SD 1.5 的 ControlNet 不能用于 SDXL)。建议先在 `Preprocessor` 中预览处理后的图,确认边缘/骨架提取成功。
Q4:6GB 显存跑 SDXL 总是卡死,��参数已经按你说设置了?
A:检查是否同时开启了 `–medvram` 和 `–opt-split-attention`,两者冲突会导致内存溢出。另外,关闭浏览器其他标签页,SD WebUI ���预览图也会占用显存。如果依然卡死,将分辨率降到 640×640,再用 Hires. fix 放大。
Q5:ComfyUI 和 WebUI 应该选哪个?
A:如果你是新手,先学 WebUI,界面直观,社区教程多;如果你需要批量处理、复杂工作流或低显存极限优化,ComfyUI 更合适。建议两个都装,根据任务切换——我自己的习惯是:快速出图用 WebUI,精细控制用 ComfyUI。

评论(0)