大型语言模型的低维适应性微调:LaMDA 的高效之道

大型语言模型 (LLM) 在自然语言处理 (NLP) 领域展现出非凡的能力,能够解决各种任务。然而,完全微调 LLM 成本高昂,难以在边缘设备上实现。为了解决这个问题,参数高效微调 (PEFT) 技术应运而生,其中一种名为低秩适应 (LoRA) 的方法备受关注。

LoRA 假设预训练权重的变化存在于低秩空间中,因此在模型的冻结主路径中添加两个可训练的低秩适配器,称为投影矩阵 A (PMA) 和投影矩阵 B (PMB)。这种方法虽然减少了可训练参数数量,但随着模型嵌入维度的增加,LoRA 的可训练参数需求也会增加,导致计算成本高昂。此外,LoRA 的反向更新需要存储高维中间激活和优化器状态,对 GPU 内存峰值提出了很高的要求。

为了解决这些问题,本文介绍了一种名为 LaMDA 的新方法,它利用低维适应来显著减少可训练参数和 GPU 内存峰值。LaMDA 在适应路径中冻结第一个投影矩阵 (PMA),同时引入一个低维可训练方阵,从而大幅减少可训练参数和 GPU 内存峰值。LaMDA 在早期微调阶段逐渐冻结第二个投影矩阵 (PMB),进一步降低与权重更新相关的计算成本,提高参数效率。

此外,本文还介绍了 LaMDA 的增强版 LaMDA++,它通过对预训练模型权重的规范化频谱分析,为 LoRA 路径引入了“轻量级”自适应秩分配。

LaMDA:低维适配器的魅力

LaMDA 的核心是低维适配器 (LDA),它是一个 r 维方阵,其中 r 远小于模型的嵌入维度 d。LaMDA 将 PMA 冻结,而 LDA 始终可训练,PMB 则根据奇异值的相对大小逐渐冻结。这种设计使得可训练参数与 d 无关,并且用于反向传播的激活存储在 r 维空间中,从而显著减少可训练参数、激活和优化器状态内存。

LaMDA 的优势:

  • 减少可训练参数: LaMDA 的可训练参数数量仅为 LoRA 的 r2,与模型的嵌入维度 d 无关,有效地限制了参数数量,降低了过拟合风险,提高了模型的泛化能力。
  • 降低计算成本: 由于可训练参数数量减少,LaMDA 的反向传播计算量也大幅降低,减少了梯度更新和优化器状态计算,减轻了微调的整体计算和优化器存储开销。
  • 节省内存: LaMDA 将激活存储在 r 维空间中,显著减少了激活内存使用,从而可以微调更大的模型或使用更大的批次大小。

LaMDA++:自适应秩分配的优化

LaMDA++ 在 LaMDA 的基础上,引入了自适应秩分配机制,根据预训练模型权重的能量得分,为不同层分配不同的秩。

LaMDA++ 的优势:

  • 更有效地利用参数预算: LaMDA++ 通过分析预训练模型权重的能量得分,将更多的秩分配给对秩减少影响较小的层,而将更少的秩分配给对秩减少影响较大的层,从而更有效地利用参数预算。
  • 简化实现和使用: LaMDA++ 采用“轻量级”静态分析方法,避免了动态调整秩带来的复杂性和计算开销,简化了实现和使用。

实验结果

本文对 LaMDA 和 LaMDA++ 在自然语言理解 (NLU)、自然语言生成 (NLG) 和推理任务上进行了评估,结果表明:

  • NLU 任务: LaMDA 在 GLUE 基准测试中取得了与 LoRA 相当的性能,但可训练参数数量减少了 17.7 倍。LaMDA++ 则取得了最优性能,参数数量略有增加。
  • NLG 任务: LaMDA 在 XSUM 和 CNN/DailyMail 数据集上取得了与 LoRA 相当的性能,但可训练参数数量减少了 10 倍。LaMDA++ 在 XSUM 数据集上超越了 LoRA,在 CNN/DailyMail 数据集上与 LoRA 性能相当。
  • 推理任务: LaMDA 和 LaMDA++ 在 GSM8K 和 Wikitext-2 数据集上都超越了 LoRA。LaMDA 在 Commonsense170K 数据集上取得了比 LoRA 更高的平均准确率,同时可训练参数数量减少了 11.5 倍。

