LoRA 模型训练:把你自己炼进 AI 里
如果你想让 AI 画出特定的人物(比如你自己、某个明星)、特定的画风(比如水彩、赛博朋克)或者特定的物品(比如你公司的产品),单靠提示词是很难做到精准还原的。这时候,你就需要训练一个 LoRA (Low-Rank Adaptation) 模型。
1. 什么是 LoRA?
假设几十 GB 的底层大模型(Checkpoint)是一本厚厚的《世界百科全书》,那么 LoRA 就是一张几十 MB 的"便签纸",贴在书的特定几页上。
优势: 训练大模型需要几百张顶级显卡跑上几个月,而训练一个 LoRA 只需要你的一张家用显卡(例如 RTX 3060 12G)跑几个小时。并且 LoRA 文件很小,方便分享组合。
2. 准备训练环境 (Kohya_ss)
业界最主流的 LoRA 训练工具是 Kohya_ss GUI。它提供了一个可视化的网页界面来进行复杂的参数设置。
- 前置: 确保已安装 Python 3.10 和 Git。
- 克隆: 打开命令行,运行
git clone https://github.com/bmaltais/kohya_ss.git - 安装: 进入目录,运行
setup.bat。安装过程会询问一些环境配置,按推荐的默认选项回车即可。 - 启动: 运行
gui.bat,浏览器打开http://127.0.0.1:2860。
3. 第一步:准备高质量数据集(Data Preparation)
这是最重要的一步,"Garbage in, garbage out" (垃圾进,垃圾出)。 以训练一个特定人物为例:
- 数量: 15-30 张高质量图片即可。
- 多样性: 不同的角度(正面、侧面、半身、全身)、不同的光照、不同的背景、不同的服装。
- 清晰度: 面部必须清晰,无严重遮挡或变形。
- 裁剪: 使用工具(如 Birme 网站)将图片裁剪为统一的尺寸,例如
512x512或768x768。
如果你的数据集中人物总是穿着同一件红色的衣服,AI 会把"这个人"和"红衣服"强行绑定在一起。以后你生成这个人物时,她永远脱不掉那件红衣服 (过拟合)。
4. 第二步:打标 (Tagging)
你需要告诉 AI 这些图片里有什么。我们可以使用 Kohya_ss 自带的 WD14 Tagger 工具进行批量打标。
- 在 Kohya 界面切换到
Utilities->Captioning->WD14 Captioning。 - 选择你的图片目录。
- 设置 Prefix (前缀):这是唤醒你模型的触发词。尽量用一个世界上不存在的词,比如
JensenStyle_Person。 - 点击
Caption images,它会为每张图片生成一个同名的.txt文件,里面写满了标签(如1girl, black hair, looking at viewer...)。
精修标签: 你需要手动打开 txt 文件,把属于人物固有特征的标签删掉(这样这些特征就会被吸收到触发词里),而保留背景、动作、衣着的标签(告诉 AI 这些是可以变的)。
5. 第三步:设置参数开始炼丹
在 Kohya 界面切换到 LoRA 选项卡:
- Source model (底模): 建议初学者选择动漫选
Anything V5,写实选ChilloutMix或SD 1.5官方版。 - Folders (文件夹配置):
这里有严格的命名规范。建立一个总文件夹,里面包含
image、model、log三个子文件夹。把你的图片和 txt 放进image的一个子文件夹里,命名为数字_触发词,例如100_JensenStyle_Person。(100代表每张图片训练100步)。 - Parameters (参数):
- Batch size: 根据显存大小设为 1 或 2。
- Epoch: 设为 10。总步数 = (图片数 * 100) / Batch size * Epoch。建议总步数在 1500-3000 左右。
- Learning rate (学习率): 给定默认值
0.0001即可。 - Network Rank (Dim): 决定模型的大小和拟合能力,通常推荐 32 或 128。
点击 Start training,去喝杯咖啡,等待终端跑完进度条。
6. 第四步:测试与迭代
模型训练完后会保存在你的 model 文件夹下(通常是 .safetensors 格式)。
把它放入 WebUI 的 models\Lora 目录。在 WebUI 中写提示词时,加上 <lora:你的模型名:权重>,例如
<lora:jensen_v1:0.8>,加上触发词 JensenStyle_Person,看看生成的图片效果如何。
炼丹玄学总结
如果画面完全不像目标:可能是底模选错了,或者步数太少(欠拟合)。
如果画面全是噪点、人物僵硬变形:可能是学习率太高,或者步数太多(过拟合)。
炼丹是一个不断调整参数、修改数据集的循环过程。保持耐心!