学习周报
姓名 | 郝丹萌 | 时间范围 | 2025.6.2-2025.6.22 | |
周次 | 第十九周 | 研究方向 | 大模型高效参数微调 | |
本周完成工作 | 1.看用python语言写的项目网课。 2.阅读论文MoRA: High-Rank Updating for Parameter-Efficient Fine-Tuning | |||
本周 问题汇报 | ||||
下周工作计划 | 1.阅读最新微调方向相关论文。 2.学习python代码。 |
研究背景
研究问题:这篇文章要解决的问题是如何在保持参数数量不变的情况下,提高大型语言模型(LLMs)在微调过程中对新知识的记忆和学习能力。
研究难点:该问题的研究难点包括:低秩更新机制在内存密集型任务中限制了其存储新信息的能力;现有的LoRA方法在复杂推理和持续预训练任务中表现不佳。
相关工作:该问题的研究相关工作有:LoRA方法通过低秩矩阵进行参数更新,避免了推理延迟;其他方法如DoRA、LoRA+、ReLoRA等进一步改进了LoRA,但主要验证其在GLUE任务上的效率。
研究方法
这篇论文提出了MoRA方法,用于解决LLMs在微调过程中对新知识记忆和学习能力不足的问题。具体来说,
低秩更新的局限性:LoRA方法通过两个低秩矩阵来近似全秩更新,但其低秩特性限制了其在内存密集型任务中的性能。公式如下:
h=W0x+BAx
其中,A∈Rr×k 和 B∈Rd×r 表示低秩矩阵,ΔW=BA 的秩 r≤min(d,k)。2. MoRA方法:MoRA方法使用一个方阵来实现高秩更新,同时保持相同的可训练参数数量。公式如下:
h=W0x+fdecomp(Mfcomp(x))
其中,fcomp 和 fdecomp 是非参数操作符,用于减少输入维度和增加输出维度。具体实现包括截断、共享行和列、解耦和旋转操作。
非参数操作符:为了实现高秩更新,MoRA方法探索了多种非参数操作符,包括:
截断操作:直接截断维度并填充零向量。
共享行和列:通过共享矩阵的行或列来减少参数数量。
解耦操作:将输入分解为多个组,每组共享行或列。
旋转操作:通过旋转矩阵来增强表达能力和区分度。
实验设计
数据集选择:实验在五个任务上进行评估,包括指令微调、数学推理、持续预训练、记忆和预训练。具体数据集包括Tilu v2、MetaMath、GSM8K、BioMed和Finance数据集。
实验设置:实验中使用了LLaMA-2 7B作为基础模型,分别在指令微调和数学推理任务中使用零样本和五样本设置进行评估。持续预训练任务中,使用PubMed摘要和金融新闻数据进行适应。
参数配置:实验中搜索了不同的学习率和超参数,具体配置包括学习率范围为{1e−4,2e−4,3e−4},批量大小为128,序列长度为512。
结果与分析
UUID对记忆任务:MoRA方法在记忆UUID对任务中表现优于LoRA,特别是在大秩(如256)情况下,MoRA与FFT的性能相当。
微调任务:在指令微调和数学推理任务中,MoRA方法与LoRA的表现相当;在持续预训练任务中,MoRA在生物医学和金融领域的表现优于LoRA。
预训练任务:在C4数据集上的预训练实验中,MoRA方法比LoRA和ReLoRA表现更好,特别是在大秩(如128)情况下,ReMoRA对MoRA的提升显著。
总体结论
这篇论文通过分析LoRA方法的局限性,提出了MoRA方法,通过高秩更新来提高LLMs在新知识记忆和学习能力方面的表现。实验结果表明,MoRA在记忆密集型任务和持续预训练任务中表现优异,同时在指令微调和数学推理任务中与LoRA表现相当。总体而言,MoRA方法有效提高了LLMs在微调过程中的性能,特别是在需要增强知识和能力的任务中表现突出。
论文评价优点与创新
提出新方法MoRA:论文提出了一种名为MoRA的新方法,该方法使用方阵矩阵来实现高秩更新,同时保持相同数量的训练参数。
非参数操作符:引入了四种非参数操作符来减少方阵矩阵的输入维度并增加输出维度,确保权重可以合并回LLMs中。
任务评估:在五个任务上对MoRA进行了全面评估,包括记忆任务、指令调优、数学推理、持续预训练和预训练。结果表明,MoRA在记忆密集型任务上优于LoRA,并在其他任务上表现相当。
高秩更新的有效性:通过高秩更新,MoRA在记忆新知识方面表现出色,特别是在需要增强知识和能力的任务上。
代码可用性:提供了详细的代码实现,方便其他研究者复现和验证。
不足与反思
局限性:论文提到,尽管MoRA在记忆任务上表现优异,但在某些复杂的数学推理任务和持续预训练任务中,仍然不如全量微调(FFT)。
下一步工作:未来的研究可以进一步探索更高秩更新的效果,并尝试将其应用于更多的任务和更大的模型中,以验证其通用性和有效性。
关键问题及回答
问题1:MoRA方法如何解决LoRA在内存密集型任务中表现不佳的问题?
MoRA方法通过使用一个方阵来实现高秩更新,从而克服了LoRA方法中低秩更新的局限性。具体来说,LoRA方法通过两个低秩矩阵来近似全秩更新,但其低秩特性限制了其在内存密集型任务中的性能。MoRA方法则使用一个方阵,通过非参数操作符来减少输入维度和增加输出维度,从而实现高秩更新。这种方法不仅保持了相同的可训练参数数量,还能显著提高模型在内存密集型任务中的性能。例如,在使用8的秩和隐藏大小4096的情况下,LoRA使用两个低秩矩阵,而MoRA使用一个秩为256的方阵,显著提高了模型的容量。
问题2:MoRA方法中的非参数操作符有哪些具体实现方式?
MoRA方法探索了多种非参数操作符来实现高秩更新,具体包括以下几种:
截断操作:直接截断维度并填充零向量。
共享行和列:通过共享矩阵的行或列来减少参数数量。
解耦操作:将输入分解为多个组,每组共享行或列。
旋转操作:通过旋转矩阵来增强表达能力和区分度。这些操作符的具体实现方式如下:
截断操作:公式为 fcomp(x)=x1:r^ 和 fdecomp(x)=[x0]。
共享行和列:公式为 fcomp(x)=[∑j∈gixj]i=1r 和 fdecomp(x)=[xgi′]i=1d。
解耦操作:公式为 fcomp(x)=[x1:r^xr^:2r^⋯x(n−1)r^:nr^] 和 fdecomp(x)=concat(x)。
旋转操作:公式为 ai=Rθ1,i0⋮00Rθ2,i⋮0⋯⋯⋱⋯00⋮Rθ2r^,ixir^:(i+1)r^ 和 Pi=MRθ1,i0⋮00Rθ2,i⋮0⋯⋯⋱⋯00⋮Rθ2r^,i。
问题3:MoRA方法在实验中的表现如何?与其他方法相比有何优势?
MoRA方法在实验中的表现优于LoRA,特别是在记忆密集型任务和持续预训练任务中。具体表现如下:
UUID对记忆任务:MoRA方法在记忆UUID对任务中表现优于LoRA,特别是在大秩(如256)情况下,MoRA与FFT的性能相当。
微调任务:在指令微调和数学推理任务中,MoRA方法与LoRA的表现相当;在持续预训练任务中,MoRA在生物医学和金融领域的表现优于LoRA。
预训练任务:在C4数据集上的预训练实验中,MoRA方法比LoRA和ReLoRA表现更好,特别是在大秩(如128)情况下,ReMoRA对MoRA的提升显著。MoRA方法的优势在于其高秩更新机制,这使得模型在内存密集型任务中能够更好地存储新信息。此外,MoRA方法通过非参数操作符实现了高效的压缩和解压缩,保持了与LoRA相同数量的训练参数,但显著提高了模型的性能。
转载本文请联系原作者获取授权,同时请注明本文来自郝丹萌科学网博客。
链接地址:https://wap.sciencenet.cn/blog-3622922-1493961.html?mobile=1
收藏