
peft
用极低成本微调大模型,省显存省时间,效果不打折。
项目预览
项目数据
项目介绍
Star 增长趋势
本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整
数据来源:GitHub API 逐日快照 · 收录于 2026-08-09 · 当前星标 ★ 21878
技术标签
使用教程
环境要求
- Python 环境并可使用 pip(README 未指定最低版本)
- 已安装 PyTorch(示例代码 import torch)
- 已安装 transformers(示例代码 import transformers)
- 可选:Accelerate,用于超大模型的分布式训练与推理
安装与启动步骤
-
1安装 PEFT
使用 pip 从 PyPI 安装 PEFT 库本体,这是 README Quickstart 给出的唯一安装命令。
pip install peft -
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包装为 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查看可训练参数
调用 print_trainable_parameters 打印被训练的参数量与占比,README 示例中仅为全部参数的 0.19%。
model.print_trainable_parameters()
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
r | 是 | LoRA 低秩矩阵的秩,示例取 16 | 16 |
lora_alpha | 是 | LoRA 缩放系数,示例取 32 | 32 |
task_type | 是 | 任务类型,示例为因果语言模型 | TaskType.CAUSAL_LM |
target_modules | 否 | 指定要加 LoRA 的模块,README 中该行为注释状态 | ["q_proj", "v_proj"] |
model_id | 否 | 基础模型标识,README 示例使用 Qwen2.5-3B-Instruct | Qwen/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
同类项目推荐
panda
开源
用补丁注意力搞定非线性动力学,论文级模型直接上手
Patched Attention for Nonlinear Dynamics [ICLR 2026]
adaptive-classifier
开源
让文本分类模型随新数据自动进化,无需频繁重训
A flexible, adaptive classification system for dynamic text classification
perfusion-pytorch
开源
用少量样本给文本生成模型打补丁,实现精准图像编辑
Implementation of Key-Locked Rank One Editing, from Nvidia AI
InstructERC
开源
用指令微调让情感识别更灵活,一个模型搞定多种任务
The offical realization of InstructERC
OpenEBFM
开源
能量基基础模型的开源训练与扩展代码
Open-source code for training and scaling up energy-based foundation models.
sd-webui-traintrain
开源
在 WebUI 里点几下就能训练自己的 LoRA 模型
LoRA training extention for Stable Diffusion Web-UI
arkor
开源
用 TypeScript 搞定大模型微调,工程化更顺滑
The Best TypeScript framework for fine-tuning
d1
开源
用强化学习给扩散大模型补上推理能力
Official Implementation for the paper "d1: Scaling Reasoning in Diffusion Large Lang···
KDFlow
开源
一套配置跑通多种LLM蒸馏,小模型也能继承大模型能力
A user-friendly & efficient knowledge distillation framework for LLMs, supporting of···