LoRA - 大型语言模型的低秩适应方法

news2024/9/23 19:18:42

人工智能咨询培训老师叶梓 转载标明出处

大规模预训练模型,如GPT-3,拥有高达1750亿参数,全参数微调不仅计算成本高昂,而且部署和维护多个微调实例变得非常困难。而且全参数微调需要大量的GPU内存,限制了同时训练的模型数量和并行实验的能力。表1为GPT-2中型模型使用不同方法进行推理时的延迟(以毫秒计)。表格中列出了不同批量大小、序列长度和可训练参数数量下的推理时间。

LoRA是一种新颖的参数高效适应方法,主要针对深度学习模型中的全连接层,其核心思想是在保持预训练模型权重不变的同时,通过在每个Transformer层中注入可训练的低秩分解矩阵来适应下游任务。这种方法显著减少了可训练参数的数量,降低了GPU内存需求,并提高了训练吞吐量。

论文链接:https://arxiv.org/pdf/2106.09685

代码地址:https://github.com/microsoft/LoRA

方法

LoRA的核心在于利用低秩分解来近似表示预训练模型在特定任务上的权重更新。这种方法的灵感来源于Aghajanyan等人(2020)的研究,他们发现即使是在随机投影到较小子空间的情况下,预训练语言模型仍然可以高效学习。基于此,LoRA假设在模型适应过程中权重更新具有低“内在秩”。图1展示了低秩适应(LoRA)方法的参数重参数化过程。

方法实现:对于一个预训练的权重矩阵 ,LoRA通过低秩分解 ΔW=BA 来约束其更新,其中 ,并且 r≪min(d,k)。在训练过程中, 被固定,不接收梯度更新,而 A 和 B 包含可训练参数。注意,和 ΔW=BA 与相同的输入相乘,并且它们的输出向量按坐标相加。

公式:

初始化和缩放:在训练开始时,A 使用随机高斯初始化,B 初始化为零,使得ΔW=BA 初始为零。然后按 α/r 缩放 ΔWx,其中 α 是一个常数。使用Adam优化器时,调整α 大致等同于调整学习率,如果初始化适当缩放,我们简单地将 α 设置为首次尝试的 r 值,并且不进行调整。

适用性:原则上,我们可以将LoRA应用于神经网络中的任何权重矩阵子集,以减少可训练参数的数量。在Transformer架构中,自注意力模块有四个权重矩阵(),MLP模块有两个。在本研究中,选择只适应注意力权重,冻结MLP模块,以简化问题并提高参数效率。

实际优势和局限性:

  • 优势:最显著的优势是减少了内存和存储使用。对于使用Adam训练的大型Transformer,如果 ,可以将VRAM使用量减少多达2/3,因为不需要为冻结的参数存储优化器状态。在GPT-3 175B上,将训练期间的VRAM消耗从1.2TB减少到350GB。通过仅适应查询和值投影矩阵,并且 r=4,检查点大小减少了约10,000倍(从350GB减少到35MB)。这使我们能够使用显著较少的GPU进行训练,并避免I/O瓶颈。另一个好处是,可以在部署时以更低的成本在任务之间切换,只需交换LoRA权重,而不是所有参数。这允许创建许多可以即时交换的定制模型。
  • 局限性:例如,如果选择将A 和 B 合并到 W 中以消除额外的推理延迟,那么将不同任务的输入批量处理在单个前向传递中并不直接。尽管在延迟不关键的情况下,不合并权重并为批量中的样本动态选择LoRA模块是可能的。

通过上述方法,LoRA不仅提高了模型的参数效率,还保持了与传统全参数微调相当的性能,同时在实际应用中具有显著的优势。

想要掌握如何将大模型的力量发挥到极致吗?叶老师带您深入了解 Llama Factory —— 一款革命性的大模型微调工具。9月22日晚,实战专家1小时讲解让您轻松上手,学习如何使用 Llama Factory 微调模型。

加助理微信提供直播链接:amliy007,29.9元即可参加线上直播分享,叶老师亲自指导,互动沟通,全面掌握Llama Factory,关注享粉丝福利,限时免费CSDN听直播后的录播讲解。
LLaMA Factory 支持多种预训练模型和微调算法。它提供灵活的运算精度和优化算法选择,以及丰富的实验监控工具。开源特性和社区支持使其易于使用,适合各类用户快速提升模型性能。

实验

研究者们将LoRA与其他几种模型适应方法进行了比较,包括全参数微调(Fine-Tuning, FT)、仅训练偏置向量的BitFit、前缀嵌入调整(Prefix-embedding tuning, PreEmbed)、前缀层调整(Prefix-layer tuning, PreLayer)以及适配器调整(Adapter tuning)。这些方法被用作基线,以便展示LoRA在不同配置下的性能。

实验结果:

  • RoBERTa base/large 和 DeBERTa XXL:在GLUE基准测试中,LoRA在保持较少可训练参数的同时,展现出了竞争力或更好的性能。
  • GPT-2 medium/large:在E2E NLG Challenge上,LoRA同样表现出色,超越了多个基线方法。

