hihi,其实以前在方向AIGC生图技术原理和常见应用里面已经多次提到Lora的概念了,但是没有单独拿出来讲过,今天就耐心来一下!
🔥 一口气摸透AIGC文生图产品SD(Stable Diffusion)!
一、什么是Lora?
痛点
在自然语言处理领域,一种重要的范式是对通用领域数据进行大规模预训练,然后将模型适应到特定任务或领域。随着预训练模型越来越大,完全微调(重新训练所有模型参数)的成本越来越高。例如,对于拥有1750亿参数的GPT-3 175B模型,部署独立的微调模型实例是非常昂贵的。
Low-Rank Adaptation (LoRA)是一种解决方案,它通过在Transformer架构的每一层中注入可训练的低秩分解矩阵,将预训练模型的权重固定,并在下游任务中大大减少了可训练的参数数量。这样可以显著降低下游任务中需要微调的参数数量。
定义
Lora(Low-Rank Adaptation,低秩自适应)是一种针对大型AI模型的高效微调技术,由微软研究人员提出。其核心原理是通过低秩矩阵分解,仅调整原模型的一小部分参数(通常为0.1%-1%),即可实现特定任务的适配。
- 低秩(Low Rank):在数学中,秩(Rank)是一个描述矩阵信息量的概念。低秩意味着这个矩阵包含的信息比较少。在机器学习中,常常使用低秩的方法来简化问题,因为包含的信息少,计算就更快,更容易处理。
- 适应(Adaptation):适应是指模型可以根据新的数据自我调整,使得模型在新的数据上表现得更好。这对于处理那些数据分布可能会变化的问题非常有用。
从产品视角看,Lora的核心价值在于:
- 低成本高效:相比传统全量微调,Lora仅需少量数据和计算资源,训练时间缩短50%以上。例如,微调一个14GB的大模型可能仅需40MB的Lora参数。
- 灵活性与兼容性:Lora参数可叠加或独立存储,支持多任务适配、参数混合(如不同风格Lora按比例融合)。
- 性能无损:通过低秩逼近保留原模型能力,推理时与基础模型合并,性能接近全量微调。
典型应用场景包括图像生成(如Stable Diffusion风格定制)、语言模型领域适配(如法律/医疗文本生成)等。
使用
- 点击任意一个 LORA 模型,会自动填写到格式形如<lora:模型文件名称:权重>的 Prompt 到提示词输入框中。
- 触发词 (trigger)):单纯引入模型,很多时候并不会触发LORA 的效果,因为LORA 在训练时基本都会加入若干个特殊的触发词,所以使用时也需要在提示词中输入触发词才能激活 LORA 的效果。
- 存储位置:/models/LORA
二、常见五大应用场景
1. 描绘特定人物形象
LoRA 最广的应用场景没有之一,在图生图里面的赛博Coser 就是一个典型例子,另外还包括打造动画、漫画、游戏里面的角色等等也属于这个场景的应用范畴。
2. 描绘特定画风
实现画风、或者视觉风格的微调。对应C站的 Model 分类为 Style
3. 描绘特定概念、特效
“概念”,它类似画风但又比画风更抽象。
4. 穿着特定服饰
给人物换上特定的服装,同系列、同主题或者同色彩的服装,例如汉服、机甲、武装。
5. 添加特定元素
借助蒙板功能,可以给原图像的局部添加或替换特定的元素。
三、训练步骤
从产品落地的全流程视角,Lora训练可分为以下阶段:
1. 数据准备
📢 常规要求
① 不少于 15 张的高质量图片,一般可以准备 20-50 张图;② 減少重复或相似度高的图片;③ 图片主体内容清晰可辨、特征明显,图片构图简单,避免其它杂乱元素④ 覆盖目标特征的多角度、多场景(如人物需包含正/侧/仰视)。 如果是人物照,尽可能以脸部特写为主(多角度、多表情),再放几张全身像(不同姿势、不同服装)
📢 避免:
① 脸部有遮挡的不要(比如麦克风、手指、杂物等)②背景太复杂的不要(比如一堆字的广告板,或夜市太乱的背景)③分辨率太低的不要④光影比较特殊的不要(比如暗光,背光等)⑤不像本人特征的不要(比如大部分训练集都是长发,那么短发显脸大的不要,大笑毁形象的不要)⑥化妆太浓重的、美颜太严重的不要
🌰 案例
不同的训练目标所需要准备的训练集数量不同,eg:
- 真人类lora:30-50张图,需要有不同角度,不同姿势,面部特写等各种类型的图
- 二次元lora:10-30张图,需要有不同角度,不同姿势,面部特写等各种类型的图
- 画风类lora:100张图以上,需要不同的主题,丰富的细节。
💥 注意:
① 去掉杂乱背景:如抠图,移除背景;② 标准归一化:如统一宽高;🔥 网站:https://www.birme.net(将需要处理的图片上传,调整好保留的区域,然后保存为压缩包即可。)③ 训练集数量不是越多越好,训练集的质量更是重中之重,训练集的质量可以从两个角度衡量
- 像素值越大,图片细节越多越好
- 美学价值越高越好,如特定的构图,经典的画作,摄影作品
2. 数据打标
打标有以下几种方式
-
手动打标:手动为每一张图片的内容制作标签文本,这种方式速度慢,但准确度高,稳定性好,适用于训练集较少的情况。
-
自动打标:使用打标脚本来帮助打标,这种方式速度很快,但准确度不高,会出现重复标签和冲突标签,适用于庞大的训练集
-
🚩自动打标手动校准:先用脚本自动打标,逐个检查每个标签文件,删去重复标签,增加触发词等等,这是我们最推荐的打标方式
Step 01: 自动化打标
-
方法一:SD自带的Tagger
-
方法二:秋叶大神WD 1.4 Tagger自动打标
-
方法三:LLAVA(我们公司用的是这个)
Step 02:标签清洗:清洗噪声标签,添加核心触发词。
💥 注意(思考🤔一下):希望保留的特征要删去,以人物的lora为例,如人物的发色,富有个人特点的饰品等等,所有删除的标签会被集合到触发词中,从而达到生成特定人物的目的。
- 保留/添加标签:等价于引入基础模型中该标签的特征,表示在使用LoRA 时、这个位置的标签是可自定义的,画面可调范围就大;
- 删除标签的作用:等价于将素材图片特征与 LoRA 做绑定,可以理解为训练出来的LORA 特征会覆盖基础模型同名标签所指向的特征;
-
3. 参数配置与优化
- 基础配置:推荐使用Kohya GUI工具,设置网络秩(Rank=32)、学习率(1e-4)、批量大小(Batch Size=2)。
- 调优技巧:
- 动态学习率:初始1e-4,损失波动时降至5e-5。
- 抗过拟合:增加Network Alpha值或提前终止训练。
4. 模型训练与验证
-
训练监控:通过TensorBoard观察损失曲线,每200步保存检查点。
-
效果验证:
- 基础测试:使用触发词生成多尺寸图片,验证特征一致性。
- 泛化测试:组合不同风格提示词(如“赛博朋克+水墨”),检验兼容性。
💡 具体方法:
5. 部署与迭代
- 将训练完成的Lora模型(通常为
.safetensors
文件)部署至Stable Diffusion的models/Lora
目录,通过WebUI动态加载。 - 根据用户反馈进行2-3轮微调迭代,逐步优化特征权重和泛化能力。
总结
作为AI产品落地的关键技术,Lora通过“轻量适配”解决了大模型定制化成本高、灵活性差的痛点。未来,随着多模态模型的发展,Lora在视频生成、3D建模等场景的应用潜力将进一步释放。产品经理需重点关注训练工具链的易用性优化(如自动化标注、云端训练平台)及商业化场景挖掘(如企业专属风格模型库)。