type
summary
status
category
tags
slug
date
password
icon
状态
子标签
标签
日期
Jan 13, 2026 08:03 AM
CONTENTLoRA模型训练第一课_原理Part1:原理Part2:训练对象Part3:训练方法Part4:文本反演Textual Inversion_Embeddings训练Step1 准备训练集Step2 图片预处理Step3 调节训练参数Note:训练逻辑第二课_LoRAPart1:原理Part2:训练工具Part3:基本流程Step1:训练集收集Step2:图片预处理Step3:设置训练参数Part4:参数意义 LoRA类型训练步长学习率优化器网格维度训练性能Part5:(重点)训练集清洗前言打标标注的清洗找图Part6:实践案例1 小金人奖杯案例2 Arcane风格Part7:补充知识底模监控训练进程
LoRA模型训练
第一课_原理
Part1:原理

prompt→tags→词元vector→加噪→去噪→VAE→像素组合图片
Part2:训练对象
- 三个模型(主要训练的就是前两个)
- 文本编码器 Text Encoder
- 噪声预测器 Noise Predictor
- 变分自编码器 Variational Auto Encoder
reference(embeddings和lora只是挂载的)

- 训练对象:
- 微调模型Fine Tuned Model
- 底模选择:可以是官方的预训练模型如SD1.5,SDXL,也可以是别人已经微调过的模型
ref

Part3:训练方法
- Dreambooth
- 对应checkpoint
- LoRA
- 对应LoRA
- Textual Inversion
- 对应Embeddings
ref:LoRA性价比高

- 模型融合Merge
- 对应市面上80%以上的Checkpoint和LoRA等
Part4:文本反演Textual Inversion_Embeddings训练
文件格式一般为.pt或者.safetensors,比较小,以KB为单位可能
步骤:
Step1 准备训练集
10-20张图片即可
Step2 图片预处理
- 裁剪:将图片裁剪为合适大小,比如SD1.5的训练集是512*512的,那这里也裁一样大
- 可以在webui里用后期处理部分的功能批处理,自动面部焦点对齐
- 打标:基本的打标在webui里有自动化的caption,两种deepbooru(二次元)和blip,能自动识别图像内容并以词库tag对其进行标注
Step3 调节训练参数
ref

- 底模:默认为webui里正在出图的checkpoint
- 尽量选择最原始的,保证学习效果和泛用性
- 模板:根据训练的类型如人(subject),风格(style)等随机加入相关tag,加深记忆
Note:训练逻辑
ref

- 是按词自画,不断接近训练图片。按照提示词生成图片→vector,对比预训练图集的图片→vector,不对就修改vector,使之不断靠近
- 步数:1~2万步,根据预览图实时跟踪
第二课_LoRA
引入:
Part1:原理
- 冻结原来的预训练模型的权重,另起一个微调权重
- 原来模型的数据可以理解为类似于空间向量组成的矩阵,所以后面算法的优化可以用到线性代数的知识,这个算法来源于微软工程师针对gpt作训练优化的研究。
- 优化微调权重的训练方法,降本增效:具体就是把原来的满矩阵提取出横纵两行的数据,其它留空,只训练这个转化后的矩阵。即对训练数据集(矩阵)的处理:满秩→低秩→满秩。
ref

- 低秩的数据也能降低存储需求,即LoRA模型会小很多
Part2:训练工具
- 硬件:GPU,显存,内存等;云服务器
- 丹炉:训练启动器
- KOHYA
- 国内up主封装的
- 前置训练环境配置:
- git:版本控制,用于拉取代码在线仓库的程序文件
- python:编程语言
- visual studio:集成开发环境工具包
Part3:基本流程
Step1:训练集收集
多样化
Step2:图片预处理
更好地辨析intention
- 裁剪
- 手动检查
- 也不是必须严格512
- 打标
- 除了自带那俩deepbooru和blip,还能用其他的插件,比如WD1.4Tagger,择优
- 附加标签:比如角色名,可以作为触发词trigger
Step3:设置训练参数
- 底模
- 下载到本地,custom选本地比从启动器提供的链接下载快
- 相对来说,1.5配置要求低,好训练,社区内容也更多
- 二次元底模一般用NovelAI泄露的模型NAI,江湖流传的名一般为anime_full.ckpt
ref:一直在变,比如最近的SD3.5,FLUX等