实验数据:

  • RoBERTa base (FT):125.0M 可训练参数,平均准确率为 86.4%
  • RoBERTa large (LoRA):0.8M 可训练参数,平均准确率为 89.0%
  • DeBERTa XXL (LoRA):4.7M 可训练参数,平均准确率为 91.3%

研究者们采用了预训练的RoBERTa base(125M)和RoBERTa large(355M)模型,并在GLUE基准测试的任务上评估了不同高效适应方法的性能。为了确保与适配器方法的公平比较,研究者们对LoRA的评估方式做了两个关键性的调整:首先,对所有任务使用相同的批量大小,并使用128的序列长度以匹配适配器基线;其次,对于MRPC、RTE和STS-B任务,模型初始化采用预训练模型,而不是像微调基线那样采用已经适应MNLI的模型。表2为RoBERTa基础版、RoBERTa大型版和DeBERTa XXL使用不同适应方法在GLUE基准测试上的性能。表格中列出了不同模型和方法在多个NLU任务上的平均准确率。

研究者们还评估了LoRA在DeBERTa XXL(1.5B参数)上的性能,这是一种在更大规模数据上训练的BERT变种,在GLUE和SuperGLUE等基准测试中表现出色。

研究者们进一步探索了LoRA在自然语言生成(NLG)模型上的表现,例如GPT-2中型和大型模型。他们尽量保持与Li & Liang (2021)的设置接近,以便进行直接比较。表3为GPT-2中型和大型模型使用不同适应方法在E2E NLG Challenge上的性能。表格中列出了不同模型和方法在NLG任务上的性能指标,如BLEU、NIST、METEOR、ROUGE-L和CIDEr。

研究者们将LoRA扩展到具有1750亿参数的GPT-3模型,作为对其有效性的最终压力测试。由于训练成本高昂,他们只报告了给定任务在随机种子上的典型标准偏差,而不是为每个条目提供一个。表4展示了不同适应方法在GPT-3 175B模型上的性能。表格中列出了在WikiSQL、MultiNLI-matched和SAMSum数据集上的验证准确率和ROUGE分数。

在WikiSQL、MultiNLI-matched和SAMSum数据集上,LoRA匹配或超过了全参数微调的基线。

并非所有方法都从拥有更多可训练参数中受益,如图2所示。使用超过256个特殊标记进行前缀嵌入调整或超过32个特殊标记进行前缀层调整时,性能显著下降。

图2 展示了在WikiSQL和MultiNLI-matched上,GPT-3 175B的验证准确率与可训练参数数量之间的关系。LoRA显示出更好的可扩展性和任务性能。

通过这些实验,研究者们证明了LoRA不仅能够有效减少模型的参数数量和内存需求,而且在多种自然语言处理任务中保持或提升了性能,是一种有效的模型适应方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2084617.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

go 切片slice学习总结

