LoRA: 大模型快速训练的秘诀

news2024/11/25 12:43:34

本文是四两拨千斤,训练大模型的PEFT方法的最后一小节,感兴趣读者可以阅读完整版。

LoRA

LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS
核心思路是对模型参数做低秩分解,仅训练分解后的参数,模型部署也需额外保存低秩参数,计算时加上低秩参数部分。

LoRA的提出在上述PEFT方法之后,来自微软的研究者认为,现有的Adapter Tuning和Prefix Tuning这两种方法均有缺点:

  • Adapter Layers Introduce Inference Latency:
    虽然Adapter后续又有很多变种,但无论如何额外添加的Adapter层都会拖慢推理速度
  • Directly Optimizing the Prompt is Hard:
    应用Prefix-Finetuning时,直接优化prompt非常困难,而且其效果也不是随着训练参数的增加而单调递增

Aghajanyan等研究者在论文Intrinsic Dimensionality Explains the Effectiveness of Language Model Fine-Tuning提出了关于大模型的一个核心观察点:预训练模型存在一个低秩的“内在维度”(intrinsic dimension)使得其在被随机映射到一个更小的子空间时仍然可以高效学习。基于这种想法,作者假设预训练模型在转换到下游模型过程中也有一个内在维度,提出了下面的方法。

在这里插入图片描述

图中的A,B均为可训练参数,参数A=正态分布,B=0是初始化参数的方法

对于预训练模型权重 W 0 ∈ R d × k W_0 \in \R^{d \times k} W0Rd×k,引入一个低秩部分 Δ W \Delta W ΔW来限制其更新,即: W 0 + Δ W = W 0 + B A W_0 + \Delta W = W_0 + BA W0+ΔW=W0+BA,其中 B ∈ R d × r B\in \R^{d \times r} BRd×r A ∈ R r × k A \in \R^{r \times k} ARr×k,但秩 r ≪ m i n ( d , k ) r \ll min(d,k) rmin(d,k),训练时 W 0 W_0 W0被冻结不参与梯度更新,仅有 A A A B B B为可训练参数,修改后的前向传播可表示为:
h = W 0 x + Δ W x = W 0 x + B A x h=W_0x+\Delta Wx=W_0x + BAx h=W0x+ΔWx=W0x+BAx
这意味着增加的部分 Δ W x \Delta Wx ΔWx和原始部分可以并行计算,没有引入任何推理时延。

总结下来,LoRA拥有以下优点:

  1. A Generalization of Full Fine-tuning
    LoRA是一个更通用的finetuning方法,可以仅训练预训练模型参数的一小部分,它不需要在模型适配过程中累积梯度来更新全秩参数。这意味着当应用在全部权重矩阵和偏差项上应用LoRA更新时,通过设置LoRA的秩 r r r为预训练权重的秩,基本能够还原全量finetuning同等水平的表征能力。换句话讲,随着我们增大 r r r增加可训练参数的数量,使用LoRA方式训练基本可以收敛到训练原始模型。与之形成对比的是,采用adapter的一系列方法仅能收敛到MLP,而基于prefix的方法不能不处理长输入序列。

  2. No Additional Inference Latency
    可以按照 W = W 0 + B A W=W_0 + BA W=W0+BA来存储和执行推理,迁移到其他任务时,可以减去 B A BA BA,再加上新任务的 B ′ A ′ B'A' BA,仅需一个占用少量存储的快捷操作即可迁移到新任务。这保证了和采用构建的finetuning方法相比,单任务及多任务都没有引入额外的推理时延。

