LoRA微调系列笔记

系列文章目录

第一章:LoRA微调系列笔记
第二章:Llama系列关键知识总结
第三章:LLaVA模型讲解与总结


文章目录

  • 系列文章目录
  • LoRA:Low-Rank Adaptation of Large Language Models
    • 目的:
    • 依据:
    • 优势:
    • 方法
  • QLoRA: Efficient Finetuning of Quantized LLMs
    • 摘要:
    • 重点
    • QLoRA Finetuning
    • 4-bit NormalFloat Quantization
  • 引用


LoRA:Low-Rank Adaptation of Large Language Models

目的:

自然语言处理的一个重要范例是对一般领域数据进行大规模预训练pre-train,并经过微调(fine-tuning)适应特定的任务或领域。当我们fine-tuning较大的模型时,fine-tuning所有模型参数的完全微调变得不太可行。以GPT-3 175B为例,部署独立的微调模型实例,每个实例都有175B参数,这是非常昂贵的。我们提出了低秩自适应(Low-Rank Adaptation, LoRA),它冻结了预训练的模型权重,并将可训练的秩分解矩阵注入到Transformer架构的每一层,从而大大减少了下游任务的可训练参数的数量。与经过Adam微调的GPT-3 175B相比,LoRA可以将可训练参数的数量减少10,000倍,GPU内存需求减少3倍。

依据:

研究发现,pre-train得到的大模型往往存在过度参数化现象,即模型的权重矩阵的秩不是满秩的,且一般都较低,因此我们假设在fine-tuning过程中权重变化也具有较低的秩,从而提出了低秩适应(low - rank adaptation, LoRA)方法。LoRA允许我们通过优化密集层在适应过程中变化的秩分解矩阵来间接训练神经网络中的一些密集层,同时保持预训练的权值不变。

优势:

在这里插入图片描述

  1. 预先训练的模型可以共享,并用于为不同的任务构建许多小型LoRA模块。我们冻结共享模型,并通过替换图1中的矩阵A和B来fine-tuning模型实现有效地任务切换,从而显著降低存储需求和任务切换开销

  2. 当使用自适应优化器时,LoRA使训练更有效,并将硬件进入门槛降低了3倍,因为我们不需要计算梯度或维护大多数参数的优化器状态。相反,我们只优化注入的小得多的低秩矩阵。

  3. 我们简单的线性设计允许我们在部署时将可训练矩阵与冻结权重合并,通过构造与完全微调的模型相比,不会引入推理延迟

  4. LoRA与许多先前的方法正交,并且可以与其中的许多方法组合,例如前缀调优(prefix-tuning)。

方法

在适应特定任务时,研究表明,预训练的语言模型具有较低的“内在维度”(instrisic dimension),尽管随机投射到较小的子空间,但仍然可以有效地学习。对于预训练的权重矩阵 W 0 ∈ R d × k W_0\in\mathbb{R}^{d\times k} W0Rd×k,我们通过用低秩分解(low-rank decomposition)表示来约束其更新,
W 0 + Δ W = W 0 + B A {{W}_{0}}+\Delta W={{W}_{0}}+BA W0+ΔW=W0+BA
其中 B ∈ R d × r B\in\mathbb{R}^{d\times r} BRd×r , A ∈ R r × k A\in\mathbb{R}^{r\times k} ARr×k,秩 r ≪ m i n ( d , k ) r\ll \ min (d,k) r min(d,k),在训练期间, W 0 W_0 W0被冻结,不接收梯度更新,而 A A A B B B包含可训练参数。注意, W 0 W_0 W0 ∆ W = B A ∆W = BA W=BA都用相同的输入相乘,它们各自的输出向量按坐标求和。当 h = W 0 x h = {W_0} x h=W0x时,修正后的正向传播表示为:
h = W 0 x + Δ W x = W 0 x + B A x h={{W}_{0}}x+\Delta Wx={{W}_{0}}x+BAx h=W0x+ΔWx=W0x+BAx
我们在图1中说明了我们的重新参数化。我们对 A A A使用随机高斯初始化,对 B B B使用零初始化,因此 ∆ W = B A ∆W = BA W=BA在训练开始时为零。然后,我们将 ∆ W x ∆Wx Wx α / r α/r α/r进行缩放(scale),其中 α α α r r r中的常数。当使用Adam进行优化时,如果我们适当地缩放初始化,则调整 α α α与调整学习率大致相同。因此,我们简单地将 α α α设置为我们尝试的第一个 r r r,而不调整它。当我们改变 r r r时,这种缩放有助于减少重新调整超参数的需要。

QLoRA: Efficient Finetuning of Quantized LLMs

摘要:

