|
大模型微调是深度学习中的一项关键技术,它允许我们在已有的预训练模型上,通过进一步的训练来适应特定的任务或数据集。在众多的Fine-Tuning方法中,LoRA(Low-Rank Adaptation)是一种轻量且高效的大型语言模型微调方法。与全参数微调相比,这种方法显著减少了训练的参数量,从而降低了GPU内存需求和训练时间。本篇我将为各位同学介绍一下大模型微调的方法-LoRA。  LoRA的核心思想是假设大语言模型的预训练权重已经包含了丰富的知识,直接微调所有参数会非常耗时且需要大量的计算资源。微调的任务只是对这些知识进行轻微的调整。因此,LoRA并不直接修改预训练的权重,而是在模型的每一层注入低秩矩阵,通过训练这些低秩矩阵来实现模型的适配。因此,LoRA通过引入两个低秩矩阵A和B,并将它们相乘后加到原始权重矩阵上,实现对模型的微调,从而不需要改变整个模型的权重。
 如上图所示,ΔW的分解意味着我们用了两个较小的LoRA矩阵A和B来表示大型矩阵ΔW。如果A的行数与ΔW相同,B的列数与ΔW相同,那么我们可以将分解表示为ΔW = AB。(这里的AB表示矩阵A和B的矩阵相乘的结果。)根据以上分析,步骤如下: 1. 冻结预训练模型的权重:LoRA 不会修改预训练模型的原始权重,而是将它们冻结。 2. 注入秩分解矩阵:在 Transformer 的每一层,LoRA 向原始权重矩阵 W 添加一个低秩矩阵更新 ΔW,其中 ΔW = BA。 - A 是一个降维矩阵,将输入特征映射到一个低维空间。 - B 是一个升维矩阵,将低维空间的特征映射回原始特征空间。 - A 和 B 的秩远小于 W 的秩。 3. 训练秩分解矩阵:在微调过程中,只有 A 和 B 的参数会被训练,而原始权重矩阵 W 保持不变。 4. 合并权重矩阵:在推理阶段,可以将 ΔW 与 W 合并,得到最终的权重矩阵 W' = W + ΔW。
优势: 更少的内存需求: LoRA 只需要存储和更新低秩矩阵 `A` 和 `B`,大大减少了GPU内存需求,使得在单个GPU上微调大型语言模型成为可能。 更快的训练速度:由于需要更新的参数数量减少,LoRA 的训练速度比全参数微调更快。 更好的性能: LoRA 在许多任务上都取得了与全参数微调相当甚至更好的性能。 易于合并和切换: 不同的LoRA权重可以轻松地与基础模型合并或切换,方便实验和部署。
劣势:
LoRA 是一种高效的大模型微调方法,它通过冻结预训练权重并注入低秩矩阵,显著减少了内存需求和训练时间,同时保持了良好的性能。 它已成为微调大型语言模型的一种流行技术,并被广泛应用于各种下游任务。在实际应用中,LoRA可以与预训练模型的权重合并,以便在生产环境中使用,而不引入额外的推理延迟。这意味着在微调后,模型可以像以前一样进行推理,而不需要对模型结构进行任何修改。 |