作者通过实践发现,LoRA实际产生的最大的益处是节省内存和存储消耗,通过设置 r ≪ d m o d e l r \ll d_{model} rdmodel能够将一个使用Adam训练的大型transformer的VRAM(即显存)占用最大减少 2 / 3 2/3 2/3。具体而言,在GPT-3 175B上,VRAM消耗从1.2TB降低到350GB,在仅采用query和value矩阵映射矩阵的条件下,检查点的大小被降低了10000倍(从350GB到35MB)。假设我们需要100个转化模型,使用LoRA仅需保存 350 G B + 35 M B × 100 ≈ 354 G B 350GB+35MB\times 100 \approx 354GB 350GB+35MB×100354GB大小的空间,而全量Finetuning则需要 100 × 350 G B = 350 T B 100 \times 350GB=350TB 100×350GB=350TB的存储空间。这使得训练需要的GPU数量变少且减少了I/O瓶颈的次数,并且在任务间切换时,仅需在VRAM实时切换LoRA权重而不需要花费大量时间切换全量参数。除此之外,由于不需要计算大多数参数的梯度,训练速度也提升了25%。

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

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

相关文章

SIP业务之BLF

BLF(Busy Lamp Field)是SIP应用中的一项重要业务,用来监视目标号码的状态,常用于调度、坐席监控等场景。 一、 BLF原理 BLF功能需要IP终端或话机与SIP服务器协同实现的,主要流程如下: IP话机向SIP服务器发…

如何使用 ChatGP在TTPU(张量处理单元)上训练模型的指令

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生. ChatGPT 作为您的专家助手 ChatGPT 可以帮助我们学习新的编程语言、课程、技术和技能。它已成为许多寻求改进工作流程或学习新事物的专业人士的首选工具。ChatGPT 专家助手提示可以减…

IntelliJ IDEA安装教程

一、下载安装包 首先进入IDEA官网下载2021.2.1版本的安装包,不要问我为什么不下最新版,后面我会说。 二、安装与配置 打开安装包,安装完成后选择Evaluate for free(免费试用),创建一个项目,进入…

基于单片机空气质量检测二氧化碳 一氧化碳温湿度PM2.5检测系统的设计与实现

功能介绍 以51单片机作为主控系统;对空气空气中有毒有害气体进行监测;使用LCD1602液晶显示,采集到的PM2.5值通过单片机串口传输;通过传感器对室内PM2.5粉尘进行检查;通过按键设置的上限值;当检测到有毒气体…

5.2 基于ROP漏洞挖掘与利用

通常情况下栈溢出可能造成的后果有两种,一类是本地提权另一类则是远程执行任意命令,通常C/C并没有提供智能化检查用户输入是否合法的功能,同时程序编写人员在编写代码时也很难始终检查栈是否会发生溢出,这就给恶意代码的溢出提供了…

网络ping丢包什么原因(附解决方案)

​  数据包丢失是一种网络问题,当通过网络(或设备之间或通过 Internet)传输的数据包在传输过程中丢失或丢弃并且无法到达目的地时,就会发生这种情况。简单来说,数据包丢失是指数据包无法通过互联网从发送者成功传输到接收者。 如何检测数据…

阿里云RockMQ与SpringBoot的整合

前言: 开源版本Rocket和商业版本的RocketMQ有些不同,研究的是商业版本的RocketMQ,阿里云的官方文档,感觉有点乱。看不咋明白,网上虽然有教程,大都还是有点缺少,有时候会突然跳了步骤&#xff0c…

微信小程序开发1

这里写目录标题 一、结构1.项目结构页面结构 3.小程序的通信模型4.小程序运行机制 二、组件视图容器组件 : 一、结构 1.项目结构 页面结构 2.语言结构 WXML与HTML区别 : WXSS与CSS区别 : .Js文件的分类 3.小程序的通信模型 ①他是由渲染层与逻辑层 根据微信客户端进行转…

RPC分布式网络通信框架(三)—— 服务配置中心Zookeeper模块

文章目录 一、使用Zookeeper的意义二、Zookeeper基础1 文件系统2 通知机制3 原生zkclient API存在的问题4 服务配置中心Zookeeper模块 三、Zk类实现Start方法创建节点、get节点值方法 四、框架应用rpc提供端框架rpc调用端(客户端)框架 总结 一、使用Zook…

平均精度 (mAP):常见定义、误区和误解