结论

LaMDA 是一种新颖的 LLM 微调框架,它利用低维适配器,显著减少了可训练参数数量,节省了激活内存,并通过自适应秩分配进一步优化了性能。LaMDA 和 LaMDA++ 能够有效地微调更大的模型,为模型适应提供了一种高效且可扩展的方法。

参考文献

  • Hu, Y., et al. (2022). Lora: Low-rank adaptation of large language models. arXiv preprint arXiv:2106.09685.
  • Kopiczko, R., et al. (2024). Vera: Parameter-efficient fine-tuning by projecting to a low-dimensional subspace. arXiv preprint arXiv:2310.17678.
  • Pan, X., et al. (2024a). AdaLoRA: Adaptive low-rank adaptation of large language models. arXiv preprint arXiv:2305.11720.
  • Liu, Z., et al. (2024). AFLoRA: Adaptive frozen low-rank adaptation for efficient large language model fine-tuning. arXiv preprint arXiv:2310.16125.
  • Meng, Z., et al. (2024). On the importance of adapter initialization for parameter-efficient fine-tuning of large language models. arXiv preprint arXiv:2310.17463.

Q: 这篇论文试图解决什么问题?

A: 这篇论文介绍了一种名为LaMDA(Large Model Fine-tuning via Spectrally Decomposed Low-Dimensional Adaptation)的新方法,旨在解决大型语言模型(LLMs)微调过程中的两个主要问题:

  1. 训练参数需求随着模型嵌入维度的增加而增加:传统的低秩适应(LoRA)方法在微调大型语言模型时,虽然减少了可训练参数的数量,但当模型的嵌入维度增大时,所需的训练参数数量仍然可能很大。
  2. 高计算成本和GPU内存占用:LoRA方法在反向更新过程中需要存储高维中间激活和优化器状态,这导致GPU内存需求高,尤其在模型参数过多的情况下,容易造成过度拟合和灾难性遗忘。

为了解决这些问题,LaMDA采用了低维适应技术,通过冻结第一投影矩阵(PMA)并引入一个低维可训练的方阵,显着减少了可训练参数和GPU内存占用。此外,LaMDA在微调的早期阶段逐步冻结第二投影矩阵(PMB),进一步降低与权重更新相关的计算成本,提高参数效率。论文还提出了LaMDA++,一种增强版的方法,通过对方阵进行“轻量级”的自适应秩分配,利用预训练模型权重的归一化谱分析来优化LoRA路径。

总的来说,LaMDA和LaMDA++旨在提供一种更为高效和可扩展的方式来微调大型语言模型,减少所需的训练参数和内存占用,同时保持或提高模型性能。

Q: 有哪些相关研究?

A: 论文中提到了几种与LaMDA相关的研究和技术,主要包括以下几种:

  1. LoRA (Low-rank Adaptation) (Hu et al., 2022): 一种流行的微调大型语言模型的方法,通过添加两个可训练的低秩适配器来减少训练参数的数量。
  2. VERA (Vector-based Random Matrix Adaptation) (Kopiczko et al., 2024): 一种不同的方法,通过随机初始化和冻结PMA和PMB,专注于微调两个特征转换矢量。
  3. AFLoRA (Adaptive Freezing LoRA) (Liu et al., 2024): 为了解决VERA的计算效率问题而提出的方法,但仍然存在高激活存储开销。
  4. LISA (Layerwise Importance Sampling for Memory-efficient Fine-tuning) (Pan et al., 2024b): 一种针对内存效率优化的微调方法。
  5. AdaLoRA: LoRA的一个变种,通过动态学习适配器的秩来提高微调预算的利用效率。
  6. DeBERTa-V3 (He et al., 2023): 用于自然语言理解任务的编码器模型。
  7. BART-Large (Lewis et al., 2020): 用于文本摘要和自然语言生成任务的编码器-解码器模型。
  8. LLaMA2-7B (Touvron et al., 2023b): 用于复杂推理任务的解码器模型。
  9. Transformer-based models (Vaswani et al., 2017): 论文中还讨论了基于Transformer的模型的背景,这些模型通常由多头自注意力(MHSA)子块和前馈网络(FFN)组成。

这些研究和技术为LaMDA提供了理论基础和比较基准,使得LaMDA能够在减少训练参数和降低GPU内存占用方面取得显着进步。

