详细内容或原文请订阅后点击阅览
通过最小示例了解 LoRA
LoRA(低秩自适应)是一种用于微调深度学习模型的新技术,它通过减少可训练参数的数量并实现高效的任务切换来工作。在这篇博文中,我们将在一个非常小的 Torch 示例中讨论 LoRA 背后的关键思想。
来源:RStudio AI博客LoRA(低秩自适应)是一种用于微调大规模预训练模型的新技术。此类模型通常在通用领域数据上进行训练,以便拥有最大数据量。为了在聊天或问答等任务中获得更好的结果,这些模型可以进一步“微调”或适应特定领域的数据。
只需使用预训练权重初始化模型并在特定领域数据上进一步训练,就可以微调模型。随着预训练模型的规模不断增加,完整的正向和反向循环需要大量的计算资源。通过简单的持续训练进行微调还需要模型适应的每个任务/领域的所有参数的完整副本。
LoRA:大型语言模型的低秩自适应提出了一种使用低秩矩阵分解解决这两个问题的方法。它可以将可训练权重的数量减少 10,000 倍,将 GPU 内存需求减少 3 倍。
LoRA:大型语言模型的低秩自适应方法
微调神经网络的问题可以通过找到最小化 \(L(X, y; \Theta_0 + \Delta\Theta)\) 的 \(\Delta \Theta\) 来表示,其中 \(L\) 是损失函数,\(X\) 和 \(y\) 是数据,\(\Theta_0\) 是来自预训练模型的权重。
\(\Delta \Theta\) \(L(X, y; \Theta_0 + \Delta\Theta)\) \(L\) \(X\) \(y\) \(\Theta_0\)我们学习维度 \(|\Delta \Theta|\) 等于 \(|\Theta_0|\) 的参数 \(\Delta \Theta\)。当 \(|\Theta_0|\) 非常大时,例如在大规模预训练模型中,找到 \(\Delta \Theta\) 在计算上会变得具有挑战性。此外,对于每个任务,您都需要学习一个新的 \(\Delta \Theta\) 参数集,如果您有多个特定任务,那么部署微调模型将变得更具挑战性。
\(\Delta \Theta\) \(|\Delta \Theta|\) \(|\Theta_0|\) \(|\Theta_0|\) \(\Delta \Theta\) \(\Delta \Theta\) \(\Delta \Theta\) \(\Delta \Phi \approx \Delta \Theta\) \(|\Delta \Phi| << |\Delta \Theta|\) \(\Delta \theta \in \Delta \Theta\)(