ref:底模的选择灵活,老的效果一般一般,可以考虑融合的

SD二次元基因的注入者Novel AI,其相关关系

- 文件夹
Name:
image
repeattimes(训练次数)_concept(概念,trigger)
log
model
名字用纯英文字母,训练图片放在image文件夹里,不是那个概念文件夹
ref

- 参数
- 预设模板presets
- 跟着跑通,能有个基本效果
Part4:参数意义
6大参数板块
LoRA类型
ref

- standard传统版,稳妥
- LoCon版,综合素质高,但慢一点
- IA^3版,省事便捷,但无法迁移
训练步长
- Epoch(时期,纪元,轮次),一个epoch就是走完一个轮次,比如文件夹为 6_name,里面30张图,一轮就是训练6 * 30 = 180 步,一个轮次即一个Epoch就是180步。
- 总步长 = 总的图片训练次数 = 每张训练次数 * 图片数量
- 一张图片完成一次从模型生成到比对调整的流程,为一步
- 文件夹前面的repeattimes就是每张图片训练次数
- Epoch的合适区间:很重要,少了欠拟合,多了过拟合;1200~1500步是个模糊的大致参考区间
- 控制总步数的变量:有很多,比如可以设置一个较大的轮次epoch,但后面设置总步数,使得训练在这里停下
- 输出结果:不是最后才有的,中间会有阶段性模型产出。可以设置每隔 ? epoch保存一次
- 批次跟生图一样,就是一次几张图
学习率
- 常见的:1e_4 = 0.0001
- 学习率过高会导致过拟合,overfitting
- 没有标准答案,涉及到模型,步数,训练集图片数据等,只能根据结果调试
- 文本编码器学习率更敏感,一般是Unet(噪声预测器)学习率0.1~0.5倍
- 默认不填下面俩的话,一般默认Unet学习率等同学习率,TE学习率为其一半。
- 填了的话,上面的就不生效了,Unet学习率就是学习率
优化器
- 常用:老牌的AdamW8bit,谷歌新出的Lion,Meta和三星出的神童Prodigy(无参数自适应学习率方法)
- 学习率数值:可以从7e-5,8e-6之类的开始试;选神童Prodigy的话,设置3个1就行,会自适应
- 调度器scheduler,控制学习率衰减,用cos就行,影响不大
网格维度
- Network Rank(Dimension)
- 即秩,越大,从原来的满秩里抽出来的行列就越多
- 理论最大为128,此时LoRA模型大小约为144MB
- 最小为8,此时LoRA大小不到10MB
- 如拟真的复杂的调大,如二次元的简单的调小
- 一般从低秩试起
- Network Alpha:alpha for LoRA weight scaling
- 调节LoRA对原模型起作用的大小
- 但:值越大(最大与rank一样大),LoRA起的作用越小;值越小,LoRA起的作用越大
- 一般设的较小,比如1,使其发挥最大作用,去微调
- 选择带有”卷积层“的变量的LoRA类型时,会多出相应的卷积层Convoluation的Rank和Alpha,逻辑跟Network是一样的
ref of value(for anime style),times 3 in real world style

训练性能
- 混合精度MIX Precision,保存精度Save Precision
- no:即默认,其实是FP32,单精度浮点数,深度学习主力军
- FP16:半精度浮点数。加快速度,节约算力。也是社区市面上绝大多数模型的选择。
- BF16:Brain Floating Point。与FP16差距不大。
精度粗糙一点,对最终模型产出效果影响不是特别大
- 缓存潜空间变量Cache Latents,缓存潜空间变量到磁盘Cache Latents to Disk
- Latents即潜空间图像,也是图像,但是是由VAE把像素图像解码转化为Vector向量形式存储的,用于训练的图像
- Cache Latents打勾就在训练前提前转换,存到显存里,不打勾就训练中逐张转换
- to Disk就是存硬盘里方便连续训练,不用反复缓存到内存,即调试同一个训练集的参数时打勾;打勾会稍微变慢,可能由于从disk里比从ram里调取要慢
- 交叉注意力 Cros Attention(在进阶参数中)
- Nvidia:xformers,一种学习机制,起优化和降低配置需求作用
- 内存高效注意力 Memory Efficient Attention,降低显存需求,效果不如xformers,而且会使训练边慢很多
ref when overfitting or underfitting:多试试