Q: 论文如何解决这个问题?

A: 论文通过提出LaMDA(Large Model Fine-tuning via Spectrally Decomposed Low-Dimensional Adaptation)框架解决了大型语言模型(LLMs)微调过程中遇到的高参数需求和高计算成本问题。以下是LaMDA解决这些问题的关键步骤和方法:

  1. 低维适配器(Low-Dimensional Adapter, LDA)
    • LaMDA引入了一个低维的可训练方阵LDA,该方阵在r维空间中,与模型的嵌入维度d相比,r通常小得多。
  2. 冻结投影矩阵(Projection Matrix Freezing)
    • 在微调过程中,LaMDA冻结了第一投影矩阵(PMA),并只训练LDA,从而显着减少了可训练参数的数量。
  3. 逐步冻结第二投影矩阵(Gradual Freezing of the Second Projection Matrix, PMB)
    • LaMDA在微调的早期阶段逐步冻结PMB,这有助于在保持LaMDA优势的同时提高模型对复杂任务的适应性。
  4. LaMDA++(增强版LaMDA)
    • 利用预训练模型权重的归一化谱分析,为每层的LDA自适应地分配秩,从而实现更优的参数分布。
  5. 初始化策略
    • LaMDA使用奇异值分解(SVD)对预训练权重进行分解,并用对应的奇异矢量初始化PMA和PMB,这有助于在微调开始时近似原始权重。
  6. 内存和计算效率
    • 由于LDA的使用和PMA的冻结,LaMDA在反向传播过程中减少了激活存储的需求,从而降低了GPU内存的使用。
  7. 实验验证
    • 论文通过在多种任务和不同大小的LLMs上进行实验,验证了LaMDA与现有方法相比,在减少参数更新数量和降低GPU内存使用方面的优势。
  8. 性能对比
    • 实验结果显示,LaMDA在保持或提高性能的同时,相比于现有方法,需要更少的参数更新和更低的GPU内存占用。

通过这些方法,LaMDA在减少训练参数、降低内存占用和计算成本方面取得了显着的改进,同时保持了或提高了模型性能。

Q: 论文做了哪些实验?

A: 论文中进行了一系列的实验来评估LaMDA和LaMDA++方法的性能。以下是实验的主要方面:

  1. 模型和数据集:实验涵盖了不同类型的模型,包括编码器(DeBERTa-V3)、编码器-解码器(BART-large)和解码器(LLaMA2-7B)模型。使用了多个数据集,如GLUE基准测试用于自然语言理解(NLU),XSUM和CNN/DailyMail用于文本摘要(NLG),以及GSM8K、Wikitext-2和Commonsense170K用于复杂推理任务。
  2. 微调方法比较:LaMDA与全参数微调(Full FT)、LoRA、LoRA-FA、AdaLoRA、VERA、AFLoRA和LISA等现有的参数高效微调(PEFT)技术进行了比较。
  3. 性能指标:根据不同任务的性质,使用了不同的性能指标,例如GLUE基准上的准确率、文本摘要任务上的ROUGE分数、复杂推理任务上的准确率以及Wikitext-2上的困惑度(Perplexity)。
  4. 可训练参数数量:实验报告了LaMDA和LaMDA++与基线方法相比在减少可训练参数数量方面的效果。
  5. GPU内存使用情况:通过在不同批处理大小下对BART-large模型进行微调,测量了不同微调方法在峰值GPU内存使用上的差异。
  6. LaMDA++的秩分配策略:通过分析预训练模型权重的归一化能量得分,评估了LaMDA++的自适应秩分配策略的有效性。
  7. 初始化选择的影响:研究了不同初始化方法(如使用最大奇异值对应的奇异矢量、随机初始化等)对LaMDA性能的影响。
  8. 逐步冻结PMB的迭代次数:研究了在微调过程中逐步冻结PMB的迭代次数对LaMDA性能的影响。
  9. LaMDA++排名的影响:评估了LaMDA++根据能量得分对层进行排序并分配秩的策略对训练过程和性能的影响。
  10. 常识推理任务:在多个常识推理数据集上评估了LaMDA的性能,包括BoolQ、PIQA、SIQA、HellaSwag、WinoGrande、ARC-e、ARC-c和OBQA。

