高效训练超越LoRA,北航发布MoRA

什么!LoRA我都没有学懂,又出现了MoRA???

LoRA作为当下最火热的大语言模型参数高效微调技术,正在以前所未有的速度迭代更新。从最初的LoRA到陆续推出的LoRA+、DoRA、AsyLoRA等变体,LoRA家族可谓是人才辈出,百花齐放。而就在这百家争鸣之际,微软的科研团队再次抛出重磅炸弹——MoRA,颠覆性地突破了LoRA的低秩更新瓶颈。

与之前的LoRA变体不同,MoRA别出心裁地采用方阵进行高阶参数更新,在保持参数量不变的前提下,极大地提升了参数更新的自由度。这一革命性的设计理念,不仅为大模型参数高效微调开辟了全新的思路,更在指令微调、数学推理、持续预训练等任务上展现出非凡的潜力。MoRA的横空出世,标志着大模型参数高效微调技术正在进入一个全新的发展阶段。

3.5研究测试:
hujiaoai.cn
4研究测试:
askmanyai.cn
Claude-3研究测试:
hiclaude3.com

稍安勿躁,本文将带您深入解析MoRA的核心原理,揭示其独特的技术优势,并通过与LoRA等变体的全面对比,展现MoRA在各类任务上的优异表现。

论文题目:
MoRA: High-Rank Updating for Parameter-Efficient Fine-Tuning

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

LoRA的低秩"魔咒"与破局之机

LoRA之所以备受青睐,关键在于它独特的低秩分解机制。通过引入低秩矩阵对原权重矩阵进行近似,LoRA在极小的参数量下就能实现令人惊喜的微调效果。然而,正是这个让LoRA一炮而红的低秩设计,也成为了制约其进一步发展的"诅咒"。研究表明,过低的秩会严重限制模型学习和记忆新知识的能力,尤其在需要获取大量领域知识的任务上,例如持续预训练等。

为了冲破低秩的桎梏,许多LoRA变体如雨后春笋般涌现。它们或提高秩的上限,或优化训练策略,力图在低秩的框架下寻求突破。然而无论如何变化,它们始终难以摆脱"低秩"的烙印。看来要彻底打破LoRA的瓶颈,还需要一些"高阶"的创新。

MoRA方法详解:高阶更新范式的革新之路

MoRA的核心创新在于采用高阶方阵替代LoRA的低秩矩阵,并引入巧妙的压缩解压算子,实现参数更新的高效和灵活。下面我们来详细解读MoRA的技术细节。

秩的大幅度提升

MoRA的关键在于使用方阵M取代LoRA的低秩矩阵A和B,从而将参数更新的秩从提升到。如上图所示,假设原权重矩阵W的维度为d×k,LoRA的参数量为(d+k)r,则MoRA的方阵M维度为,其中。

这一设计使得MoRA的更新自由度较LoRA实现了质的飞跃。以d=4096, k=4096为例,当r=8时,LoRA的秩至多为8,而MoRA的秩可达256。高阶方阵赋予了MoRA更强大的表达能力和更新灵活性。

为了适应方阵运算,MoRA引入了压缩算子和解压缩算子。它们的作用是调整输入输出的维度,使之与方阵M匹配。具体而言:

  1. : 将输入的维度从k压缩至

  2. : 将中间结果的维度从提升至

在文章中,MoRA设计了多种压缩解压方案,包括:

  1. 截断:直接截取部分维度

  2. 共享:将多个维度合并,共享同一个值

  3. 解耦:将输入reshape为矩阵,然后与M做矩阵乘法

  4. 旋转:在解耦的基础上引入旋转矩阵,增强表达能力

下面以解耦为例,说明压缩解压的具体过程。先将x从 reshape为,其中。经过方阵M变换后,再将结果从还原为。整个过程可以表示为:

