LoRA:大型语言模型的低秩适应 LoRA

4/5 🧩 软硬件结合 已发布
microsoft 3604 Stars 未知 BOM 完整度: 0/5 教程完整度: 0/5

项目简介

Code for loralib, an implementation of "LoRA: Low-Rank Adaptation of Large Language Models"


LoRA(Low-Rank Adaptation)是由微软研究院提出的一种高效微调大型语言模型的方法,其核心思想是通过学习低秩分解矩阵来更新模型参数,同时冻结原始预训练权重。这种方法极大地减少了可训练参数的数量,从而显著降低了存储需求,并支持在部署时高效切换不同任务,且不会引入推理延迟。项目提供了Python包`loralib`,并集成了多个基于PyTorch的示例,特别是与Hugging Face模型的兼容性,使得用户可以轻松地将LoRA应用于现有的预训练模型。

标签

项目特点

**参数高效**:通过低秩分解,仅需训练和存储极少量参数(如RoBERTa base仅需0.8M参数),即可达到或超越全量微调的性能。
**无推理延迟**:训练完成后,可以将低秩矩阵与原始权重合并,推理时不会引入额外的计算开销。
**任务切换高效**:只需存储小型的LoRA权重文件,即可在部署时快速切换不同任务,无需存储完整的模型副本。
**易于集成**:提供`loralib` Python包,可轻松替换PyTorch中的`nn.Linear`、`nn.Embedding`和`nn.Conv2d`层。
**性能优越**:在GLUE基准测试和E2E NLG、DART、WebNLG等自然语言生成任务上,表现优于Adapter、Prefix-tuning等其他参数高效微调方法。

技术规格

核心方法 低秩分解矩阵对(Low-Rank Decomposition Matrices)
支持框架 PyTorch
支持层类型 `nn.Linear`, `nn.Embedding`, `nn.Conv2d`
可训练参数(RoBERTa base) 0.8M(全量微调为125M)
可训练参数(DeBERTa XXL) 4.7M(全量微调为1.5B)
可训练参数(GPT-2 Medium) 0.35M(全量微调为354.92M)
可训练参数(GPT-2 Large) 0.77M(全量微调为774.03M)
默认秩(rank) 16(可自定义)
默认适应层 Transformer的q和v投影矩阵(可自定义)

项目资源

物料清单 (BOM)

物料名称 数量 参考价格 备注
Python 1 编程语言
PyTorch 1 深度学习框架
loralib 1 项目提供的Python包
Hugging Face Transformers 1 可选,用于加载预训练模型
GPU(如NVIDIA V100/A100) 1 推荐用于训练大型模型
内存 1 至少16GB,取决于模型大小

能力画像

⚪ 记忆与知识检索: 1/5
🔵 逻辑推演: 3/5
⚪ 表达与交流: 1/5
⚪ 感知与观察: 1/5
🔵 数理与计算: 4/5
🔵 动手与操作: 3/5
🔵 狂热与坚持: 3/5
🔵 创造与创新: 4/5

视频

所需技能

🔧 **动手能力**:需要能够搭建Python开发环境,安装依赖包,运行训练脚本,并理解模型训练的基本流程。 💻 **编程能力**:需要具备Python编程基础,熟悉PyTorch框架,了解深度学习模型(如Transformer)的基本结构。 ⚡ **电子电路**:不适用。

适用场景

**大语言模型微调**:对预训练的大型语言模型(如GPT、RoBERTa、DeBERTa)进行下游任务微调,显著降低计算和存储成本。
**多任务部署**:在单一模型上部署多个任务,通过加载不同的LoRA权重实现任务切换,无需维护多个完整模型。
**资源受限环境**:在GPU内存或存储空间有限的场景下,对大型模型进行高效微调。
**研究与实验**:探索不同参数高效微调方法的性能对比,或研究低秩适应在不同模型架构上的效果。