这些实验结果表明,LaMDA和LaMDA++在减少可训练参数数量和降低GPU内存需求的同时,能够与或超越现有方法的性能。

Q: 有什么可以进一步探索的点?

A: 根据论文的讨论和结论部分,以下是一些可以进一步探索的点:

  1. 在更大模型上的测试:论文中提到,他们测试的最大模型是LLaMA2-7B。由于时间限制,他们未能在更大的模型上测试LaMDA。未来的工作可以在更大的模型上评估LaMDA的可扩展性和有效性。
  2. 在指令遵循任务上的应用:LaMDA尚未在指令遵循任务上进行测试。评估LaMDA在这些特定任务上的性能对于完全理解其潜力和多功能性至关重要。
  3. 应用于视觉-语言模型:论文没有探索LaMDA方法在视觉-语言模型上的应用。考虑到多模态学习的重要性,将LaMDA应用于这类模型是一个值得探索的方向。
  4. 改进的秩分配策略:尽管LaMDA++采用了基于能量得分的秩分配策略,但可能存在更精细或更动态的秩分配方法,这些方法可以进一步优化模型性能和参数效率。
  5. 长期维护和灾难性遗忘问题:在持续微调过程中,研究LaMDA如何处理长期维护问题和灾难性遗忘问题,以及如何改进以减少这些问题的影响。
  6. 不同领域的适应性:研究LaMDA在不同领域(如医疗、法律等专业领域)的适应性,以及是否需要针对特定领域进行调整。
  7. 与其他微调技术的比较:与其他新兴的微调技术进行比较,以评估LaMDA在不同方面(如速度、内存效率、易用性等)的相对优势和局限性。
  8. 模型解释性和可理解性:提高LaMDA微调过程中模型的解释性和可理解性,帮助研究人员和实践者更好地理解模型的决策过程。
  9. 跨语言评估:评估LaMDA在不同语言上的微调效果,以及它如何处理语言之间的差异。
  10. 环境影响评估:研究LaMDA在减少计算资源需求的同时,对环境影响(如能源消耗和碳足迹)的潜在影响。

这些探索点可以帮助研究者更深入地理解LaMDA的潜力,并推动大型语言模型微调技术的发展。

Q: 总结一下论文的主要内容

A: 这篇论文介绍了LaMDA,一种用于大型语言模型(LLMs)微调的新方法。以下是论文的主要内容总结:

  1. 问题识别:论文首先指出了现有微调大型语言模型方法(如LoRA)存在的问题,包括随着模型尺寸增加而增加的参数需求,以及高计算成本和GPU内存占用。
  2. LaMDA方法:提出了LaMDA方法,它通过使用低维适配器(LDA)和逐步冻结第二投影矩阵(PMB)来减少可训练参数和GPU内存占用。
  3. LaMDA++:介绍了LaMDA的增强版LaMDA++,它通过归一化谱分析自适应地为不同层分配秩,以优化参数分布。
  4. 实验设置:论文详细描述了实验的设置,包括使用的不同模型(DeBERTa-V3、BART-large、LLaMA2-7B)和数据集(GLUE、XSUM、CNN/DailyMail、GSM8K、Wikitext-2等)。
  5. 性能比较:展示了LaMDA和LaMDA++与现有微调方法(包括Full FT、LoRA、AdaLoRA、VERA、AFLoRA和LISA)的性能比较,证明了LaMDA在减少参数数量和降低GPU内存使用方面的优势。
  6. 内存和计算效率:通过实验数据,论文展示了LaMDA在不同批处理大小下对BART-large模型微调时的内存效率。
  7. 初始化和秩分配策略:研究了不同的初始化方法和LaMDA++的秩分配策略对性能的影响。
  8. 逐步冻结PMB的影响:分析了逐步冻结PMB的迭代次数对LaMDA性能的影响。
  9. 常识推理任务:在多个常识推理数据集上评估了LaMDA的性能,并与LoRA进行了比较。
  10. 结论和局限性:论文总结了LaMDA的主要贡献,并指出了研究的局限性,如未在更大的模型和指令遵循任务上进行测试,以及未探索在视觉-语言模型上的应用。
  11. 未来工作:提出了未来可能的研究方向,包括在更大模型上的测试、指令遵循任务、视觉-语言模型应用等。

论文的代码将在GitHub上公开,以供研究社区使用和进一步研究。

发表评论