LoRA训练-理论基础
一、数据集
图片
质量越高,种类越丰富,模型效果通常越好。高质量的图片可以提高模型的泛化能力。
版权
网上白嫖图片进行训练有一定的法律风险,图片是有版权的。但版权限制期限是100年,100年后所注册的版权/商标将会失效。所以根据梵高的风格创作的内容合法合规。
LoRA也有版权。在LibLib发布模型是有收入的。LibLib对模型的版权规则,只要我们生成的LoRA需要不商用,不侵权。可以用IPAapter融图,参考风格生成LoRA。
给AI喂了一定数量之后的图片之后,AI就会知道你想要什么, 他能够根据你所提供的数据集去推理出新给的图片在该风格下应该呈现什么样的视觉表现。
风格LoRA
可以选择一些可商用的素材,同时需要注意画风的一致性。AI的训练能力和迭代能力是非常强的,他能够注意到图片中的所有细节,把数据集放在同一个文件夹下。
一个比较可行的方式:使用基础大模型批量生成指定风格的图片,从这些图片中选表现效果较好的图片,以这些图片为数据集,训练一个该风格的LoRA模型。这里就能看出LoRA的作用是让模型在某一个领域的生图表现优于基础模型。
人物形象LoRA
在影视作品中截图,更注重面部和五官的一致性。最好是不同表情,不同姿势和不同视角,但必须是同一个人/同一个年龄阶层。形象的一致性,发型可以改变
打标tag
循环轮次epoch
在一个训练轮次中,每张图片被重复训练的次数,在数据集较少的情况下,可以+循环次数。训练数据的不同,没有具体的标准数值参考,学习得不够收敛就+步数,过拟合就-步数,高轮次也会需要更高的算力和更多的训练时间。
二、优化算法
局部最优解local optimum
指优化算法在参数空间中找到一个区域的极值点(可能是最小值/最大值)但这个点并不是整个参数空间中最全局最优的解。这种现象会导致模型性能停滞,无法继续优化。
学习率热learning rate warm up
一种优化策略,通过在训练初始阶段逐步提高学习率(而非直接使用目标学习率),帮助模型稳定收敛并提升最终性能。
小数据集(<10k样本)建议缩短预热步数(如总步数的5%)
大数据集(百万级)可延长至总步数的10%~20%
学习率learning rate
学习率是机器学习算法中的一个参数,控制模型在每次迭代更新时对于权重&位置的调整程度,可以将学习率看作决定每一步“跨越”多大幅度的因素;
学习率过大,每一步更新的幅度会比较大,模型可能更快地收敛得到最优解,但也容易错过最优解附近的小波动,甚至发生震荡或无法收敛的情况。可能导致模型在损失函数曲面上跳跃,跳过全局最优解附近的区域,甚至直接跨过最优解。例如:在训练初期,若学习率设为0.1,模型可能在几个epoch内快速下降,但因步幅过大,无法稳定收敛到最优区域,反而在局部最优附近震荡。
学习率较小,每一步的变化都会比较小,模型的调整过程会相对稳定,但可能需要更多的迭代次数才能收敛得到最优解,训练速度可能会较慢。参数更新缓慢,可能被困在初始位置附近的局部最优解中,无法向全局最优方向移动。例如:学习率设为0.0001时,模型需要极多迭代次数,才能收敛,甚至因梯度消失而停滞在次优点。
U-net学习率unet_lr
控制U-net部分权重的更新幅度,通常设置为1e-4,1e-4=1/10000=0.0001
学习率调度器
动态调整学习率的工具,其作用范围覆盖整个训练周期,
采样器&调度器
优化器
优化器决定了模型的权重更新方式,主流使用的是Adamw8bi/Licn,影响学习率。
三、参数调节
网络大小Network Rank Dimension(dim)
Rank数值表示从原始矩阵中抽取出的行列,抽取的就越多,微调的数量就越多,该数值控制LoRA所需要参考大模型的样本大小。LoRA训练中,不单单只是训练数据集的内容,还掺杂着底膜大模型的部分内容。这部分的大小就是网络大小。
LoRA可以理解为原始模型为一部分整体,而Network Rank参数,控制从整体中“切下”的多少部分来进行微调,形成LoRA模型。
选一个合适的rank值非常重要,关乎到硬件设备、训练时长。
二次元风格Rank值:32/16
复杂风格、三次元物品、形象训练Rank值:128/64
网络Alpha值Network Alpha
控制训练的LoRA模型在使用时的“减弱权重”,该“减弱权重”=Alpha值/Rank值=左右LoRA最终效果
Alpha一般不超过Rank,Alpha越接近Rank,那么Lora模型权重影响越小,反之对LoRA模型影响越大。
=1时,LoRA发挥原有默认水平,一般Alpha值只要等于Rank值即可,也就是Alpha值/Rank值=1
精度选择&混合精度策略
小模型/资源受限场景:优先选择FP16,(内存节省更显著,精度足够)
大模型(参数量≥10B):必须使用BF16,避免梯度爆炸/消失。
混合精度策略:FP16搭配动态损失缩放(dymamic loss scaling)和梯度裁剪
BF16可以直接与FP32权重混合使用,无需额外调整。
在训练一个深度学习模型时,可以使用FP16进行前向传播和反向传播,以节省显存和加速训练,同时使用BF16进行权重更新,以保持模型的精度和稳定性。
Flux模型一开始有2个精度,
FP16,在这个精度下Flux达到22G,Flux模型的完全体,全精度
FP8,在这个精度下模型只有11G
最小信噪比伽马值
一般设置为默认值,平衡生成质量&训练稳定性
过低,模型生成内容质量低下,噪声过多/细节丢失;
过高,训练过程不稳定,梯度爆炸/消失
四、损失函数/loss值/loss曲线
模型收敛:训练过程中模型的损失函数数值逐渐稳定,参数更新幅度减小,最终达到一种稳定状态,此时模型能够准确预测新数据且训练损失和验证损失的变化趋于平缓。
模型发散:训练失败,损失函数曲线呈上升趋势/剧烈波动,可能由于学习率过大、数据质量问题或模型结构不合理等原因。
损失函数曲线分析:判断模型收敛/发散的重要依据,全局下降(收敛),允许局部上升(发散),平坦程度判断模型的质量,越平坦越好
模型收敛时,损失函数曲线会先动态下降,随着训练的深入逐渐趋于平缓,模型发散时,损失函数曲线会持续上升/剧烈抖动,甚至完全失效出现NaN值。
五、模型效果评估
实测
一个入门大纲,掌握这些基础知识可以利用LibLib,吐司等在线模型训练网页进行基础的模型训练。
后续持续学习的时候会增加别的内容。
原内容UP主:
【Comfyui教程】LibLibAI进阶实战教学!AI模型训练教程 ComfyUI在线生图与StableDiffusion教程_哔哩哔哩_bilibili
以上end