旋转方案在此基础上,借鉴RoPE的思想,在压缩时引入旋转矩阵,将不同的与不同的做交互,增强方阵对不同输入的表达能力:

压缩解压算子不仅使高阶方阵运算成为可能,而且能根据具体任务灵活调整。它们是MoRA实现高效参数更新的关键"利器"。

MoRA的实验验证

为了全面评估MoRA的性能,研究者在记忆任务、三大微调场景以及从头训练等多个方面,对MoRA进行了全方位的实验验证。下面我们一起来看看,MoRA究竟有何过人之处。

记忆任务:MoRA展现卓越学习能力

研究者首先设计了UUID配对的任务,以考察MoRA在记忆新知识方面的表现。实验要求模型根据输入的UUID,准确生成与之配对的UUID。这一任务相当于一个问答任务,但模型需要的知识完全来自训练数据,而非自身已有的知识。

实验使用LLaMA-7B作为底座模型,并探索了不同秩下LoRA和MoRA的表现。如下图所示,MoRA展现了压倒性的优势:当秩为256时,MoRA仅需500步就能完全记住1万对UUID,而LoRA却始终难以收敛。这充分证实了高阶更新在记忆任务上的显著优势。

通过对比不同秩的结果,还可以发现LoRA即使在秩较大如256时,其记忆能力也难以望MoRA项背。而MoRA在秩为256时,就已经能媲美全参数微调(Full Fine-Tuning, FFT)的效果了。高阶更新让MoRA在知识学习和记忆上出类拔萃,堪称"学霸"!

三大微调场景:"战绩彪炳"的MoRA

为进一步检验MoRA的全面性,研究者选取了指令微调、数学推理和持续预训练三大典型场景,让MoRA与LoRA和FFT同台竞技。结果下表所示,MoRA的表现令人印象深刻:

  • 在指令微调上,MoRA与LoRA表现相当,且在秩较小如r=8时更胜一筹。

  • 在数学推理上,MoRA在GSM8K数据集上再次力压群雄。

  • 最引人瞩目的是持续预训练,MoRA在生物医学和金融领域远超LoRA。

而当秩提升到256时,MoRA在数学推理上更是逼近了FFT的性能。这些优异的成绩,无不得益于MoRA强大的知识获取和记忆能力。在三大场景的激烈角逐中,MoRA交出了一份闪亮的"成绩单",展现了高阶更新范式的巨大潜力。

从头训练:MoRA的全面成长与突破

作为一种新范式,MoRA还需要经受从零开始训练的考验。研究者以不同规模(250M和1.3B)的Transformer模型为对象,在大规模语料C4上对比了LoRA和MoRA的训练效果。此外,作者还将ReLoRA技术用于LoRA和MoRA,以进一步提升性能。

如下图loss曲线所示所示,无论是在250M还是1.3B的模型规模下,MoRA始终以更低的训练损失和更优的收敛速度领先于LoRA。当与ReLoRA结合后,MoRA(ReMoRA)的优势进一步扩大,取得了最优的性能。这表明MoRA作为一种通用的参数高效训练范式,能够在从头训练中稳定地实现性能提升。高阶更新让MoRA在训练的道路上越走越远,展现出惊人的成长潜力。

通过在记忆任务、三大微调场景和从头训练等多个维度的实验验证,MoRA展现出了全面领先的性能优势。高阶更新不仅让MoRA在知识学习和记忆方面出类拔萃,在各类下游任务的适应上也游刃有余,更在从零开始的训练中展现了惊人的成长潜力。实验结果有力地支撑了MoRA作为一种全新参数高效训练范式的有效性和先进性。

总结与展望

MoRA以高阶方阵为武器,破解了LoRA低秩更新的"紧箍咒",在知识学习、记忆任务、各类微调场景乃至从零训练中大放异彩,开创了大模型参数高效微调的全新范式。但这仅仅是MoRA征程的起点,未来它还将不断进化,与更多前沿技术携手进一步挖掘大模型的潜力。数据增强、提示优化等,都有望成为MoRA的得力助手。在MoRA的带动下,大模型高效训练必将迎来百花齐放的新春,为AI的发展注入源源不断的活力。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深入探究 threejs 中的材质与纹理应用

