peft

用极低成本微调大模型,省显存省时间,效果不打折。

开源 🏷️完全免费 🔧 仅开源项目,无在线服务,需自行部署 开源模型 🍴 复刻 2652 🐛 待处理 114 👀 关注 114
GitHub ↗
GitHub 星标 ★ 21878
维护状态 活跃
是否开源 开源
定价模式 🏷️完全免费 开源库,Apache-2.0许可证,完全免费,可自行部署使用。

项目预览

peft 项目界面预览图
图片来源:GitHub 官方仓库名片

项目数据

分类开源模型
开发团队huggingface
定价模式🏷️完全免费
价格说明开源库,Apache-2.0许可证,完全免费,可自行部署使用。
访问状态🔧 仅开源项目,无在线服务,需自行部署
是否开源是
开源协议Apache-2.0
主要语言Python
技术栈/模型adapter,diffusion,fine-tuning,llm,lora,parameter-efficient-learning,peft,python,pytorch,transformers
GitHub 星标★ 21878
上线时间2022-11-25 00:00:00
代码更新2026-11-05
仓库体积33.4 MB
本站数据更新2026-11-09
维护状态活跃
收录时间2026-08-09
浏览次数7

项目介绍

PEFT 是一个专注于参数高效微调(Parameter-Efficient Fine-Tuning)的 Python 库,由 Hugging Face 团队维护。它解决了在大规模预训练模型(如 Transformer 架构)上进行全量微调时计算资源消耗巨大、训练成本高昂的问题。PEFT 提供了多种前沿的微调方法,包括 LoRA、Prefix Tuning、P-Tuning、Prompt Tuning、AdaLoRA 等,这些方法通过冻结大部分预训练参数,仅训练少量新增或选定的参数,从而在保持甚至提升模型性能的同时,大幅降低显存占用和训练时间。其核心能力包括:统一的 API 设计,支持与 Transformers、Diffusers 等主流库无缝集成;支持多种模型类型(LLM、扩散模型、多模态模型);提供模型保存与加载的便捷接口,微调后的模型体积小,便于部署。PEFT 已成为 Hugging Face 生态中微调大模型的标准工具之一,广泛应用于 NLP、CV 和生成式 AI 领域。

Star 增长趋势

本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整

数据来源:GitHub API 逐日快照 · 收录于 2026-08-09 · 当前星标 ★ 21878

使用教程

难度:入门 约 10 分钟 部署方式:库/依赖 4 步

环境要求

  • Python 环境并可使用 pip(README 未指定最低版本)
  • 已安装 PyTorch(示例代码 import torch)
  • 已安装 transformers(示例代码 import transformers)
  • 可选:Accelerate,用于超大模型的分布式训练与推理

安装与启动步骤

  1. 1安装 PEFT

    使用 pip 从 PyPI 安装 PEFT 库本体,这是 README Quickstart 给出的唯一安装命令。

    pip install peft
  2. 2加载基础模型

    导入 torch 与 transformers,按 README 示例选择设备并加载 Qwen2.5-3B-Instruct 作为待微调基础模型。

    import torch
    from transformers import AutoModelForCausalLM
    
    device = torch.accelerator.current_accelerator().type if hasattr(torch, "accelerator") else "cuda"
    model_id = "Qwen/Qwen2.5-3B-Instruct"
    model = AutoModelForCausalLM.from_pretrained(model_id, device_map=device)
  3. 3包装为 LoRA 模型

    用 LoraConfig 配置 r、lora_alpha、task_type,再通过 get_peft_model 把基础模型包装成 PEFT 模型。

    from peft import LoraConfig, TaskType, get_peft_model
    
    peft_config = LoraConfig(
        r=16,
        lora_alpha=32,
        task_type=TaskType.CAUSAL_LM,
    )
    model = get_peft_model(model, peft_config)
  4. 4查看可训练参数

    调用 print_trainable_parameters 打印被训练的参数量与占比,README 示例中仅为全部参数的 0.19%。

    model.print_trainable_parameters()

关键配置

配置项必填说明示例
r是LoRA 低秩矩阵的秩,示例取 1616
lora_alpha是LoRA 缩放系数,示例取 3232
task_type是任务类型,示例为因果语言模型TaskType.CAUSAL_LM
target_modules否指定要加 LoRA 的模块,README 中该行为注释状态["q_proj", "v_proj"]
model_id否基础模型标识,README 示例使用 Qwen2.5-3B-InstructQwen/Qwen2.5-3B-Instruct

