首页 > 其他分享 >一文读懂LoRA/DoRA/MoRA

一文读懂LoRA/DoRA/MoRA

时间:2024-07-19 18:54:23浏览次数:14  
标签:4096 训练 模型 矩阵 DoRA 参数 MoRA LoRA

        Microsoft于2021年推出的LoRA是一种经济型微调模型参数的方法。现在大模型的参数规模动不动都在10亿级别以上,微调大模型(微调这里代表着SFT,例如读者将某个大模型拿到自身领域,想使用自身领域的知识再次训练和精校大模型,就属于模型微调的领域。)的全面微调模式下,需要调整所有的参数,因此所需要的资源和时间巨大。

        LoRA提出了一种微训练模型的新方法,在冻结大部分的模型参数之余,仅仅更新额外的部分参数。同时它的性能与“微调大模型的全部参数”相似,但是能够将训练参数的数量减少了10,000倍,GPU内存需求减少了3倍。这以为着在消费级的GPU也可以运行这种计算和内存效率更高的新方法。

1.LoRA

        在学习完“神经网络与矩阵”的时候,读者都可以知道神经网络都可以用矩阵来表示。LoRA 假设微调期间的权重更新可以很好地近似于低秩矩阵。LoRA不会更新全权重矩阵W,而是将更新分解为两个较小的矩阵A和B。

        上图左侧为原始论文的配图,右图为另外的视角。举个例子,若原始权重W为d*k的格式,那么一共存在4096(d)×4096(k)=16,777,216个参数。

        这时候LoRA使用A(d*r)和B(r*k)来代表权重更新,因为A和B的矩阵相乘也是d*k维度的。假设r为8,则LoRA需要更新的权重参数为4096×8+ 8×4096 =65,536个参数。<一下子要更新的模型参数下降了N倍!>

        具体的训练过程是这样的,将原来的矩阵参数固定,然后利用新的数据继续训练大模型,而这个训练过程仅仅更新A和B矩阵。在推理使用的时候,将原来的矩阵W和(A*B)相加。下图为可视化版本:

        r如何选择,什么的数值是合理的?原始的论文在某些模型上给出了实验的结果,一般而言都是r=4或者r=8,当然这个超参数还是需要具体场景具体分析。

图片

        从先期的实验数据而言,LoRA的效果还是不错的。然而LoRA最主要的问题在于矩阵被投影到更小的维度上,因此在此过程中肯定会丢失一些信息。

图片

在各种方法和基础模型中,LoRA在减少训练参数和性能保障之间的确表现优异。

        伴随着量化技术,可以将量化引入LoRA,因此诞生了QLoRA。例如神经网络的权重存储为32位浮点数(FP32)。量化可以将其转换为较低精度的点,例如16位或者8位(UINT-8或INT8)。

2.DoRA

        权重分解低秩适应 (DoRA) 将预先训练的权重分解为两个分量:幅度和方向。如下图所示,原来参数矩阵W的维度依旧是d*k,新增了一个幅度向量m(1*k)。

        上图绿色部分为需要被训练,而蓝色部分的参数表示在微调训练中是被冻结的。DoRA在训练A和B矩阵的时候,还是利用了LoRA的办法。然而新增了幅度M向量。

可以将矩阵的每列都看成向量,每列的权重矩阵都可以用大小和方向表示。例如可以将[2.0, 3.0]分解为0.5*[4, 6]。在进行完全微调时,梯度更新只是改变了列向量的方向,而幅度却保持几乎恒定。

        下图为可视化的过程:

        DoRA将列向量分解为2个分量可以更加灵活地更新方向分量,这更接近于完全微调。

3.MoRA

        MoRA 的概念类似于 LoRA,但不是将权重矩阵分解为更小的维度,而是将其分解为小的方形矩阵。

        例如,如果原始权重层具有4096×4096~= 16M参数,则r=8的LoRA具有4096×8 + 8×4096=65,536参数。使用MoRA可以将维度减小到r=256,即256×256=65,536。在这两种情况下,需要训练和更新的参数是相同的,然而研究人员声称与LoRA相比具有更高的学习代表性。

        根据这篇2024年5月的论文,LoRA的局限性之一是无法记住大量数据。“对于LoRA观察到的这种限制,一个合理的解释可能是它对低秩更新的依赖。低秩更新矩阵 ∆W ,很难估计FFT中的全秩更新,尤其是在需要记忆特定领域知识的持续预训练等内存密集型任务中。

        为了论证这个观点,研究人员研究了LoRA和FFT在通过微调记忆新知识方面的差异。为了避免利用 LLM 的原始知识,研究人员随机生成10K对通用唯一标识符 (UUID),每对包含两个具有32个十六进制值的UUID。该任务要求LLM根据输入的UUID生成相应的UUID。例如,给定一个UUID,比如“205f3777-52b6-4270-9f67-c5125867d358”,模型应该根据10K个训练对生成相应的UUID。这个任务也可以看作是一个问答任务,而完成它所必需的知识完全来自训练数据集,而不是LLM本身。

