unify-parameter-efficient-tuning

GitHub
544 43 中等 1 次阅读 2周前Apache-2.0语言模型开发框架
AI 解读 由 AI 自动生成,仅供参考

unify-parameter-efficient-tuning 是 ICLR 2022 亮点论文《Towards a Unified View of Parameter-Efficient Transfer Learning》的官方开源实现。它致力于解决大模型微调中参数量巨大、计算成本高昂的难题,通过仅调整极少量的额外参数,即可将预训练模型高效适配到下游任务中。

该项目的核心突破在于提出了一个统一的参数高效迁移学习(PETL)框架。它深入揭示了 Adapter、Prefix Tuning 和 LoRA 等主流方法之间的内在联系,证明这些看似独立的技术实际上可以通过调整几个关键设计维度,在同一个框架下被实例化和解释。这不仅帮助研究者理清了现有方法的脉络,更为设计新型高效微调算法提供了原则性的指导。借助此框架,用户可以轻松复现论文中的 SOTA 结果(如 MAM-Adapter),甚至通过修改配置快速衍生出新的变体。

unify-parameter-efficient-tuning 主要面向 AI 研究人员和深度学习开发者,特别是那些需要在资源受限环境下探索大模型应用或从事迁移学习理论研究的团队。由于基于 Hugging Face Transformers 构建,它也适合希望灵活实验不同微调策略的工程人员。如果你正在寻找一种既能节省显存又能保持模型性能,且具备高度可扩展性的微调方案,这个项目将提供坚实的理论支撑与代码基础。

使用场景

某初创公司的算法团队需要在有限的单卡 GPU 资源上,将大规模预训练模型快速适配到多个垂直领域的文本生成任务中。

没有 unify-parameter-efficient-tuning 时

  • 显存爆炸导致无法训练:尝试对百亿参数模型进行全量微调时,单张 A6000 显卡显存瞬间溢出,被迫购买昂贵的多卡集群或放弃大模型方案。
  • 方法试错成本极高:想要对比 Adapter、Prefix Tuning 和 LoRA 哪种更适合当前业务,需要分别寻找不同的代码库并重构数据加载逻辑,耗时数周。
  • 性能与效率难以平衡:手动修改模型结构添加旁路模块时,常因初始化策略不当导致收敛困难,最终效果甚至不如简单的全量微调小模型。
  • 新方案设计无据可依:团队想结合多种高效微调策略的优势设计新方法,但缺乏统一的理论框架指导,只能盲目猜测参数组合。

使用 unify-parameter-efficient-tuning 后

  • 单卡轻松驾驭大模型:利用其内置的 MAM-Adapter 等高效策略,仅需微调极少量参数,在单张 40GB 显存显卡上即可顺利完成 XSum 摘要或机器翻译任务的训练。
  • 统一框架一键切换策略:通过修改脚本中 attn_modeffn_option 等几个配置维度,即可在同一套代码环境中无缝切换并复现 LoRA、Prefix Tuning 等多种主流算法。
  • 开箱即用的 SOTA 性能:直接调用论文验证过的最佳实践配置(如特定的初始化选项和缩放因子),模型在 SST2 等数据集上快速收敛并达到业界领先效果。
  • 创新研发有章可循:基于其提出的统一视图,团队能够系统地调整设计维度,快速衍生出针对特定业务场景优化的新型高效微调架构。

unify-parameter-efficient-tuning 通过统一框架消除了不同高效微调方法间的实现壁垒,让开发者能在低资源环境下以最低成本探索并部署最优的大模型适配方案。

运行环境要求

操作系统
  • 未说明
GPU
  • 必需 NVIDIA GPU
  • 实验使用单张 A6000 或 A100 (显存 >=40GB)
  • 若显存较小,需减小 batch size
  • 支持多卡数据并行训练
内存

未说明

依赖
notes该仓库是 Hugging Face transformers 的分支版本,安装时需从当前源码目录执行 'pip install -e .'。若要复现英罗翻译任务的 BLEU 分数,需额外克隆 mosesdecoder 项目。训练时间较长(例如 XSum 数据集在 A100 上需 24 小时),小显存用户需调整脚本中的批次大小参数。
python未说明
PyTorch==1.9.0
transformers (基于 2021-06-23 版本的 fork)
datasets==1.11.0
unify-parameter-efficient-tuning hero image

快速开始

一种参数高效的迁移学习统一框架

这是论文的官方实现:

迈向参数高效迁移学习的统一视角
何俊贤*、周春婷*、马学哲、泰勒·伯格-柯克帕特里克、格雷厄姆·诺伊比格
ICLR 2022(亮点论文)

参数高效的迁移学习(PETL)方法仅调整少量(额外的)参数,以将大型预训练模型适配到下游任务中。本文揭示了现有PETL方法(如Adapter、前缀调优和LoRA)之间的联系,并提出了一种统一框架来解释它们的设计。该统一框架可以通过在几个定义的设计维度上改变取值来实例化现有的方法,同时也为设计新的PETL方法提供了原则性的指导。在本仓库以及论文中,我们展示了如何从统一框架中轻松推导出新的最先进PETL方法。

intro

更新

2022年3月24日

我们的MAM Adapter和并行Adapter已被集成到adapter-transformers包中(感谢其开发者!),详情请参阅他们的发布博客。借助adapter-transformers,您可以轻松地将MAM Adapter或并行Adapter应用于各种任务和预训练模型,例如,以下代码基于一个预训练模型设置了一个MAM Adapter:

# 这是基于adapter-transformers包的用法示例,而非本仓库
from transformers.adapters import MAMConfig