深入探究 threejs 中的材质与纹理应用 一、引言 在三维图形开发领域,Three.js 是一个强大而受欢迎的库。其中,材质与纹理的应用对于创建逼真和吸引人的三维场景起着至关重要的作用。通过对材质和纹理的巧妙运用,可以极大地增强模型的视觉效…

C# WinForm —— 26 ImageList 介绍

1. 简介 图片集合,用于存储图像的资源,并在关联控件中显示出来 可以通过 索引、键名 访问每张图片 没有事件 2. 属性 属性解释(Name)控件ID,在代码里引用的时候会用到,一般以 imgList 开头ClolorDepth用于呈现图像的颜色数,默…

【开源】Wordpress自定义鼠标样式插件

插件简介 使用此插件可一键自定义Wordpress前端鼠标指针样式。利用该插件,站长可以快速实现替换多种鼠标指针样式于网站前端。 鼠标图案均来自于网络,插件仅作收集整理,插件完全开源无任何商业性质。 插件截图 使用教程 下载插件文件 下载…

Mybatis第一讲——你会Mybatis吗?

文章目录 什么是MybatisMybatis的作用是什么 Mybatis 怎么使用注解的方式注解的多种使用Options注解ResultType注解 XML的方式update标签 #{} 和 ${}符号的区别#{}占位${}占位 ${}占位的危险性(SQL注入)数据库连接池 什么是Mybatis 首先什么是Mybatis呢?Mybatis是一…

Ps:调整画笔工具

调整画笔工具 Adjustment Brush Tool可以将选区、创建蒙版和应用调整的传统工作流程合并为一个步骤,简化了对图像进行非破坏性局部调整的操作。 快捷键:B 调整画笔工具是 Photoshop 2024 年 5 月版(25.9 版)新增的工具。 ◆ ◆ …

Stable Diffusion生成图片的参数查看与抹除方法

前几天分享了几张Stable Diffusion生成的艺术二维码,有同学反映不知道怎么查看图片的参数信息,还有的同学问怎么保护自己的图片生成参数不会泄露,这篇文章就来专门分享如何查看和抹除图片的参数。 查看图片的生成参数 1、打开Stable Diffus…

Redis常用命令——List篇

提到List,我们第一时间想到的就是链表。但是在Redis中,List更像是一种双端队列,例如C中的deque。它可以快速高效的对头部和尾部进行插入和删除操作。本片文章主要对List列表的相关命令进行详解,希望本篇文章会对你有所帮助。 文章…

vscode常用插件及插件安装方式

一、常用插件 Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code 说明:中文语言包扩展(简体) open in browser 说明:可以在默认浏览器或应用程序中打开当前文件 Auto Rename Tag 说明:自动重…

pyqt 进度条QProgressBar

pyqt 进度条 QProgressBar效果代码 QProgressBar 在 PyQt 应用程序中,进度条(通常称为 QProgressBar)是一个用于显示任务进度的控件。它可以显示一个水平或垂直的条形图,条形图的长度会随着进度的增加而增加。 QProgressBar 的主…

C语言---文件操作

【C语言详解】——文件操作&#xff08;建议收藏&#xff09;_c语言 写文件原理-CSDN博客 一、文件的读取 # define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<errno.h> #include<string.h>int main() {FILE * pffopen("C:\\Users\\zhw\\De…

【电路笔记】-带阻滤波器

带阻滤波器 文章目录 带阻滤波器1、概述2、典型带阻滤波器配置3、带阻滤波器示例14、陷波滤波器5、带阻滤波器示例26、总结带阻滤波器也称为陷波滤波器,阻止并拒绝位于其两个截止频率点之间的频率,并传递该范围两侧的所有这些频率。 1、概述 通过将基本 RC 低通滤波器与 RC …

