SuperAPI AI 工具集

LoRA

LoRA(Low-Rank Adaptation of Large Language Models)是由微软发布的低秩适配方法及其开源 Python 包 loralib 的源代码仓库。它通过学习一对低秩分解矩阵来适配大型语言模型,同时冻结原始权重,从而大幅减少可训练参数量和存储需求,便于在不同任务间高效切换,且不引入推理延迟。该实现目前仅支持 PyTorch,并提供与 Hugging Face 等 PyTorch 模型集成的示例。

访问官网

工具介绍

LoRA 是一个实现“低秩适配大型语言模型”的代码仓库,包含 Python 包 loralib 的源代码,以及若干将其集成到 PyTorch 模型(例如 Hugging Face 中的模型)的示例。目前仅支持 PyTorch。

用途 LoRA 通过冻结原始权重、学习一对低秩分解矩阵来减少可训练参数数量。这样可以显著降低针对特定任务适配大型语言模型时的存储需求,并支持部署期间高效的任务切换,同时不引入推理延迟。根据仓库说明,LoRA 在效果上优于 adapter、prefix-tuning 和 fine-tuning 等其他适配方法。

主要能力与结果 在 GLUE 基准上,使用 RoBERTa base/large 和 DeBERTa XXL 1.5B 时,LoRA 仅训练和存储一小部分参数即可获得与全量微调相当或更优的结果;仓库提供 RoBERTa 和 DeBERTa 的 LoRA 检查点下载,并提示仍需从 Hugging Face 获取原始预训练检查点。在 GPT-2 上,LoRA 与全量微调及 adapter、prefix tuning 等高效调优方法相比表现良好,评估覆盖 E2E NLG Challenge、DART 和 WebNLG,并提供 GPT-2 Medium/Large 的 LoRA 检查点下载。

使用方式 安装 loralib 后,可以选择将部分层替换为 loralib 中的对应实现来适配;目前仅支持 nn.Linear、nn.Embedding 和 nn.Conv2d,另外提供 MergedLinear 用于单个 nn.Linear 表示多层的情况(例如某些注意力 qkv 投影实现)。训练循环开始前,仅将 LoRA 参数标记为可训练;保存检查点时生成只包含 LoRA 参数的 state_dict;使用 load_state_dict 加载检查点时应设置 strict=False。仓库还说明可通过向 mark_only_lora_as_trainable 传入 "all" 或 "lora_only" 来标记偏置为可训练,并在保存检查点时向 lora_state_dict 传入相应的 bias= 参数;LoRA 可应用于任意预训练权重子集,最优配置可能因模型架构和任务而异。

仓库结构 loralib/ 包含包 loralib 的源代码,运行示例前需要安装;examples/NLG/ 包含在 GPT-2 中使用 LoRA 的示例实现,可用于复现论文结果;examples/NLU/ 包含在 RoBERTa 和 DeBERTa 中使用 LoRA 的示例实现,可在 GLUE 基准上产生有竞争力的结果。

其他说明 调用 model.eval() 会触发 LoRA 参数与对应预训练权重的合并,从而消除后续前向传播的额外延迟;再次调用 model.train() 会撤销合并;向 LoRA 层传入 merge_weights=False 可禁用该行为。2023 年 2 月更新显示,LoRA 已获得 Hugging Face 的 Parameter-Efficient Fine-Tuning(PEFT)库支持。仓库联系人与致谢、贡献指南(CLA)、行为准则与安全政策等信息见原仓库。

限制与暂未提供的内容 目前仅支持 PyTorch。关于具体安装命令、完整 API 细节、价格或收费模式、平台支持范围等,资料未完整提供,暂未提供。