https://arxiv.org/pdf/2401.04679.pdf
https://github.com/IST-DASLab/RoSA
ROSA(Robust Adaptation)是一种参数高效的微调(Parameter-Efficient Fine-Tuning, PEFT)方法,旨在在有限的计算和内存预算下,为大型语言模型(Large Language Models, LLMs)提供良好的准确性。ROSA的算法原理受到鲁棒主成分分析(Robust Principal Component Analysis, RPCA)的启发,它通过联合训练低秩(low-rank)和高度稀疏(highly-sparse)的组件,来有效地近似全微调(Full Fine-Tuning, FFT)解决方案的性能。
ROSA的核心思想是,尽管低秩适配器(LoRA)方法在某些情况下可以有效地近似全微调的更新,但它们在处理更复杂的下游任务时可能会失去准确性。为了解决这个问题,ROSA提出了一种新的适配器结构,它结合了低秩和稀疏组件,以更好地捕捉全微调更新的复杂性。
具体来说,ROSA的算法原理包括以下几个关键步骤:
- 低秩适配器(LoRA):这部分与LoRA方法类似,它训练一个低秩矩阵来近似原始模型权重的更新。低秩矩阵的秩(rank)是一个固定的小数,这减少了可训练参数的数量。
- 稀疏适配器(Sparse Adapter):这部分引入了稀疏性,通过在权重矩阵中引入大量零值来进一步减少可训练参数的数量。稀疏适配器的密度(density)是一个小于1的值,表示非零元素的比例。
- 联合训练:ROSA同时训练低秩和稀疏适配器,而不是单独训练它们。这种联合训练策略使得两种类型的适配器可以相互补充,共同提高模型的性能。
鲁棒PCA的简化版本:ROSA使用了一种简化的鲁棒PCA方法,称为单次迭代鲁棒PCA(one-shot RPCA)。这种方法通过一次迭代来近似全微调更新,而不是像传统RPCA那样需要多次迭代。
系统支持:为了支持ROSA的高效训练,研究者们提供了稀疏GPU内核,这些内核可以在NVIDIA GPU上实现内存和计算效率。
ROSA的这些设计使得它在保持与LoRA相似的计算和内存成本的同时,能够显著提高准确性,并且易于使用和调整超参数。在实际实验中,ROSA在多个具有挑战性的生成任务中,如小学数学和SQL查询生成等,都显示出了优于LoRA和纯稀疏微调的性能。
