HyperAI超神经
Back to Headlines

LoRA 和 QLoRA:让大型语言模型更高效地适应新任务

10 days ago

随着ChatGPT的推出,大型语言模型(LLM)的潜力被全世界广泛认可。这类模型参数庞大,通常超过数十亿个,能够在自然语言处理任务中展现出极高的准确性。然而,当这些大型模型需要针对特定任务进行微调时,面临的主要挑战是训练速度慢和资源消耗大,尤其是在硬件有限的本地机器上。 为了解决这一问题,本文介绍了两种优化技术:LoRA(低秩适应)和QLoRA(量化低秩适应)。LoRA的核心思想是通过将权重矩阵分解为两个小矩阵,来大幅减少训练过程中需要更新的参数数量。具体来说,原本大小为 ( n \times m ) 的权重矩阵,可以近似表示为两个更小的矩阵 ( A ) 和 ( B ),其尺寸分别为 ( n \times k ) 和 ( k \times m )。这里, ( k ) 是远小于 ( n ) 和 ( m ) 的内在维度。例如,一个 ( 8192 \times 8192 ) 的原矩阵(约6700万个参数),可以通过选择 ( k = 8 ),近似为两个矩阵(( 8192 \times 8 ) 和 ( 8 \times 8192 )),总共只有约13万个参数,减少了500多倍的内存和计算需求。 在实际应用中,即使 ( k ) 很小,如2或4,也能在微调过程中保持相对较高的精度。训练时,LoRA通过初始化 ( A ) 矩阵为高斯分布, ( B ) 矩阵为零矩阵,使得模型在初始阶段保持稳定,然后逐渐调整这两个矩阵中的参数,以学习新的任务知识。这不仅加快了训练速度,还节约了大量资源。 微调后,通过计算最优的 ( A ) 和 ( B ) 矩阵,我们可以得到新的权重增量 ( \Delta W ),将其加到预训练的矩阵 ( W ) 上,即可获得最终的微调模型。虽然矩阵乘法 ( B A ) 在每次计算时可能较为耗时,但在实践中只会执行一次,因此影响不大。此外,计算完成后不再需要存储 ( A )、 ( B ) 或 ( \Delta W ),进一步节省存储空间。 除了能够有效降低参数数量,LoRA技术还允许模型通过不同的“适配器”灵活应对多个下游任务。每个适配器是由一对 ( A ) 和 ( B ) 矩阵组成的,这些矩阵用于解决特定的任务。例如,在开发一个聊天机器人系统时,用户可以选择不同的人物角色(如哈利•波特、愤怒的小鸟或罗纳尔多),而系统则通过动态切换适配器来实现这一功能。这种方式不仅高效,还具有良好的可扩展性。 QLoRA是基于LoRA的一种进一步优化方法,主要通过量化技术减少模型权重的数据表示位数,从而进一步降低内存和计算需求。量化技术将神经网络中的浮点权重从32位压缩到更低的位数,如16位,而性能损失甚微。 另一种替代方法是前缀调优(prefix-tuning),该方法通过在Transformer模型的注意力层中添加适配器,同样实现了降低微调时的参数数量。与LoRA不同的是,前缀调优不会改变模型的基本结构,而是冻结所有层,仅调整作为前缀的几层。这种方法在处理特别有限的计算和内存资源时更加有效,但多数情况下,LoRA仍更受欢迎。 总之,本文介绍了如何利用LoRA和QLoRA技术对大型语言模型进行高效微调,这些技术不仅大幅提升了训练的速度和效率,还使得单一模型能够灵活应对多种下游任务,同时也讨论了前缀调优作为另一种优化方案的优缺点。 业内评价认为,LoRA和QLoRA技术在大型语言模型的微调领域中具有突破性的意义。它们不仅解决了长期以来的资源和效率问题,还为模型的多样化应用提供了可能性。这一领域的创新将进一步推动人工智能技术的发展,尤其是在资源受限的设备和场景中。谷歌、Meta等大型科技公司已经在积极研究并应用这些技术,以提升自身产品的竞争力。

Related Links