LoRA低秩自适应微调技术原理及实践

大型语言模型的低秩自适应 (LoRA) 用于解决微调大型语言模型 (LLM) 的挑战。GPT 和 Llama 等模型拥有数十亿个参数,通常对于特定任务或领域进行微调的成本过高。LoRA 保留了预训练的模型权重,并在每个模型块中加入了可训练层。这显著减少了需要微调的参数数量,并大大降低了 GPU 内存需求。LoRA 的主要优势在于,它大幅减少了可训练参数的数量——有时最多可减少 10,000 倍——从而大大降低了 GPU 资源需求。

NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - Three.js虚拟轴心开发包 - 3D模型在线减面 - STL模型在线切割 

1、LoRA 为何有效

预训练的 LLM 在适应新任务时具有较低的“固有维度”,这意味着数据可以通过低维空间有效地表示或近似,同时保留其大部分基本信息或结构。我们可以将适应任务的新权重矩阵分解为低维(较小)矩阵,而不会丢失大量重要信息。我们通过低秩近似实现这一点。

矩阵的秩是一个可以让你了解矩阵复杂度的值。矩阵的低秩近似旨在尽可能接近原始矩阵,但秩较低。低秩矩阵降低了计算复杂度,从而提高了矩阵乘法的效率。低秩分解是指通过推导矩阵 A 的低秩近似来有效近似矩阵 A 的过程。奇异值分解 (SVD) 是一种常用的低秩分解方法。

假设 W 表示给定神经网络层中的权重矩阵,假设 ΔW 是经过完全微调后 W 的权重更新。然后,我们可以将权重更新矩阵 ΔW 分解为两个较小的矩阵:ΔW = WA*WB,其中 WA 是 A × r 维矩阵,WB 是 r × B 维矩阵。在这里,我们保持原始权重 W 不变,只训练新矩阵 WA 和 WB。这总结了 LoRA 方法,如下图所示。

LoRA 的优势如下:

  • 减少资源消耗。对深度学习模型进行微调通常需要大量计算资源,这可能既昂贵又耗时。LoRA 可在保持高性能的同时减少对资源的需求。
  • 更快的迭代。LoRA 可实现快速迭代,从而更轻松地尝试不同的微调任务并快速调整模型。
  • 改进迁移学习。LoRA 提高了迁移学习的有效性,因为带有 LoRA 适配器的模型可以用更少的数据进行微调。这在标记数据稀缺的情况下尤其有价值。
  • 广泛适用。LoRA 用途广泛,可应用于自然语言处理、计算机视觉和语音识别等不同领域。
  • 降低碳排放。通过减少计算要求,LoRA 有助于实现更环保、更可持续的深度学习方法。

2、使用 LoRA 技术训练神经网络

在此博客中,我们利用 CIFAR-10 数据集,使用几个epoch从头开始训练基本图像分类器。之后,我们进一步使用 LoRA 训练模型,说明将 LoRA 纳入训练过程的优势。

2.1 设置

此演示使用以下设置创建。有关全面的支持详细信息,请参阅 ROCm 文档

硬件和操作系统:

  • AMD Instinct GPU
  • Ubuntu 22.04.3 LTS

软件:

  • ROCm 5.7.0+
  • Pytorch 2.0+

2.2 训练初始模型

导入软件包:


                
### 自适应 (LoRA) 模型微调与参数高效调整 #### 定义与原理 自适配(LoRA)[^3]是一种旨在减少预训练模型在特定下游任务上微调所需资源的技术。这种方法的核心在于将原本庞大的全连接层或注意力机制中的权重矩阵分解成两个较小维度的矩阵乘积形式,即$W=U\cdot V^{T}$,其中$U,V \in R^{r\times d}, r<d$。这种做法不仅能够大幅度削减待优化变量数目,而且有助于缓解过拟合现象。 #### 实现细节 具体来说,在Transformer架构里应用LoRA意味着只允许某些选定位置处的小规模新增模块参与反向传播过程并接受梯度更新操作;与此同时保持其余大部分网络组件处于冻结状态不变动。对于每一个被选中的线性变换而言,则会额外附加一对形状分别为$(d,r)$和$(r,d)$的新张量作为其扩展部分[^1]。 当执行评估模式(`model.eval()`), LoRA 参数将会同对应的预训练参数相融合以确保推理阶段无任何性能损耗; 而切换回训练模式 (`model.train()`) 后又自动恢复原状以便继续迭代改进[4]. ```python from peft import get_peft_model, LoraConfig, TaskType lora_config = LoraConfig( task_type=TaskType.SEQ_CLS, inference_mode=False, r=8, ) peft_model = get_peft_model(model, lora_config) ``` 上述代码片段展示了如何配置以及获取一个带有LoRA设置的目标分类任务专用PEFT(Prompt Engineering Fine-Tuning)版本transformer model实例. #### 性能优势 相较于其他选择性的参数高效微调方案(SaRA),LoRA可以在GPU内存占用方面提供超过百分之四十以上的节约效果,并且仅需极少量改动即可完成集成部署工作流转换[2].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值