QLoRA是一种有效的微调方法,它减少了内存使用,足以在单个48GB GPU上微调65B参数模型,同时保留完整的16位微调任务的性能。QLORA通过冻结的4位量化预训练语言模型将梯度反向传播到低秩适配器(Low Rank Adapters, LoRA)QLoRA推出了许多创新,在不牺牲性能的情况下节省内存:

  1. 4-bit NormalFloat (NF4),一种新的数据类型,它是正态分布权重的信息理论上最优的;
  2. Double Quantization(双量化)通过量化量化常量来减少平均内存占用
  3. Paged Optimizers 用分页优化器管理显存峰值

重点

虽然最近的量化方法可以减少llm的内存占用,但这些技术仅适用于推理,不适应于训练期间。我们首次证明了在没有任何性能下降的情况下微调量化4-bit模型是可能的。我们的方法QLoRA将预训练模型量化到4位,然后添加一组可学习的Low-rank Adapter权重,这些权重通过量化权重的反向传播梯度进行调整。
关键: 4-bit NormalFloat:一种信息理论上最优的正态分布数据量化数据类型,比4位整数和4位浮点数产生更好的经验结果。

QLoRA Finetuning

QLoRA通过提出的4-bit NormalFloat(NF4)量化和双量化两种技术实现了高保真的4-bit 微调。此外,我们引入了分页优化器,以防止梯度检查点期间的内存峰值导致内存不足错误,这些错误通常会使大型模型难以在单个机器上进行微调。

QLoRA有一种低精度存储数据类型,在我们的例子中通常是4-bit,还有一种计算数据类型通常是BFloat16。在实践中,这意味着每当使用QLoRA权重张量时,我们将张量反量化为BFloat16,然后执行16位矩阵乘法。

4-bit NormalFloat Quantization

TODO

引用

Modest Understandings on LLM
LoRA及其变体概述:LoRA, DoRA, AdaLoRA, Delta-LoRA

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

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

相关文章

在K8S中,节点状态哪个组件负责上报?

在Kubernetes中,节点状态是kubelet组件负责定期上报的。Kubelet是运行在每个节点上的代理程序,它与Kubernetes Master节点上的控制面板组件紧密协作,以确保节点上的Pod能够正确运行。 kubelet的主要职责之一就是:与Kubernetes API…

SRS 服务器入门:实时流媒体传输的理想选择

在当今视频流媒体需求爆炸式增长的时代,如何选择一款高效、稳定且功能强大的流媒体服务器成为了许多开发者和企业关注的焦点。而 SRS(Simple Realtime Server)作为一款开源的流媒体服务器,以其卓越的性能和灵活的功能,…

C++第五六单元测试

1【单选题】在公有派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员一定是基类中的( C )。(2.0分) A、公有成员B、保护成员C、私有成员D、保护成员或私有成员 注意从类外访问与从派生类中访问 2【单…

JPA查询部分字段的最佳实践

最近在接手一个项目,用的是JPA,以前没使用过。在开发新的需求过程中,发现有查询部分字段的情况,网上逛了半天,发现都是抄来抄去的“古文”。于是用英文搜索了下,总结了以下几点。 版本信息:Spr…

Spring Boot + Redisson 封装分布式锁

目标&#xff1a;一行代码调用&#xff0c;简单粗暴。 基操&#xff1a;自动加锁&#xff0c;自动解锁&#xff0c;自动处理异常&#xff0c;自动处理锁超时等。 安装 redis redisson <dependency><groupId>org.springframework.boot</groupId><artifac…

使用Python可视化有压缩格式的Bitmap(BMP)图像调色板数据

使用Python可视化有压缩格式的Bitmap BMP图像调色板数据 参考文章一、调色板数据二、测试代码三、测试结果 参考文章 有压缩格式的Bitmap(BMP)图像显示调色板数据和图像数据Bitmap(BMP)图像信息分析主要说明带压缩的形式Bitmap(BMP)图像信息验证 一、调色板数据 Color Palette…

「Mac畅玩鸿蒙与硬件49」UI互动应用篇26 - 数字填色游戏

本篇教程将带你实现一个数字填色小游戏&#xff0c;通过简单的交互逻辑&#xff0c;学习如何使用鸿蒙开发组件创建趣味性强的应用。 关键词 UI互动应用数字填色动态交互逻辑判断游戏开发 一、功能说明 数字填色小游戏包含以下功能&#xff1a; 数字选择&#xff1a;用户点击…

Day62 图论part11

Floyd 算法精讲 Floyd 算法代码很简单&#xff0c;但真正理解起原理 还是需要花点功夫&#xff0c;大家在看代码的时候&#xff0c;会发现 Floyd 的代码很简单&#xff0c;甚至看一眼就背下来了&#xff0c;但我为了讲清楚原理&#xff0c;本篇还是花了大篇幅来讲解。 代码随想…