config = MAMConfig()
model.add_adapter("mam_adapter", config=config)

依赖项

本仓库是Hugging Face Transformers仓库的一个分支(于2021年6月23日分叉),代码已在PyTorch 1.9.0上测试通过。请在安装好PyTorch后,按照以下说明安装依赖项:

git clone git@github.com:jxhe/unify-parameter-efficient-tuning.git
cd unify-parameter-efficient-tuning

# 从本仓库安装transformers
pip install -e .

# 安装其他依赖
pip install datasets==1.11.0

# 用于计算英-罗翻译的BLEU分数
git clone git@github.com:moses-smt/mosesdecoder.git

使用方法

MAM-Adapter

运行以下命令,即可在XSum、英-罗翻译、MNLI或SST2数据集上复现论文中的MAM-Adapter结果:

bash exps/run_{xsum|en_ro|glue}.sh

我们在一台具有≥40GB显存的A6000或A100 GPU上完成了所有实验——如果您的GPU显存较小,可能需要降低bsz(对于英-罗翻译则是max_tokens_per_batch),并相应增加脚本中的gradient_steps值,以匹配我们的有效批次大小。您也可以使用python -m torch.distributed.launch --nproc_per_node {num_gpus} 轻松地利用多块GPU进行数据并行训练。

训练时间: 在我们使用单块GPU的实验中,XSum需时24小时(A100)或50小时(A6000),英-罗翻译需时20小时(A6000),SST2需时2小时,MNLI需时10小时。

其他PETL变体的高级用法

正如论文所示,我们的统一框架可以通过在设计维度上调整参数,轻松实例化不同的PETL变体。您可以修改脚本以训练我们在论文中研究的其他PETL变体,我们在run_xsum.sh中提供了一些示例,这些示例也可直接应用于其他脚本:

# ----- MAM Adapter -----
attn_mode="prefix"
attn_option="concat"
attn_composition="add"
attn_bn=30  # 注意力瓶颈维度

ffn_mode="adapter"
ffn_option="parallel"
ffn_adapter_layernorm_option="none"
ffn_adapter_init_option="lora"
ffn_adapter_scalar="4"
ffn_bn=512 # 前馈网络瓶颈维度

# ----- 前缀调优基线 -----
# attn_mode="prefix"
# attn_option="concat"
# attn_composition="add"
# attn_bn=200  # 注意力瓶颈维度

# ffn_mode="none"
# ffn_option="parallel"
# ffn_adapter_layernorm_option="none"
# ffn_adapter_init_option="lora"
# ffn_adapter_scalar="4"
# ffn_bn=512 # 前馈网络瓶颈维度

# ----- 霍尔斯比Adapter -----
# attn_mode="adapter"
# attn_option="sequential"
# attn_composition="add"
# attn_bn=200  # 注意力瓶颈维度

# ffn_mode="adapter"
# ffn_option="sequential"
# ffn_adapter_layernorm_option="none"
# ffn_adapter_init_option="bert"
# ffn_adapter_scalar="1"
# ffn_bn=200 # 前馈网络瓶颈维度


# ----- 缩放并行FFN Adapter -----
# attn_mode="none"
# attn_option="parallel"
# attn_composition="add"
# attn_bn=200  # 注意力瓶颈维度

# ffn_mode="adapter"
# ffn_option="parallel"
# ffn_adapter_layernorm_option="none"
# ffn_adapter_init_option="lora"
# ffn_adapter_scalar="4"
# ffn_bn=512 # 前馈网络瓶颈维度

# ----- 提示调优 -----
# attn_mode="prompt_tuning"
# attn_option="parallel"
# attn_composition="add"
# attn_bn=200  # 注意力瓶颈维度

# ffn_mode="none"
# ffn_option="parallel"
# ffn_adapter_layernorm_option="none"
# ffn_adapter_init_option="lora"
# ffn_adapter_scalar="4"
# ffn_bn=512 # 前馈网络瓶颈维度

# ----- BitFit -----
# attn_mode="bitfit"
# attn_option="parallel"
# attn_composition="add"
# attn_bn=200  # 注意力瓶颈维度

# ffn_mode="none"
# ffn_option="parallel"
# ffn_adapter_layernorm_option="none"
# ffn_adapter_init_option="lora"
# ffn_adapter_scalar="4"
# ffn_bn=512 # 前馈网络瓶颈维度

# ----- LoRA -----
# attn_mode="lora"
# attn_option="none"
# attn_composition="add"
# attn_bn=16

# # 将ffn_mode设置为'lora'以同时在前馈网络中使用LoRA

# ffn_mode="none"
# ffn_option="none"
# ffn_adapter_layernorm_option="none"
# ffn_adapter_init_option="bert"
# ffn_adapter_scalar="1"
# ffn_bn=16

# lora_alpha=32
# lora_dropout=0.1
# lora_init="lora"

以上展示的只是众多变体中的一部分。有关这些参数的完整说明,请参阅petl/options.py中的此处。通过更改脚本中的这些值,可以复现论文中报告的所有变体的结果。

引用

@inproceedings{he2022towards,
title={迈向参数高效迁移学习的统一视角},
author={何俊贤、周春婷、马学哲、泰勒·伯格-柯克帕特里克、格雷厄姆·诺伊比格},
booktitle={国际表征学习会议},
year={2022},
url={https://openreview.net/forum?id=0RDcd5Axok}
}

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|1周前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|1周前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

159.3k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.3k|★★☆☆☆|1周前
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|1周前
插件Agent图像

markitdown

MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|1周前
插件开发框架