Part5:(重点)训练集清洗
前言
Kohya中有Bucket Resolution,即分辨率桶,会把预训练图片集里的不同分辨率的图片分到不同的容器桶中,分开训练。默认开启,但太多的桶,可能会对训练效果造成负面影响。
- 所以还是要尽量把预训练集的图片处理成统一分辨率的,或裁剪,或填充,或尽量少分组。
打标
之前的思考总结:
57:35
ref

- 模型是AI可理解的向量合辑,向量是图片的视觉特征即像素分布特征对应文字tag的指向;
- 为了后期出图的可操作性更大,模型应该具有更强的专一性,例如某一角色模型,只保留某一角色最本质的特征
- 训练模型,即炼丹就是AI在原有的基础上吸纳新的向量合辑;
- 所以炼丹时,预期模型包含的是新的特征,不需要拆分成很细的tag。除了预期模型的凝练tag,其他的都应该是旧的,库里包含的,从而避免预期模型中的必要特征与之前的向量建立联系,弱化预期模型应有的特征。
- 模型是动漫人物,那这个向量应该包含脸部特征,头发特征,装饰品特征,服装特征(当然可以按需去除),所有这些合在一起才是这个人物;所以在打标的时候,需要把所有非特征的部分tag出来,如背景特征,光照特征等,让AI与之前的向量建立联系,那剩下的新的向量合辑就是这个模型,也就炼出来了。
- 模型是画风,那这个向量应该包含线稿走向,配色,突出元素等(其它专业的画风分类的名词)特征;在打标的时候,这个画风tag应该包含的特征不打出来,不包含的打出来,比如同人角色,普通元素等。
- 暂时这个阶段的理解
标注的清洗
用插件Dataset Tag Editor,加boorutag词库查询
- 整体审核:删
- 非角色特征tag,如1boy
- 角色锚点tag,如hair ornament,white hair,long hair;
- 替换
- 批量调整
- 批量增标:添加未识别但影响到出图效果的tag,如:夜色night(会使图偏暗)
- 单张修改
- 遍历
- 根据上面的逻辑,增删改tag
ref

记得保存,也记得勾选备份,这插件不是很人性化
找图
- 多样化:官方图,模型图,同人图,模型图等等
- 找,或者造:自己截3D模型的不同角度
- AI图反哺,类似于给deepseek喂chatgpt
Part6:实践
案例1 小金人奖杯
- 训练集清洗
案例2 Arcane风格
- 训练集量要求比人物多
- 步数业会相应增多
Part7:补充知识
底模
- 底模
- 下载到本地,custom选本地比从启动器提供的链接下载快
- 相对来说,1.5配置要求低,好训练,社区内容也更多
- 二次元底模一般用NovelAI泄露的模型NAI,江湖流传的名一般为anime_full.ckpt
ref:一直在变,比如最近的SD3.5,FLUX等

ref:底模的选择灵活,老的效果一般一般,可以考虑融合的

SD二次元基因的注入者Novel AI,其相关关系

监控训练进程
- 查看命令行
- it/s,iteration per second,每秒的步数;s/it,second per iteration,每步消耗秒数
- loss值:预测值与样本值的差异,理想的训练过程中avr_loss的震荡幅度会从大到小,表示生图与训练图接近。 看趋势。
- Loss = Non,即爆了
- Tensor board:将命令行数据转化为可视化图表的监测看板插件
- 看损失值avr_loss
- 看学习率lr:开启学习率预热LR Warm Up的话(一般10%),前端曲线会突出来,一种学习策略
ref


- 现场跑一个
- 在参数-样例里面,即sample
- 一般设置每100步采样一次
- 出图参数直接在prompt输入框里按格式标出
- 输出会在sample文件夹里
- 每隔200步数(以1200为总步数)存档一个LoRA,就能有6个LoRA模型,一般是中间的某一个效果比较好
- X/Y/Z plot,对比图表;类型填变量名,值用”,“分隔
- 改模型名字,统一后缀,救能在prompt里用文字调用,也能在图表里借助表达式分别调用
ref




- 训练参数在训练output问价夹里的.json文件中,下一次训练直接在Kohya中导入,就能直接套用上一次的训练参数了
- Author:Frank
- URL:https://blog.fqqblog.com/article/2e7bd4d9-052e-81ba-ba83-f10f6da3ca79
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!

模型训练 