图片

怎么说呢,小编认为还是需要再实战中多做检验。下图为完整的可视化过程。

 

标签:4096,训练,模型,矩阵,DoRA,参数,MoRA,LoRA
From: https://blog.csdn.net/u012374012/article/details/140431661

相关文章

  • 论文《AdaLoRA: Adaptive Budget Allocation for Parameter-Efficient Fine-Tuning》
    在大模型微调的理论中,AdaLoRA方法是一个绕不开的部分。 这篇论文主要提出了一种新的自适应预算分配方法AdaLoRA,用于提高参数高效的微调性能。AdaLoRA方法有效地解决了现有参数高效微调方法在预算分配上的不足,提高了在资源有限情况下的模型性能,为NLP领域的实际应用提供了新的......
  • 超长上下文扩展:LongLoRA & LongQLoRA
    学习链接https://blog.csdn.net/v_JULY_v/article/details/135375799目录从LongLoRA到LongQLoRA(含源码剖析):超长上下文大模型的高效微调方法第一部分LongLora:超长上下文大模型的高效微调方法1.1从PI、LoRA到LongLora1.1.1面对长文本:PI和LoRA在各自角度上的不足1.1.2LongLor......
  • LoRA微调中文版Llama3模型
    文章目录概要整体微调流程疑难问题有哪些小结概要LoRA(Low-RankAdaptation)是一种微调大模型的方法,通过引入低秩矩阵来减少参数量和计算复杂度,主要应用于大型预训练语言模型的微调过程。本文章讲解的是使用LoRA技术微调Llama3中文版模型。实验环境为kaggle、GPU环境......
  • 全网最全,保姆级Stable Diffusion系列入门使用教程(图生图、LoRA、提示词权重),建议收藏!
    大家好,我是画画的小强今天将给大家讲解StableDiffusion入门使用教程的图生图、LoRA和提示词权重的教程,如果你还没有使用或者安装SD,那么可以看看我的往期入门教程AI绘画『StableDiffusion』面向小白的免费AI绘画工具:解压即用,无需安装,超全教程!1、什么是LoRALoRA通常称......
  • Ubuntu 22.04.4 LTS 安装 FreeRADIUS 3.0 和 Daloradius 2.2 搭建radius 认证服务器
    1ubuntu安装LAMP环境(安装nginx代替apache):Ubuntu22.04.4LTS安装phpapacheLAMP环境nginx-CSDN博客2安装freeradiussudoaptupdatesudoapt-getinstalllibmysqld-devsudoapt-getinstallfreeradius#先安装libmysqld-dev,否则启动可能报错Couldnotlink......
  • 研0学习笔记——大模型微调之LoRA技术
    概念:LoRA(LowRankAdaptaionofLLMs),即LLMs的低秩适应,可以做到只使用极少量参数的训练,达到微调整个模型的效果,解决了先前AdapterTuning与PrefixTuning的缺点。应用:1、在绘画应用stablediffusion中,LoRA以插件的形式嵌入模型中,使得用户可以下载相对于原模型(GB量级)更小的Lo......
  • Lora 和peft
    PEFT(Parameter-EfficientFine-Tuning参数高效微调)huggingface:PEFT(huggingface.co)github:GitHub-huggingface/peft:......
  • LLM微调方法(Efficient-Tuning)六大主流方法:思路讲解&优缺点对比[P-tuning、Lora、Pre
    LLM微调方法(Efficient-Tuning)六大主流方法:思路讲解&优缺点对比[P-tuning、Lora、Prefixtuing等]由于LLM参数量都是在亿级以上,少则数十亿,多则数千亿。当我们想在用特定领域的数据微调模型时,如果想要full-tuning所有模型参数,看着是不太实际,一来需要相当多的硬件设备(GPU),二来需要......
  • Win11系统提示找不到coloradapterclient.dll文件的解决办法
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个coloradapterclient.dll文件(挑选合适的版本......
  • 【机器学习】QLoRA:基于PEFT亲手微调你的第一个AI大模型
    目录一、引言二、量化与微调—原理剖析2.1 为什么要量化微调?2.2 量化(Quantization)2.2.1 量化原理2.2.2 量化代码2.3 微调(Fine-Tuning)2.3.1LoRA2.3.2QLoRA三、量化与微调—实战演练:以Qwen2为例,亲手微调你的第一个AI大模型3.1模型预处理—依赖安装、库包导......