我们分解并揭开了常见对象检测指标的神秘面纱,包括平均精度 (mAP) 和平均平均召回率 (mAR)。 这篇文章深入介绍了如何正确计算和使用平均平均精度 (mAP) 和平均平均召回率 (mAR) 进行对象检测,同时消除对 AP、mAP 和第三方库(例如 TorchMetrics 或 pycocotools)的常见误解。…

基于冻土水文模拟的松花江流域水资源演变规律

原文信息 题目:基于冻土水文模拟的松花江流域水资源演变规律 作者:刘水清 周祖昊 刘佳嘉 李佳 谢新民 贾仰文 王浩 期刊:《南水北调与水利科技(中英文)》23年1期 摘要 为分析松花江流域水资源的演变规律&#…

基于SpringCloud微服务图书管理系统设计与实现

一、引言 本次设计基于JavaEE和SpringCloud微服务的图书馆管理系统。利用当前计算机技术的快速发展来构建图书馆管理系统。 随着计算机技术和网络的飞速发展,互联网与互联网加的程序应用在世界范围内越来越流行,当今社会正迅速进入信息社会,信息自动化的作用也日益增强。…

MySQL基础篇第7章(单行函数)

文章目录 1、函数的理解1.1 什么是函数1.2 不同DBMS函数的差异1.3 MySQL的内置函数分类 2、数值函数2.1 基本函数2.2 角度与弧度互转函数2.3 三角函数2.4 指数和对数2.5 进制间的转换 3、字符串函数4、日期和时间函数4.1 获取日期、时间4.2 日期与时间戳的转换4.3 获取月份、星…

815. 打印字符串

链接: 链接 题目: 给定一个字符串,请你编写一个函数,void print(char str[]),将这个字符串打印出来。 输入格式 共一行,包含一个字符串。 输出格式 共一行,表示打印出的字符串。 数据范围 1≤字…

STM32 Proteus仿真ili9341 TFT2048小游戏 -0067

STM32 Proteus仿真ili9341 TFT2048小游戏 -0067 Proteus仿真小实验: STM32 Proteus仿真ili9341 TFT2048小游戏 -0067 功能: 硬件组成:STM32F103R6单片机 ili9341 TFT显示器上下左右方向键赢了按键输了按键 1.标准2048经典游戏玩法&#…

LayUI之动态选项卡Tabiframe使用

目录 一.LayUI之动态选项卡 1.什么是LayUI之选项卡? 1.2layui选项卡使用语法 2. 在企业中LayUI选项卡的使用 二.将layui选项卡部署在web项目中 1.首先查看layui官方文档 2.加入Jsp 3.加入数据,并进行bug修复 3.1首先在我们的二级菜单添加一个点击…

GPT-4的详细信息已经泄露

这位作者说GPT-4的详细信息已经泄露,不知道可信度如何。一些关键信息:- GPT-4的大小是GPT-3的10倍以上。我们认为它在120层中总共有大约1.8万亿个参数。- GPT-4是多个专家模型混合在一起,但不是之前说的8个专家,而是16个。研究人员…

Linux获取文件夹下的所有文件名称

用shell脚本的方式实现 新建脚本文件 fapiao.sh [rootiZbp1bjm0o6frv1c7pp8uaZ home]# vim fapiao.sh编写脚本内容 #!/bin/bash# path文件夹路径 path/home/发票文件 #列出文件名 files$(ls $path)for filename in $files do#将文件名打印至filename.txt 或者路径文件 /hom…

Java找实习经历

Java实习 我开始找实习的时间是2023.7.7,第一个面试是2023.7.11,话不多说,先上图 boss 沟通了300个投递简历也就18份,也就说差不多有20个回复了我,其中约面试的又很少 51job 申请了65份,其中查看的大概10…

《数学模型(第五版)》学习笔记(1) 第1章 建立数学模型 第2章 初等模型

参考数学建模论坛《数学模型(第三版)》学习笔记 http://www.madio.net/thread-146480-1-1.html 参考视频 数模视频(姜启源、谢金星) https://www.bilibili.com/video/BV1VJ411w7r3/?spm_id_from333.788.recommend_more_video.0&vd_source3ef6540f84…