VB-LoRA: Extreme Parameter Efficient Fine-Tuning with Vector Banks
作者: Yang Li, Shaobo Han, Shihao Ji
分类: cs.CL
发布日期: 2024-05-24 (更新: 2024-10-29)
备注: NeurIPS 2024
🔗 代码/项目: GITHUB
💡 一句话要点
VB-LoRA:利用向量库实现超高参数效率的微调
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 参数高效微调 低秩适应 向量库 模型压缩 大型语言模型
📋 核心要点
- 现有LoRA等PEFT方法在模型定制化需求下,存储和传输成本依然很高,限制了其应用。
- VB-LoRA提出“分而治之”范式,通过共享向量库打破低秩分解的维度、模块和层级限制。
- 实验表明,VB-LoRA在极低参数量下,性能优于LoRA,并在多种NLP任务上验证了有效性。
📝 摘要(中文)
随着大型语言模型的普及以及对用户或任务定制模型的需求增长,诸如低秩适应(LoRA)及其变体等参数高效微调(PEFT)方法产生了大量的存储和传输成本。为了进一步减少存储参数,我们引入了一种“分而治之”的范式,通过向量库全局共享参数,打破了跨矩阵维度、模块和层的低秩分解障碍。作为LoRA范式的实例化,我们提出的VB-LoRA通过一个可微的top-k混合模块,从共享向量库中组合LoRA的所有低秩矩阵。VB-LoRA实现了极高的参数效率,同时保持了与最先进的PEFT方法相当或更好的性能。大量的实验证明了VB-LoRA在自然语言理解、自然语言生成、指令调优和数学推理任务上的有效性。在微调Llama2-13B模型时,VB-LoRA仅使用了LoRA 0.4%的存储参数,但取得了更优越的结果。我们的源代码可在https://github.com/leo-yangli/VB-LoRA获得。该方法已合并到Hugging Face PEFT包中。
🔬 方法详解
问题定义:现有参数高效微调方法(如LoRA)在面对大规模语言模型和日益增长的定制化需求时,仍然存在存储和传输成本过高的问题。每个任务或用户的模型都需要单独存储和传输LoRA参数,这限制了其在资源受限环境中的应用。因此,如何进一步降低参数存储和传输成本,同时保持或提升模型性能,是本文要解决的核心问题。
核心思路:VB-LoRA的核心思路是引入一个共享的向量库,将LoRA中的所有低秩矩阵分解为从该向量库中选择和组合向量的过程。通过这种“分而治之”的策略,不同模块、不同层甚至不同任务的LoRA参数可以共享同一个向量库,从而极大地减少了需要存储的参数量。这种设计基于一个假设:不同LoRA矩阵之间存在一定的冗余性,可以通过共享向量来表示。
技术框架:VB-LoRA的技术框架主要包含以下几个模块:1) 共享向量库:存储一组可学习的向量,作为构建LoRA矩阵的基本单元。2) Top-k混合模块:负责从向量库中选择k个向量,并对它们进行加权组合,生成LoRA矩阵。这个模块是可微的,允许通过反向传播优化向量的选择和权重。3) LoRA集成:将生成的LoRA矩阵集成到预训练模型中,进行微调。整个流程是端到端可训练的。
关键创新:VB-LoRA最重要的技术创新点在于其“分而治之”的参数共享范式。与传统的LoRA方法不同,VB-LoRA打破了低秩分解的维度、模块和层级限制,通过共享向量库实现了全局的参数共享。这种方法极大地减少了参数量,同时允许模型学习到更通用的低秩表示。此外,可微的Top-k混合模块也是一个创新点,它允许模型动态地选择和组合向量,从而更好地适应不同的任务和数据。
关键设计:VB-LoRA的关键设计包括:1) 向量库的大小:需要根据具体的任务和模型大小进行调整,以平衡参数效率和模型性能。2) Top-k混合模块的k值:控制了LoRA矩阵的复杂度,k值越大,模型的表达能力越强,但参数量也会增加。3) 损失函数:除了常规的微调损失外,还可以添加正则化项,以鼓励向量库中的向量具有多样性。4) 初始化策略:向量库的初始化对模型的收敛速度和最终性能有一定影响,可以使用随机初始化或预训练的向量表示。
🖼️ 关键图片
📊 实验亮点
在Llama2-13B模型上的实验表明,VB-LoRA仅使用LoRA 0.4%的存储参数,即可取得优于LoRA的性能。在自然语言理解、自然语言生成、指令调优和数学推理等多个任务上,VB-LoRA都取得了与最先进的PEFT方法相当或更好的结果,证明了其在极低参数量下的有效性。
🎯 应用场景
VB-LoRA适用于各种需要参数高效微调的场景,例如:边缘设备上的模型部署、移动应用中的个性化模型、以及大规模多任务学习。其极低的参数量使得在资源受限的环境中部署大型语言模型成为可能。此外,VB-LoRA还可以用于联邦学习,减少客户端上传的参数量,提高训练效率和隐私保护。
📄 摘要(原文)
As the adoption of large language models increases and the need for per-user or per-task model customization grows, the parameter-efficient fine-tuning (PEFT) methods, such as low-rank adaptation (LoRA) and its variants, incur substantial storage and transmission costs. To further reduce stored parameters, we introduce a "divide-and-share" paradigm that breaks the barriers of low-rank decomposition across matrix dimensions, modules, and layers by sharing parameters globally via a vector bank. As an instantiation of the paradigm to LoRA, our proposed VB-LoRA composites all the low-rank matrices of LoRA from a shared vector bank with a differentiable top-k admixture module. VB-LoRA achieves extreme parameter efficiency while maintaining comparable or better performance compared to state-of-the-art PEFT methods. Extensive experiments demonstrate the effectiveness of VB-LoRA on natural language understanding, natural language generation, instruction tuning, and mathematical reasoning tasks. When fine-tuning the Llama2-13B model, VB-LoRA only uses 0.4% of LoRA's stored parameters, yet achieves superior results. Our source code is available at https://github.com/leo-yangli/VB-LoRA. This method has been merged into the Hugging Face PEFT package.