人工智能
LoRa、QLoRA 和 QA-LoRA:通过低秩矩阵分解实现大型语言模型的高效适应性

大型语言模型 (LLM) 已经开辟了一个独特的领域,在理解和生成类人文本方面提供了无与伦比的能力。 法学硕士的力量可以追溯到其巨大的规模,通常有数十亿个参数。 虽然如此巨大的规模提高了它们的性能,但同时也带来了挑战,特别是在针对特定任务或领域的模型适应方面。 管理法学硕士的传统途径,例如微调所有参数,会带来沉重的计算和财务负担,从而对其在现实世界应用中的广泛采用构成重大障碍。
在一个 以前的文章,我们深入研究了大型语言模型 (LLM) 的微调,以根据特定要求进行定制。 我们探索了各种微调方法,例如基于指令的微调、单任务微调和参数高效微调 (PEFT),每种方法都有针对不同任务优化 LLM 的独特方法。 讨论的核心是变压器架构,LLM 的支柱,以及微调过程中处理大量参数的计算和内存需求所带来的挑战。
上图代表了各种大型语言模型的规模,按参数数量排序。 尤其: 棕榈, 盛开, 等等
截至今年,已经取得了一些进展,导致模型变得更大。 然而,如果没有专门的优化技术,在标准系统上调整如此巨大的开源模型是不可行的。
微软在本次研究中引入了低秩适应(LoRA) 纸,旨在缓解这些挑战,并使法学硕士更容易获得和适应。
LoRA 的关键在于其模型适应方法,而无需深入研究重新训练整个模型的复杂性。 与每个参数都可能发生变化的传统微调不同,LoRA 采用了更智能的路线。 它将预训练的模型权重冻结,并将可训练的秩分解矩阵引入 Transformer 架构的每一层。 这种方法大大减少了可训练参数的数量,确保了更有效的适应过程。
LLM调整策略的演变
回顾LLM调整的历程,我们可以找出多年来从业者所采用的几种策略。 最初,重点是微调预训练模型,该策略需要全面更改模型参数以适应手头的特定任务。 然而,随着模型规模和复杂性的增加,这种方法的计算需求也随之增加。
下一个受到关注的策略是子集微调,这是其前身的更加克制的版本。 这里,仅对模型参数的子集进行微调,在一定程度上减少了计算负担。 尽管有其优点,子集微调仍然无法跟上法学硕士规模的增长速度。
随着从业者冒险探索更有效的途径,全面微调成为一种严格但有益的方法。
LoRA简介
矩阵的秩让我们可以了解其列所创建的维度,该维度由其具有的唯一行或列的数量决定。
- 全秩矩阵:其秩与其行或列之间较小的数字匹配。
- 低秩矩阵:由于秩明显小于其行数和列数,因此它捕获的特征较少。
现在,大模型掌握了对其领域的广泛理解,就像语言模型中的语言一样。 但是,针对特定任务对它们进行微调通常只需要突出这些理解的一小部分。 这就是 LoRA 的闪光点。 这表明显示这些权重调整的矩阵可以是低阶矩阵,从而捕获更少的特征。
LoRA 通过将更新矩阵拆分为两个较小的秩矩阵来巧妙地限制该更新矩阵的秩。 因此,它不是改变整个权重矩阵,而是只改变其中的一部分,从而使微调任务更加高效。
将 LoRA 应用于 Transformer
LoRA 通过关注特定的权重矩阵来帮助最大限度地减少神经网络的训练负载。 在 Transformer 架构下,某些权重矩阵与自注意力机制相关联,即 Wq、Wk、Wv 和 Wo,此外还有多层感知器 (MLP) 模块中的两个权重矩阵。
LoRA 的数学解释
让我们来分解一下 LoRA 背后的数学原理:
- 预训练权重矩阵 :
- 它从预先训练的权重矩阵开始 维度 。 这意味着矩阵有 行和 列。
- 低阶分解:
- 而不是直接更新整个矩阵 ,计算成本可能很高,该方法提出了一种低秩分解方法。
- 更新 至 可以表示为两个矩阵的乘积: 和 .
- 有尺寸
- 有尺寸
- 这里的关键点是排名 比两者小得多 和 ,这允许更高效的计算表示。
- 培训实施:
- 在训练过程中, 保持不变。 这称为“冻结”权重。
- 另一方面, 和 是可训练的参数。 这意味着,在训练期间,会对矩阵进行调整 和 以提高模型的性能。
- 乘法和加法:
- 以上皆是 和更新 (这是的产品 和 )乘以相同的输入(表示为 ).
- 然后将这些乘法的输出相加。
- 该过程总结为以下方程式: 在这里, 表示对输入应用更新后的最终输出 .
简而言之,该方法允许通过使用低秩分解表示更新来更有效地更新大权重矩阵,这在计算效率和内存使用方面是有益的。
初始化和缩放:
在训练模型时,我们如何初始化参数可以显着影响学习过程的效率和效果。 在我们的权重矩阵更新中使用 和 :
- 矩阵的初始化 和 :
- 矩阵 :该矩阵用随机高斯值初始化,也称为正态分布。 使用高斯初始化的基本原理是打破对称性:同一层中的不同神经元在具有不同的初始权重时将学习不同的特征。
- 矩阵 :该矩阵用零初始化。 通过这样做,更新 训练开始时从零开始。 它确保模型的行为在开始时不会突然变化,从而使模型能够逐渐适应 在培训期间学习适当的价值观。
- 缩放输出 :
- 计算更新后 ,其输出按以下因子缩放 哪里 是一个常数。 通过缩放,可以控制更新的幅度。
- 当排名时,缩放比例尤其重要 变化。 例如,如果您决定提高排名以获得更高的准确性(以计算为代价),则缩放可确保您无需在此过程中调整许多其他超参数。 它为模型提供了一定程度的稳定性。
LoRA 的实际影响
LoRA 已被 AI 社区的人们展示了其将法学硕士有效调整到特定艺术风格的潜力。 这一点在模仿艺术风格的模型的改编中得到了显着的体现。 格雷格·鲁特科夫斯基.
LoRA 方法不仅体现了让法学硕士更容易获得的重大进步,而且还强调了弥合人工智能领域理论进步和实际应用之间差距的潜力。 通过减轻计算障碍并促进更高效的模型适应过程,LoRA 有望在现实场景中更广泛采用和部署法学硕士方面发挥关键作用。
QLoRA(量化)
虽然 LoRA 在减少存储需求方面改变了游戏规则,但它仍然需要强大的 GPU 来加载模型进行训练。 这就是 QLoRA(或量化 LoRA)介入的地方,将 LoRA 与量化相结合,形成更智能的方法。
通常,权重参数以 32 位格式(FP32)存储,这意味着矩阵中的每个元素占用 32 位空间。 想象一下,如果我们可以将相同的信息压缩为 8 位甚至 4 位。 这就是 QLoRA 背后的核心理念。 量化是指将连续无限值映射到较小的一组离散有限值的过程。 在法学硕士的背景下,它是指将模型权重从高精度数据类型转换为低精度数据类型的过程。
以下是 QLoRA 的更简单细分:
- 初始量化:首先,大型语言模型 (LLM) 被量化为 4 位,显着减少了内存占用。
- LoRA培训:然后,执行 LoRA 训练,但采用标准 32 位精度(FP32)。
现在,您可能想知道,为什么在缩小到 32 位后又回到 4 位进行训练? 那么,为了在 FP32 中有效训练 LoRA 适配器,模型权重也需要恢复为 FP32。 这种来回切换是以智能、逐步的方式完成的,以避免压垮 GPU 内存。
LoRA 在 Hugging Face 中找到了实际应用 参数高效微调 (PEFT) 库,简化其使用。 对于那些希望使用 QLoRA 的人来说,可以通过以下组合进行访问: 位和字节 和 PEFT 库。 此外,拥抱脸 Transformer 强化学习 (TRL) 库 通过对 LoRA 的集成支持,促进监督微调。 这三个库共同提供了用于微调选定的预训练模型的基本工具包,从而在出现特定属性指令提示时能够生成有说服力且连贯的产品描述。
经过 QLoRA 微调后,权重必须恢复为高精度格式,这可能会导致精度损失,并且缺乏加速过程的优化。
提出的解决方案是将权重矩阵分组为更小的段,并对每个组单独应用量化和低秩自适应。 一种新方法,命名为 QA-LoRA,尝试融合量化和低秩适应的好处,同时保持过程高效和模型对所需任务的有效性。
结语
在本文中,我们讨论了它们巨大的参数大小带来的挑战。 我们深入研究了传统的微调实践及其相关的计算和财务需求。 LoRA 的关键在于它能够修改预先训练的模型,而无需完全重新训练它们,从而减少可训练参数并使适应过程更具成本效益。
我们还简要研究了量化 LoRA (QLoRA),它是 LoRA 和量化的结合,可减少模型的内存占用,同时保留训练的基本精度。 借助这些先进的技术,从业者现在配备了强大的库,有助于在各种现实场景中更轻松地采用和部署法学硕士。
这些策略的精心设计是为了在使法学硕士适应特定任务和确保微调和部署过程对计算和存储资源的要求不过分之间取得平衡。