如何跑通Stable Diffusion模型训练教程?LoRA微调实战记录

本文实测Stable Diffusion模型训练教程,涵盖环境搭建、LoRA数据集制作和训练排错调优,帮你在单张消费级显卡上训出第一个可用权重。

如何跑通Stable Diffusion模型训练教程?LoRA微调实战记录

去年冬天,我为了复刻一位插画师特有的笔触,第一次在自己的机器上训练 LoRA。那天晚上我信心满满地敲下第一条训练命令,二十分钟后显存爆了;调完参数再来一遍,又爆。折腾到凌晨三点,才把第一版能用的权重跑出来。回头看,翻的车其实个个都有迹可循——显存估算错了、标签写得太随意、学习率直接用了默认值。

这篇 Stable Diffusion模型训练教程不打算复述 kohya_ss 的 README(那个你自己看就行),我想把真正跑通的流程、文档里不写的细节,还有那些让我骂人的报错,摊开讲一遍。搜「stablediffusion模型训练教程使用教程」的人很多,但落到操作层面,无非就是准备环境、攒数据、跑脚本、看结果这四件事。

核心结论:在一张 12GB 显存的消费级显卡上,用 LoRA 微调 Stable Diffusion 1.5,准备约 1 小时、训练 20–40 分钟,就能拿到可用的风格权重。真正的门槛不是算力,而是数据集质量和参数组合。

训练前要搞清楚的三件事

先说方法选型。市面上主流的几种微调路径差别很大,选错了会导致你白跑几小时。

| 方法 | 可训练参数 | 显存门槛(SD1.5) | 训练耗时 | 适用场景 | |---|---|---|---|---| | LoRA | 约 1–10M | 6–8GB | 20–40 分钟 | 画风、人物、特定元素 | | DreamBooth | 8.6 亿起(全量) | 16–24GB | 1–3 小时 | 单一主体的强还原 | | Textual Inversion | 不到 1 万 | 4–6GB | 30–60 分钟 | 简单概念、轻量画风 |

表中显存与耗时数据参考 kohya_ss 官方仓库 README,并结合我在 RTX 3090(24GB)和 4070 Ti(12GB)上的实测结果。

LoRA 之所以成为个人玩家的首选,是因为它只训练注入到注意力层里的低秩矩阵,不动原始权重。根据 Edward Hu 等人在 2021 年 6 月提交到 arXiv 的《LoRA: Low-Rank Adaptation of Large Language Models》论文,这种方法最多能把可训练参数减少约 10000 倍,GPU 显存需求降低约 3 倍。这个思路最初是为了微调大语言模型,后来被社区移植到扩散模型上,效果意外地好。

再说前置条件,其实就四条:

  • **一张 NVIDIA 显卡**,SD1.5 的 LoRA 建议 8GB 显存起步,SDXL 至少 12GB
  • **Python 基础**,不需要多深,能看懂函数参数、会改配置就行。如果你是纯新手,先补一点 Python人工智能 的基础语法会顺畅很多
  • **20–50 张高质量素材图**,宁少勿杂
  • **至少 50GB 空闲硬盘**,模型权重和缓存文件比你想的占地方

至于"深度学习教程里那些反向传播、梯度下降要不要先学"——我的看法是,先跑通再补理论。你不需要理解扩散模型的每一个数学细节,也能训出一个能用的 LoRA。反过来,啃完三周理论再动手,热情早磨没了。

环境准备:显卡、系统与依赖安装

环境这块是最容易劝退人的地方。我见过不少人卡在 CUDA 版本不匹配上,一卡就是一下午。显卡和显存的选型我在这篇AI 绘图显卡与显存选择指南里写过更细的,这里只给能直接复制粘贴的步骤。

先在 Linux(或 Windows 的 WSL2)下建一个独立环境,别跟系统里的 torch 混在一起:

建一个 Python 3.10 的独立环境,3.10 是目前兼容性最稳的版本

conda create -n sd-train python=3.10 -y conda activate sd-train

装带 CUDA 12.1 支持的 PyTorch,注意这条要用官方源

pip install torch==2.1.2 torchvision==0.16.2 --index-url https://download.pytorch.org/whl/cu121

拉取 kohya_ss 训练脚本并装依赖

git clone https://github.com/bmaltais/kohya_ss.git cd kohya_ss pip install -r requirements.txt

有一点要

Windows 用户直接在 PowerShell 里操作也行,但 WSL2 下训练速度通常更稳,尤其是数据加载环节。

分步骤实操:从 20 张图到可用的 LoRA 权重

数据集怎么攒:宁少勿杂

我踩过最亏的一次坑,是为了"让模型学得更全",往数据集里塞了 200 张风格跨度极大的图。结果训练出来的模型什么都不像。后来我把素材砍到 28 张,风格高度统一,效果反而脱胎换骨。

目录结构长这样:

dataset/ └── my_lora/ ├── 01.jpg ├── 01.txt ├── 02.jpg ├── 02.txt └── ...

图片要求:分辨率不低于 512×512,主体清晰,构图别太雷同。如果做人物训练,至少覆盖三到四种角度和光照。

打标签的取舍

标签(caption)是很多人偷懒的地方,也是效果差距最大的地方。每个 `.txt` 文件对应一张图,内容就是描述:

sks style, a portrait of a woman, soft daylight, film grain, muted colors

那个 `sks` 是你自定义的触发词——随便取,但要保证在正常英文里不常见,否则会和已有概念打架。标签里只写你希望模型学的东西,不想学的(比如每次都出现的背景颜色)就干脆别写。

跑训练:完整命令与参数解释

下面是我现在还在用的 SD1.5 LoRA 训练命令,参数已经调过几轮:

accelerate launch --num_cpu_threads_per_process=8 train_network.py \ --pretrained_model_name_or_path="./models/sd15.safetensors" \ --train_data_dir="./dataset/my_lora" \ --output_dir="./output" \ --output_name="my_style_v1" \ --resolution=512,512 \ --network_module=networks.lora \ --network_dim=16 \ --network_alpha=8 \ --learning_rate=1e-4 \ --lr_scheduler="cosine" \ --optimizer_type="AdamW8bit" \ --max_train_epochs=10 \ --train_batch_size=2 \ --gradient_accumulation_steps=2 \ --mixed_precision="fp16" \ --save_every_n_epochs=2 \ --caption_extension=".txt" \ --shuffle_caption \ --keep_tokens=2 \ --seed=1337

几个参数值得单独说:

  • `network_dim=16` 和 `network_alpha=8` 决定了 LoRA 的"容量"。dim 越大能装的细节越多,但也越容易过拟合。风格类任务 16 够用,人物还原可以开到 32
  • `keep_tokens=2` 让前两个词(也就是你的触发词和主体类别)在打乱标签时保持原位,避免触发词被冲散
  • `AdamW8bit` 来自 bitsandbytes,能省一点显存,实测对最终效果几乎没影响

RTX 3090 上跑 28 张图、10 个 epoch,大概 25 分钟。12GB 卡把 `train_batch_size` 降到 1、`gradient_accumulation_steps` 提到 4,其他不用动。

学习教程

midjourney手机使用教程:手机端出图完整实战指南

2026-10-15 20:40:03

学习教程

Stable Diffusion下载教程:Windows与Mac本地部署完整实战

2026-10-15 20:45:19

0 条回复 A文章作者 M管理员
VergeX|科技前沿
    暂无讨论,说说你的看法吧
❯
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索