html+css+js网页设计 美食 美食家6个页面

htmlcssjs网页设计 美食 美食家6个页面 网页作品代码简单&#xff0c;可使用任意HTML辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&#xff09;。 获取源码 1&#xf…

21. 【.NET 8 实战--孢子记账--从单体到微服务】--简易权限--补充--自动添加角色可访问接口

上一篇文章我们一起编写了自动添加接口地址&#xff0c;这一篇文章我们补充简易权限中的自动添加角色可访问接口。 一 实现 首先&#xff0c;我们Initialization文件夹下新建AddRolePath类&#xff0c;这个类用于初始化数据库中SysRoleUrl表&#xff0c;代码如下&#xff1a;…

标准库以及HAL库——按键控制LED灯代码

按键控制LED本质还是控制GPIO,和点亮一个LED灯没什么区别 点亮一个LED灯&#xff1a;是直接控制输出引脚&#xff0c;GPIO初始化推挽输出即可 按键控制LED&#xff1a;是按键输入信号从而控制输出引脚&#xff0c;GPIO初始化推挽输出一个引脚以外还得加一个GPIO上拉输入 但是…

关于Camunda工作流的使用后的记录

服务器机器2台&#xff0c;8u32G 服务器负载长期极低,近30日监控数据&#xff0c;CPU 1分钟负载高峰时不到0.2 数据库机器单台&#xff0c;4u16G 数据库总连接数&#xff1a;最大值47&#xff0c;最小值16 CPU使用率&#xff1a;最大值25.7%&#xff0c;最小值6% IOPS(单位时间…

Java的list中状态属性相同返回true的实现方案

文章目录 项目背景方案一、for循环实现实现思路 方案二、stream实现实现思路 项目背景 在项目中会遇到list中多个状态判断&#xff0c;状态值相等时&#xff0c;总体返回为true。 方案一、for循环实现 实现思路 遍历list&#xff0c;当出现不一致时&#xff0c;直接跳出循环…

模型选择+过拟合欠拟合

训练误差和泛化误差 训练误差&#xff1a;模型在训练数据上的误差 泛化误差&#xff1a;模型在新数据上的误差 验证数据集&#xff1a;一个用来评估模型好坏的数据集 例如拿出50%的数据作为训练 测试数据集&#xff1a;只能用一次 K则交叉验证 在没有足够数据时使用 算法…

Web安全攻防入门教程——hvv行动详解

Web安全攻防入门教程 Web安全攻防是指在Web应用程序的开发、部署和运行过程中&#xff0c;保护Web应用免受攻击和恶意行为的技术与策略。这个领域不仅涉及防御措施的实现&#xff0c;还包括通过渗透测试、漏洞挖掘和模拟攻击来识别潜在的安全问题。 本教程将带你入门Web安全攻防…

Qt仿音乐播放器:QFileDialog添加本地文件

一、套路 QFileDialog fileDialog(this);// 创建对话框&#xff0c;并设置父元素&#xff1b;fileDialog.setWindowTitle("添加本地下载的音乐");//设置窗口标题//设置文件对话框的默认打开路径 QString projectPathQDir::currentPath();//获取当前目录 QDir dir(pr…

语音识别基础算法——动态时间规整算法

前言 动态时间规整算法&#xff0c;Dynamic Time Wraping&#xff0c;缩写为DTW&#xff0c;是语音识别领域的一个基础算法。 算法的提出 DTW 的提出是为了解决或尽量解决在语音识别当中的孤立词识别不正确的问题。该问题简单描述为&#xff1a;在识别阶段&#xff0c;将输入…

SAP SD信贷管理信用管理手册(下)

1、项目类别的信贷激活 图1-12-1.项目类别的信贷设置路径 图1-12-2.项目类别的信贷参数激活 说明&#xff1a;项目类别是否进行信贷管理设置。 2、定义信贷组 图1-13-1.定义信贷组路径 图1-13-2.信贷组定义 说明&#xff1a;信贷组参与后续信贷控制的组合分配。 3、销售凭证及…

分布式项目___某污水处理项目

一.分布式项目___污水处理项目 项目地址:https://gitee.com/yanyigege/collaborative-water-springboot.git ​ 1.项目背景 总公司在全国各地有处理污水的项目部,各项目部处理自己的污水,总部需要监控各地分项目部每天处理污水的原料用量,掌握各分部的污水处理情况 ​ 2.功…

网页排名:PageRank 算法的前世今生

PageRank算法全解析&#xff1a;从理论到实践 引言 PageRank 是由拉里佩奇&#xff08;Larry Page&#xff09;和谢尔盖布林&#xff08;Sergey Brin&#xff09;在1996年发明的一种链接分析算法&#xff0c;最初用于Google搜索引擎来评估网页的重要性。该算法通过模拟随机浏览…