LoRA不是唯一选择,Adapters微调大模型的奥秘(二)LoRA
LoRA(Low-Rank Adapter)1 是最流行的 PEFT 方法之一,如果你刚开始使用 PEFT,它是一个很好的起点。它最初是为大型语言模型开发的,但由于其效率和有效性,它是一种非常流行的扩散模型训练方法。
在大型语言模型中,权重矩阵通常具有较大的维度,这使得在微调时需要处理大量的参数。LoRA方法通过将这些大的权重矩阵分解为两个较小的矩阵的乘积(即低秩分解),来近似表示原始的权重矩阵。这样做的好处是,我们只需要更新这两个较小矩阵的参数,而不是原始大矩阵的所有参数,大大减少了微调的计算成本。
LoRA的实施过程大致如下:
LoRA的优点在于它能够在保持模型性能的同时,显著减少微调所需的计算资源,这对于资源有限的研究和应用场景非常有价值。此外,LoRA还可以与其他参数高效微调技术结合使用,进一步提高微调的效率。
需要注意的是,LoRA方法的秩(即矩阵A和B的维度)是一个重要的超参数,需要根据具体任务进行调整。较低的秩可以进一步减少参数数量,但可能会导致模型无法充分学习到任务特定的信息;而较高的秩则可能需要更多的计算资源,但可以提供更好的微调性能。
想象一下,你已经是一个经验丰富的厨师,这意味着你已经拥有一套完整的烹饪技巧(这就像是一个预训练的语言模型)。现在,如果你想要学习如何制作一种特定的新菜肴,比如寿司,你不需要重新学习所有的烹饪技巧,你只需要学习一些新的特定技能,比如如何正确切割鱼片(这就是微调)。
在LoRA中,我们把这个过程想象成在原有的烹饪技巧(模型的权重)基础上,添加一些新的小工具或技巧。这些新的工具或技巧可以看作是两个小的矩阵(A和B),它们结合起来可以帮助你更好地制作寿司,但它们本身并不包含所有的烹饪技巧,只是针对寿司制作的一些关键点。
[1] LoRA: Low-Rank Adaptation of Large Language Models
仓库上有原始的Markdown文件,完全开源,欢迎大家Star和Fork!