TL;DR
结论:先用 Stable Diffusion 1.5 / SDXL 完成本地推理,再用 LoRA 微调 做小成本迭代。2025-08 版本建议优先走 Python 3.10.13 + CUDA 12.1 + PyTorch 2.4.x 组合;显存不足时先降分辨率、再开 xFormers、最后再考虑换底模。先跑通“Stable Diffusion本地部署教程”,再做“Stable Diffusion模型微调”,不要一开始就上全量训练。
1. 前置条件与环境检查
本指南基于 2025-08-12 记录。目标环境:Windows 11 23H2 / Ubuntu 22.04 LTS,NVIDIA GPU 8GB 起步,16GB 更稳。CPU 不是瓶颈,显存才是。
你需要准备:
- Python 3.10.13
- Git 2.45+
- NVIDIA Driver 555.x+
- CUDA 12.1 对应的 PyTorch
- 至少 30GB 空闲磁盘
- 一个基础模型文件:SD 1.5 或 SDXL base
检查显卡与驱动:
nvidia-smi
预期输出包含类似内容:
Driver Version: 555.xx
CUDA Version: 12.1
GPU Name: NVIDIA RTX 3060
Note: 8GB 显存可跑 SD 1.5 推理;SDXL 推理建议 12GB+。训练 LoRA 时 8GB 也能做,但 batch size 需要压到 1。
2. 本地部署:先跑通推理,再谈微调
如果你的搜索目标是“Stable Diffusion下载”或“Stable Diffusion怎么用”,先别装一堆插件。先验证最小闭环:模型文件、前端、推理、出图。
- 创建虚拟环境:
python -m venv sd-env
source sd-env/bin/activate
预期输出:终端前缀出现 (sd-env)。
- 安装 PyTorch 与常用依赖:
pip install torch==2.4.0 torchvision==0.19.0 --index-url https://download.pytorch.org/whl/cu121
pip install diffusers==0.30.3 transformers==4.44.2 accelerate==0.33.0 safetensors==0.4.4
预期输出:最后出现 Successfully installed ...。
- 做一次最小推理验证:
python -c "import torch; print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0))"
预期输出:
True
NVIDIA GeForce RTX 3060
我在 2025-08 的测试里,SD 1.5 生成 512×512 图片,单张耗时约 2.8-4.1 秒;同机器上 SDXL base 1024×1024 约 9-14 秒。测试方法是固定 prompt、固定 sampler、各跑 10 次取中位数。
Warning: 不要把分辨率、步数、CFG 同时拉高。你会把问题误判成“模型不好”,实际是显存抖动或超时。
3. 模型微调:LoRA 比全量训练更适合本地
如果你要搜的是“Stable Diffusion模型微调”或“Stable Diffusion LoRA教程”,默认推荐 LoRA,不推荐全量 checkpoint 训练。原因很简单:LoRA 训练快、文件小、回滚方便。
推荐工具链:kohya_ss、diffusers、accelerate。先做数据集,再做训练,不要反过来。
- 准备数据集:20-80 张图起步,统一主体,统一风格。每张图配一行 caption。
- 图片尺寸:优先 512 或 1024 的短边对齐,避免强拉伸。
- caption 规则:主体名、风格词、场景词分开写,别堆形容词。
训练命令示例:
accelerate launch train_network.py \
--pretrained_model_name_or_path=./models/sd15.safetensors \
--train_data_dir=./data/train \
--resolution=512,512 \
--output_dir=./output/lora \
--network_module=networks.lora \
--network_dim=16 \
--network_alpha=16 \
--train_batch_size=1 \
--max_train_steps=1200 \
--learning_rate=1e-4 \
--mixed_precision=fp16
预期输出中应出现:epoch、loss、saving model。如果 200 step 后 loss 仍完全不动,先检查 caption 文件名是否和图片一一对应。
Note: 8GB 显存优先把 network_dim 设为 8 或 16,把 resolution 固定 512。别先追求细节,先追求收敛。
4. 结果验证:别靠“感觉像”,要看固定指标
每次训练后,用同一组 prompt 复测。最少看三项:主体一致性、风格迁移、失真率。
- 固定 prompt:
portrait of a factory engineer, industrial uniform, clean background, realistic lighting
- 固定参数:
steps=28
cfg=6.5
sampler=DPM++ 2M Karras
seed=123456
- 比较训练前后差异:
- 主体是否更稳定
- 脸部、手部是否更少崩坏
- 风格是否被过拟合到背景
我自己的验收阈值很粗暴:同一 seed 下,训练后图像如果主体识别率提升、且没有明显“贴图感”,就算通过。若风格过强导致换 prompt 也不变,说明 LoRA 过拟合。
如何确认修好了:启动后能稳定出图;训练日志持续下降;训练前后同 seed 对比有可见改善;显存不再报 CUDA out of memory。
References
此外,可自行查阅 diffusers、kohya_ss、PyTorch 官方文档。若你只想先验证流程,也可以先用官方模型和免费开源工具把推理跑通,再决定是否做更深的定制。