如何确认成功

运行 model.print_trainable_parameters(),若正常输出可训练参数量及占比(示例为 0.19%)即说明 PEFT 配置生效。

常见问题

Q:需要微调模型全部参数吗?

A:不需要。PEFT 冻结大部分预训练参数,只训练少量新增或选定参数,README 示例中仅训练 0.19% 的参数,可大幅降低计算与存储成本。

Q:支持哪些参数高效微调方法?

A:README 示例演示了 LoRA;项目介绍中还提到 Prefix Tuning、P-Tuning、Prompt Tuning、AdaLoRA 等方法。

Q:怎么指定要微调的模块?

A:在 LoraConfig 中传入 target_modules 参数,例如 ["q_proj", "v_proj"];README 示例中该行是可选的,默认被注释掉。

Q:超大模型怎么做分布式训练?

A:PEFT 与 Accelerate 集成,可用于超大模型的分布式训练与推理;同时与 Transformers、Diffusers 集成。

Q:pip install peft 会一并装好 torch 和 transformers 吗?

A:README 只给出 pip install peft,未说明会附带 torch、transformers,示例代码额外导入了这两个库,请自行确认环境可用。

注意事项

  • README 未给出显存、GPU 型号等硬件最低要求,实际需求取决于所选基础模型规模。
  • 示例默认加载 Qwen/Qwen2.5-3B-Instruct,首次运行会从 Hugging Face 下载模型权重,需保证网络与磁盘空间。
  • README 未提供 git clone、Docker 或云服务部署方式,本教程按库/依赖方式安装使用。
  • 务必执行 model.print_trainable_parameters() 确认可训练参数占比,避免误做了全量微调。

核心亮点

  • 支持 LoRA、Prefix Tuning 等多种主流高效微调方法,选择灵活
  • 与 Hugging Face Transformers 深度集成,几行代码即可切换微调策略
  • 微调后模型文件小,便于存储和分发,显存占用显著降低

不足之处

  • 文档偏重 API 使用,对方法原理和适用场景的深入讲解不足
  • 部分新方法(如 AdaLoRA)的成熟度和社区支持不如 LoRA

适用场景

  • 在单卡或低显存环境下微调 7B 以上大语言模型
  • 针对特定领域(如法律、医疗)快速定制 LLM 的对话风格
  • 为扩散模型(如 Stable Diffusion)进行个性化微调

替代项目

LoRA、Adapters、OpenDelta

上一篇:self-llm

下一篇:ms-swift

同类项目推荐

panda 开源

用补丁注意力搞定非线性动力学,论文级模型直接上手

Patched Attention for Nonlinear Dynamics [ICLR 2026]

★ 178 2026-08-09
adaptive-classifier 开源

让文本分类模型随新数据自动进化,无需频繁重训

A flexible, adaptive classification system for dynamic text classification

★ 578 2026-08-09
perfusion-pytorch 开源

用少量样本给文本生成模型打补丁,实现精准图像编辑

Implementation of Key-Locked Rank One Editing, from Nvidia AI

★ 238 2026-08-09
InstructERC 开源

用指令微调让情感识别更灵活,一个模型搞定多种任务

The offical realization of InstructERC

★ 150 2026-08-09
OpenEBFM 开源

能量基基础模型的开源训练与扩展代码

Open-source code for training and scaling up energy-based foundation models.

★ 296 2026-10-31
sd-webui-traintrain 开源

在 WebUI 里点几下就能训练自己的 LoRA 模型

LoRA training extention for Stable Diffusion Web-UI

★ 226 2026-09-18
arkor 开源

用 TypeScript 搞定大模型微调,工程化更顺滑

The Best TypeScript framework for fine-tuning

★ 146 2026-08-09
d1 开源

用强化学习给扩散大模型补上推理能力

Official Implementation for the paper "d1: Scaling Reasoning in Diffusion Large Lang···

★ 460 2026-09-15
KDFlow 开源

一套配置跑通多种LLM蒸馏,小模型也能继承大模型能力

A user-friendly & efficient knowledge distillation framework for LLMs, supporting of···

★ 256 2026-10-07