Python自动实时查询预约网站的剩余名额并在有余额时发邮件提示

本文介绍基于Python语言&#xff0c;自动、定时监测某体检预约网站中指定日期的体检余额&#xff0c;并在有体检余额时自动给自己发送邮件提醒的方法。 来到春招末期&#xff0c;很多单位进入了体检流程。其中&#xff0c;银行&#xff08;尤其是四大行&#xff09;喜欢“海检”…

springboot基础及上传组件封装

简介 本文主要以文件上传为demo&#xff0c;介绍了一些 springboot web 开发的入门的技术栈。 对应刚接触 springboot 的可以参考下。 主要包括文件md5比对、生成图片缩略图、数据库迁移、文件记录持久化、请求全局异常处理等功能。 准备工作 在 idea 中创建项目&#xff…

十大排序 —— 快速排序

十大排序 —— 快速排序 快速排序一些坑快速排序的性能优点&#xff1a;缺点&#xff1a;性能优化&#xff1a; 我们今天来看看十大排序中很出名的一个算法——快速排序&#xff1a; 快速排序 快速排序&#xff08;Quick Sort&#xff09;是一种经典的、高效的排序算法&#…

centos8stream 编译安装 php-rabbit-mq模块

官方GitHub&#xff1a;https://github.com/php-amqp/php-amqp 环境依赖安装 dnf install cmake make -y 1.安装rabbitmq-c cd /usr/local/src/ wget https://github.com/alanxz/rabbitmq-c/archive/refs/tags/v0.14.0.tar.gz tar xvf v0.14.0.tar.gz cd rabbitmq-c-0.14.0/…

Linux下多线程的相关概念

&#x1f916;个人主页&#xff1a;晚风相伴-CSDN博客 &#x1f496;如果觉得内容对你有帮助的话&#xff0c;还请给博主一键三连&#xff08;点赞&#x1f49c;、收藏&#x1f9e1;、关注&#x1f49a;&#xff09;吧 &#x1f64f;如果内容有误或者有写的不好的地方的话&…

php反序列化入门

一&#xff0c;php面向对象。 1.面向对象&#xff1a; 以“对象”伪中心的编程思想&#xff0c;把要解决的问题分解成对象&#xff0c;简单理解为套用模版&#xff0c;注重结果。 2.面向过程&#xff1a; 以“整体事件”为中心的编程思想&#xff0c;把解决问题的步骤分析出…

实时监控电脑屏幕的软件是什么?三款超受欢迎的电脑监控软件

实时监控电脑屏幕的软件在现代企业管理中扮演着至关重要的角色&#xff0c;它们不仅帮助管理者实时监控员工的工作状态&#xff0c;提高工作效率&#xff0c;还通过数据分析和报告功能&#xff0c;为企业提供了优化管理流程和决策支持的依据。以下将介绍几款市面上广泛使用的实…

Redis过期策略数据淘汰策略

过期策略 一、设置过期时间 redis有四种命令可以用于设置键的生存时间和过期时间&#xff1a; EXPIRE : 将键的生存时间设为 ttl 秒 PEXPIRE :将键的生存时间设为 ttl 毫秒 EXPIREAT :将键的过期时间设为 timestamp 所指定的秒数时间戳 PEXPIREAT : 将键的过期时间设为 times…

GNU Radio创建qt time plot python OOT块

文章目录 前言一、创建自定义的 OOT 块1、安装相应依赖2、创建 OOT 块3、修改相关4、编译及安装 OOT 块 二、测试1、grc 图2、运行结果 三、资源自取 前言 官方提供的绘制时域波形的 block 名字叫做 QT GUI Time Sink&#xff0c;其底层实现是用 C 写的&#xff0c;但是我发现…