当前位置: 首页 > news >正文

NLP高频面试题(十二)——Lora微调的原理、什么是Qlora

一、什么是LoRA?

LoRA(Low-Rank Adaptation)是一种针对大型预训练模型的微调方法,其核心思想是通过低秩矩阵分解的方式高效实现模型参数的微调。传统的微调方法通常需要更新模型所有的参数,而LoRA则通过新增一个并行的低秩结构来间接实现模型参数的更新。

二、LoRA的原理

在标准的神经网络全连接层中,权重矩阵一般是高维的、满秩的矩阵。而LoRA的主要思想则是认为针对特定任务进行微调时,这些权重矩阵实际上可以通过一个低秩矩阵来很好地近似。

具体来说,LoRA在原始模型权重矩阵 (W_0) 的旁边增加了两个新的矩阵 (A) 和 (B):

  • 矩阵 (A) 负责降维,将原始维度 (d) 降为 (r) (一般 (r << d));
  • 矩阵 (B) 负责升维,再将维度 (r) 恢复为 (d)。

因此,更新的权重 ( Δ W ) (\Delta W) (ΔW)可以表示为两个矩阵的乘积 ( Δ W = B A ) (\Delta W = BA) (ΔW=BA)。整个计算公式如下:

h = W 0 x + Δ W x = W 0 x + B A x h = W_0 x + \Delta W x = W_0 x + BAx h=W0x+ΔWx=W0x+BAx

在实际训练过程中,仅更新 (A) 和 (B) 两个矩阵,而预训练模型 ( W 0 ) (W_0) (W0)的参数则保持不变。这使得参数更新量大大减少,提升了训练效率。

在推理时,只需将训练后的矩阵乘积 ( B A ) (BA) (BA) 与原有权重 ( W 0 ) (W_0) (W0) 相加,即可得到新的权重矩阵 ( W = W 0 + B A ) (W = W_0 + BA) (W=W0+BA),对推理阶段的计算量几乎不造成额外负担。

三、LoRA的关键参数

  • Rank(秩): 通常选择为8,过高会抵消LoRA的效率优势,实验发现高于16效果提升有限。
  • Alpha: 通常固定为16,用于缩放训练时的权重更新。
  • 目标模块: 通常针对Attention机制的矩阵,比如Q、K、V矩阵(尤其是Q和V效果最佳)。
  • 学习率: 推荐基础学习率为 ( 1 e − 4 ) (1e^{-4}) (1e4),如训练不稳定则降低到 ( 3 e − 5 ) (3e^{-5}) (3e5)

四、LoRA的优势与限制

优势:

  • 参数效率高,仅更新极少的参数即可接近甚至超过全参数微调的性能。
  • 内存需求显著降低,使得大模型微调更易实现。

限制:

  • 对数据分布偏离过大的任务,可能难以有效适应。
  • 微调过程可能比全参数微调略慢,收敛速度受限。

五、什么是QLoRA?

QLoRA(Quantized LoRA)是在LoRA基础上提出的一种创新技术,旨在进一步降低模型微调时的内存使用,通过量化预训练模型权重至4-bit,同时结合低秩适配器(LoRA)实现高效的微调。

QLoRA的重要创新包括以下几个方面:

  • 4-bit NormalFloat量化(NF4): 一种针对正态分布数据的最优4-bit量化方法,精度损失极小。
  • 双量化技术(Double Quantization): 进一步减少权重存储空间需求,降低内存占用。
  • 分页优化器(Paged Optimizer): 利用GPU和CPU之间的统一内存管理,有效避免GPU内存溢出的问题。

六、QLoRA的优势

QLoRA的出现极大地简化了大模型的微调和部署过程,主要表现为:

  • 显著降低内存需求: 使用QLoRA技术后,即使在单张GPU上,也能完成像LLaMA 65B这种超大型模型的微调。
  • 性能无损: 实验证明,经过4-bit量化后的模型,通过QLoRA微调后,仍能达到与16-bit全参数微调几乎相同的性能。
  • 易用性增强: QLoRA使得个人和小团队能够更轻松地针对私有数据高效微调和部署大模型。

七、总结与展望

LoRA和QLoRA作为新兴的高效微调技术,极大地降低了大模型的使用门槛。未来,随着这些技术的进一步成熟和发展,每个人都能更方便地定制和部署个性化的AI服务,这也将推动AI应用进入更多领域与场景。

相关文章:

  • AWS NoSQL解决方案全景图
  • 【MySQL笔记】数据类型
  • 外设的中断控制
  • java设计模式之代理模式《赛博园丁的代理觉醒》
  • Mybatis注解的基础操作——02
  • 基于STM32单片机的智能手环/音乐播放/语音识别
  • RWKV-7:超越Transformer的新一代RNN架构解析
  • Vue3组件设计模式:高可复用性组件开发实战
  • 【数据结构】_单链表_相关面试题(一)
  • 使用欧拉法数值求解微分方程的 Python 实现
  • Windows 和 Linux 系统下,如何查看 Redis 的版本号?
  • 4.2、网络安全体系与建设内容
  • 游戏引擎学习第179天
  • Django跨域问题解决方法
  • 用Selenium+lxml库完成淄博链家网数据的爬取
  • 微服务中的服务发现
  • 基于人工智能的扫阅卷和数据分析服务需求文档
  • 虚幻基础:UI
  • fastapi+playwright爬取google搜索1-3页的关键词返回json
  • C++——引用
  • 三亚通报救护车省外拉警报器开道旅游:违规违法,责令公司停业整顿
  • 李公明谈“全球南方”与美术馆
  • 女高音吴睿睿“古词新唱”,穿着汉服唱唐诗宋词
  • 湛江霞山通报渔船火灾:起火船舶共8艘,无人员伤亡或被困
  • 马上评丨为护士减负,不妨破除论文“硬指标”
  • 百利天恒董事长向复旦捐赠三千万元,用于支持创新药物靶点发现等师资建设需要