LLaMA - Factory与LoRA大模型微调之LoRA原理详解
一、导入
在大模型微调领域,使用封装良好的框架能简化流程。学习过程聚焦LLaMA - Factory框架与LoRA微调方法实操,并在实操前先深入回顾LoRA原理。
二、LoRA原理详解
(一)LoRA基本概念
- 定义与目的:LoRA(Low - Rank Adaptation)即低秩适应,通过冻结原模型,添加额外训练的低秩矩阵,微调得到垂直领域大模型。新矩阵公式为h=W0x+ΔWxh = W_0x + \Delta Wxh=W0x+ΔWx ,W0W_0W0代表原冻结的大模型基座矩阵,ΔW\Delta WΔW是LoRA训练的新矩阵部分,二者结合形成新的专业领域大模型。
- 低秩矩阵理解
- 低秩含义:矩阵的秩指线性独立行或列的最大数目。低秩意味着用较少参数表示矩阵信息,从而节省内存空间。例如,一个矩阵若能被其他矩阵线性表示,则其在秩的计算中可被替代,相应秩会降低。
- 举例说明:在购买水果花费的例子中,若存在数据依赖关系,某些数据行可由其他行表示,这些可被替代的数据对应的矩阵秩较低。如购买苹果和香蕉的花费数据,当存在倍数或和的关系时,部分数据行在矩阵秩计算中可忽略。
- 矩阵表示:以小明出行时间距离为例,原本复杂的矩阵可简化为更简单的形式,通过低秩矩阵表示,减少参数数量。如用一行加一列的方式代替原来多行多列的数据,在大规模矩阵中,这种方式能显著节省存储空间。
(二)LoRA原理核心
过参数化模型指模型参数数量远超完成特定任务所需,在某专精领域,大量参数并非都有用,如通用大模型用于特定专业领域时,很多其他领域参数冗余。因此,在专精领域应用中,应提炼与该领域相关的少量参数,让模型专注专业任务,这能避免资源浪费,提升模型在专业领域的处理效率 。
-
参数矩阵拆解:为减少参数量,LoRA将ΔW\Delta WΔW拆成AAA和BBB两个矩阵(A×B=ΔWA\times B=\Delta WA×B=ΔW) 。若原矩阵为d×dd×dd×d维度,AAA可设为d×rd×rd×r矩阵,BBB为r×dr×dr×d矩阵,rrr是远小于ddd的数,通过这种低秩分解,用少量参数模拟大模型复杂功能。

-
本征维度概念:本征维度是数据或空间中描述其结构或特征所需的最小维度。如苹果图片,若仅识别苹果,仅需关键像素点信息,这些关键像素所在的低维子空间维度就是本征维度,去除冗余信息可提高效率。
(三)LoRA初始化策略
- 初始化设置:初始化时,AAA的元素服从正态分布N(0,1)N(0,1)N(0,1),BBB初始化为零矩阵。
问题1:为什么初始化参数使用正态分布?
- 确保初始梯度的有效传播:避免梯度消失或爆炸问题。
- 提供足够的随机性:可探索更广泛参数空间,增加找到最优解的可能性。
- 平衡训练初期的影响:结合B初始化为零矩阵,能在训练初期使新增偏置矩阵对原始预训练权重影响为零,避免破坏预训练模型的初始性能。
问题2:为什么A初始化为服从正态分布,而B初始化为零矩阵?
- 若B和全部初始化为零矩阵,易导致梯度消失。
- 若B和全部正态分布初始化,模型训练开始时易得到过大偏移值ΔW,引起过多噪声,导致难以收敛。A、B初始化可以互换 。
(四)LoRA在注意力机制中的作用
- Transformer注意力机制关键元素:Transformer注意力机制包含WQW_QWQ(生成查询向量,决定模型对输入的关注度)、WKW_KWK(生成键向量,计算相似度确定注意力分布)、WVW_VWV(生成数值向量,传递注意力计算输出)、WOW_OWO(将多头注意力输出合并并映射回原始维度)。
- LoRA的作用位置及效果:LoRA的ΔW\Delta WΔW可作用于WQW_QWQ、WKW_KWK、WVW_VWV、WOW_OWO。实验表明,不限制参数预算时,同时作用在这四个矩阵上效果最好;有限预算时,作用在WQW_QWQ和WV上性价比最高。超参数W_V上性价比最高。超参数WV上性价比最高。超参数r并非越大越好,通常建议取值范围为8−64,默认值为8。如在GPT3实验中,不同数据集上不同并非越大越好,通常建议取值范围为8 - 64,默认值为8。如在GPT3实验中,不同数据集上不同并非越大越好,通常建议取值范围为8−64,默认值为8。如在GPT3实验中,不同数据集上不同r$值和作用矩阵组合的效果不同,验证了上述结论。


(五)LoRA与全参微调资源占用对比
- 全参微调资源占用计算:以10亿参数(1B)模型为例,假设每个参数占用4字节,模型权重参数占用内存109×410^9×4109×4字节 = 4GB;AdamW优化器存储两个状态向量(一阶矩估计mmm和二阶矩估计vvv),占用内存109×4×210^9×4×2109×4×2字节 = 8GB;每个参数对应一个梯度,梯度占用内存109×410^9×4109×4字节 = 4GB,总占用约16GB(可粗略计算为4N4N4NGB )。
- LoRA微调资源占用计算:同样以1B模型为例,模型权重参数仍为4GB。假设LoRA的rankrankrank设置为8,可训练参数量远低于全参数微调,如仅需约0.1B - 0.2B参数。其优化器状态向量和梯度占用内存相对全参微调大幅减少,整体占用内存约4.2GB(估算值)。

三、LLaMA - Factory预介绍
(一)项目定位与功能
LLaMA - Factory是GitHub上的开源项目,为大语言模型(LLM)提供易于使用的微调框架,支持LLaMA、Baichuan、Qwen、ChatGLM等多种架构大模型,涵盖从预训练、指令微调到RLHF阶段的开源微调解决方案。
(二)项目优势
- 模型与数据集支持:截止2024年11月19日,支持约200 + 种不同模型,内置60 + 数据集,为微调提供丰富资源。
- 易用性:封装高效易用的开发方法,其开发的LLaMA Board是零代码、可视化的一站式网页微调界面,可轻松设置微调超参数,实时同步训练进度,降低微调门槛。
1398

被折叠的 条评论
为什么被折叠?