切片的结构 切片的底层结构: type SliceHeader struct {Data uintptr // 指向底层数组的指针 Len int //长度Cap int //空间容量 } 切片的初始化 1 通过数组或者已有的slice创建新的slice 1.1 使用数组创建切片 通过数组的一部分来初始化切片。 …

fixed、absolute 和 relative 布局

https://andi.cn/page/621716.html

计算机视觉编程 1(图片处理)

目录 灰色度 缩略图 拷贝粘贴区域 调整图像尺寸 旋转图像45 画图线、描点 灰色度 灰度是指图像中每个像素的亮度值,用来描述图像中各个像素的明暗程度。在计算机视觉中,灰度可以通过以下方式来计算: 1. 平均值法:将图像中每…

核心技术揭秘:AI、低代码与定制开发的三重奏,如何应对复杂业务需求

背景介绍 在当今迅速发展的数字化时代,企业面临的业务环境变得日益复杂和多变。无论是面对不断变化的市场需求,还是处理海量数据并从中获取洞察力,企业都需要快速响应并灵活调整自身的策略。传统的开发模式在应对这种复杂性时往往显得力不从心…

大模型提示词工程技术2-设计有效的提示词技巧、角色与上下文在提示中的应用

大模型提示词工程技术2-设计有效的提示词技巧、角色与上下文在提示中的应用。《大模型提示词工程技术》的作者:微学AI,这是一本专注于提升人工智能大模型性能的著作,它深入浅出地讲解了如何通过优化输入提示词来引导大模型生成高质量、准确的…

技术赋能数字化转型:百数低代码平台在试点城市的应用与实践

在当今信息化高速发展的时代,数字化转型已成为城市和企业发展的必然趋势。为了推动这一进程,数字化转型城市试点政策应运而生。“据了解,中央财政将对每个试点城市给予1亿元资金奖补,支持中小企业实施数字化改造,以数字…

5 - ZYNQ GPIO

文章目录 0 前言1 GPIO基本概念1.1 MIO-EMIO基本介绍1.2 MIO-EMIO连接情况 0 前言 本文来参考博主徐晓康的博文 ZYNQ7000-GPIO详解,仅作为个人学习记录。 1 GPIO基本概念 在ZYNQ中,GPIO(General Purpose Input/Output,通用输入…

嵌入式RTOS正在缩小与Linux系统之间的差异

RTOS与Linux的物联网设备操作系统之争已经持续了很多年。Linux以其强大的计算能力和丰富的软件生态,在需要复杂处理和软件支持的物联网设备上占据一席之地;RTOS凭借实时响应和资源节约的特性,在对实时性和资源占用有严格要求的场景中独领风骚。 如果时间倒回五年前,那…

[C++] C++11详解 (三)类的成员函数、完美转发

标题:[C] C11详解 (三)完美转发与lambda表达式 水墨不写bug 目录 一、C11新增两个类的默认成员函数 1.强制生成默认函数的关键字default: 2.禁止生成默认函数的关键字delete: 二、完美转发 正文开始: 一、C11新增两个类的默…

【YOLO5 项目实战】(8)PyQt5 图形界面—PCB缺陷检测系统

欢迎关注『youcans动手学模型』系列 本专栏内容和资源同步到 GitHub/youcans 【YOLO5 项目实战】(8)PyQt5 图形界面—PCB缺陷检测系统 1. PyQt5 图形界面开发工具1.1 PyQt5 的安装1.2 在 PyCharm 集成 QtDesigner 和 PyUIC1.3 使用 QtDesigner 开发 PyQt…

EPLAN在安装完成之后,输入文字时出现卡顿和死机的解决办法

EPLAN在安装完成之后,输入文字时出现卡顿和死机的解决办法 EPLAN在安装完成之后,插入文字时有时会卡顿,甚至出现软件卡死,无任何反映的情况,具体的解决办法可参考以下内容: 找到电脑右下角的输入法,右击进入设置, 如下图所示,点击进入常规设置, 如下图所示,向下找…

终于!我找到了开发的得力助手!阿里云天池云原生编程挑战赛参赛攻略

作者:ysevenk_7 参赛准备 我是机缘巧合在 6 月底了解到了天池云原生编程挑战赛,于是乎搜了一下,之前本人对于比赛并没有太多经验,看了大赛介绍之后莫名兴奋,果断拉了队友报名,完成认证、起队名、下载插件…

【STM32】RS485

RS485是常见的串口接口。 大部分图片来源:正点原子HAL库课程 专栏目录:记录自己的嵌入式学习之路-CSDN博客 目录 1 串口、UART、TTL、RS232、RS422、RS485的关系 1.1 串口 1.2 UART、TTL、RS232、RS422、RS485 1.3 常见串口标准的比较 …

Apache Arrow 的列式内存格式

Apache Arrow 的列式存储格式是一种内存数据组织标准,它通过物理布局、Array(数组)、Schema(模式)和 RecordBatch(记录批次)等,优化了大数据的存储与处理。这种格式以列而非行来存储…

更改网络ip地址时出现错误怎么办

在日常的网络使用中,‌有时我们需要更改IP地址以满足特定的网络需求,‌然而,‌在更改IP地址的过程中,‌可能会遇到各种错误,‌导致无法成功更改或网络连接出现问题。‌‌而更改网络IP地址时出现错误是由于多种原因导致…

二、基于Vue3的开发-环境搭建【Visual Studio Code】扩展组件

Visual Studio Code中的扩展组件 1、安装的扩展工具2、说明2.1 、代码规范性检查EsLint2.2 、代码语法高亮提示工具Vue - Official2.3 、阿里的AI代码开发提示工具 TONGYI Lingma 1、安装的扩展工具 2、说明 2.1 、代码规范性检查EsLint Visual Studio Code 中【设置】-setti…

基于元神操作系统编程写硬盘扇区

1. 背景 本文介绍了“调用元神操作系统API向硬盘扇区写数据”的程序实现及测试结果。 2. 方法 (1)调用元神操作系统API读硬盘扇区 本部分内容已在前面的文章中进行介绍,详细内容请参考“编写程序调用元神操作系统的API”。 (…

二叉树 - 二叉树的所有路径

257. 二叉树的所有路径 方法一:递归法: /*** Definition for a binary tree node.* function TreeNode(val, left, right) {* this.val (valundefined ? 0 : val)* this.left (leftundefined ? null : left)* this.right (rightundefi…

水下目标检测(低光照目标检测)方法-发表在Patter Recognition,代码已开源

这里写自定义目录标题 前言动机贡献Overview一些实验结果数据集主要实验结果实验结果展示 总结 前言 Hi,各位读者,好久不见!现在我已经从北大博士毕业,成为一名小青椒啦!工作还是需要宣传的。今天想分享我在水下目标检测的工作&a…

低代码技术:快速构建应用的未来

在当今快速发展的数字化时代,企业和个人对软件应用的需求不断增长。然而,传统的软件开发过程通常复杂且耗时。这使得低代码技术(Low-Code Technology)成为了越来越多人关注的焦点。本文将探讨低代码技术的基本概念、优势以及如何在…