L2 · 主题中枢

参数高效微调

LLM微调LoRAQLoRAAdapter显存优化模型适配

冻结主干、训练少量参数,以 1% 代价换取 90% 以上的任务适配效果。

1%可训练参数占比
3主流方法
4-8bit量化支持
先记住PEFT 不是全量微调的平替,而是资源与灵活性的最优解。

通过低秩分解或外挂模块,在保持基座能力的前提下快速适配新任务,适合多场景快速迭代与显存受限环境。

LIVE
CORE PEFT 核心
01 WHAT

是什么

在保持预训练大模型主干参数冻结的前提下,仅训练少量新增或低秩参数,使模型快速适配特定任务或领域。

02 WHY

为什么

全量微调显存与算力成本极高且易灾难性遗忘;PEFT 以 1% 甚至更少的可训练参数量实现接近全量微调的效果,适合资源受限或需多任务快速切换的场景。

03 HOW

怎么做

选择 PEFT 方法(如 LoRA/QLoRA/Adapter),配置低秩维度与目标模块,加载量化或冻结基座模型,注入可训练层后按常规流程训练并合并权重。

04 WHEN

什么时候

适用于垂直领域适配、多任务快速切换与显存受限环境;当任务需深度重构模型表征、数据分布与预训练差异极大或需极致性能时,应评估全量微调。

THIS PAGE INCLUDES
LoRAQLoRAAdapter

FOCUS

先记住这些

只留最重要的判断,细节见下方实践
01 独特价值

为什么需要 PEFT

全量微调显存高、易遗忘、部署重;PEFT 以极低参数量实现高效适配,支持多任务热插拔,显著降低算力与运维成本。

02 复杂度

真正难在哪里

秩与 alpha 的平衡、目标模块选择、量化精度损失、多适配器冲突、训练稳定性与评估指标对齐,需系统化调优与验证。

03 使用判断

什么时候用

显存受限、需快速验证多任务、数据分布与基座相近时优先 PEFT;当需深度重构表征或追求极致性能时评估全量微调。

ROUTE

学习路径

建议按此顺序逐步深入
01
理解原理

掌握低秩分解、外挂模块与量化基座的核心思想,明确各方法适用场景。

02
最小闭环

使用 PEFT 库加载基座模型,配置 LoRA 参数,跑通单任务训练与验证。

03
调优与部署

调整秩/alpha/目标模块,验证多任务切换,导出权重并接入推理服务。

PROBLEM / POSITION / INTERFACE

先弄清它为什么存在,以及谁在使用

不从历史开始,从真实工作关系开始。
  1. 01 解决的问题

    需要将通用大模型适配到特定业务数据,但受限于显存、算力或训练时间,无法进行全参数更新。

    全量微调显存占用高、训练慢、易遗忘通用能力,且多任务部署需维护多个完整模型副本,成本与运维压力大。

    成功标准
    以极低显存与参数量完成训练,在目标任务上达到可用指标,且能灵活切换或合并多个适配权重,不破坏基座能力。
  2. 02 AI 生态位

    位于预训练模型与下游任务之间,作为轻量级适配层,承接领域数据输入并输出任务特定表征,下游对接推理服务或评估管线。

    上游
    依赖预训练基座模型(如 Llama、Qwen 等)、领域训练数据、量化/冻结策略与训练框架(如 PEFT、Transformers)。
    下游
    为推理服务、多任务路由、模型评估与部署管线提供轻量可插拔的适配权重。
  3. 03 人的生态位

    负责定义任务目标、选择 PEFT 策略、配置秩与目标模块、监控训练指标与验证效果,决定何时合并或回滚。

    适合使用
    显存受限(如单卡 24GB 以下)、需快速验证多任务、数据量中等且分布与基座相近、追求部署灵活性与成本可控。
    不必使用
    任务需深度重构模型内部表征、数据分布与预训练差异极大、对性能有极致要求且算力充足、或需修改模型架构本身。
  4. 04 独特价值

    以极小参数量实现高效适配,支持多任务权重热插拔与快速切换,显著降低显存与部署成本。

    秩与 alpha 的调优、目标模块选择、量化引入的精度损失、多适配器冲突与合并策略、训练稳定性与评估指标对齐。

    复杂度判断
    复杂度不是功能数量,而是控制与验证成本。

INTERFACE FLOW

谁在操作,信息怎样流动

  1. WHO OPERATES

    HUMAN定义任务目标、选择 PEFT 方法、配置秩与目标层、监控训练与验证指标、决定合并或保留适配器。

    SYSTEM执行参数冻结、注入可训练层、梯度计算与优化器更新、权重合并与导出。

  2. INPUT

    领域指令/问答/文本对数据,格式为标准微调数据集(如 JSONL/Parquet)。

  3. CONTROL

    低秩维度(rank/alpha)、目标模块(如 q_proj/v_proj)、量化精度(4/8-bit)、学习率、批大小、训练步数、权重合并开关。

  4. OUTPUT

    训练后的适配器权重文件(safetensors/bin)或合并后的完整模型,供推理服务加载;输出格式与基座模型一致,无额外外部动作。

FLOW

PEFT 最小训练流程

01准备数据与基座整理领域指令/问答数据,加载预训练模型并设置参数冻结。
02配置 PEFT 方法选择 LoRA/QLoRA/Adapter,设置秩、alpha、目标模块与量化精度。
03注入适配层将可训练模块注入模型,验证可训练参数数量与显存占用。
04执行训练按常规微调流程训练,监控损失与验证指标,调整学习率与步数。
05验证与合并在测试集评估效果,选择保留适配器或合并权重导出完整模型。

COMPARE

PEFT 与全量微调对比

维度PEFT全量微调
可训练参数1% 以下100%
显存占用低(可单卡 24GB 训练 70B)高(需多卡或大显存)
训练速度快(参数少、梯度计算轻)慢(全参数更新)
灾难性遗忘低(主干冻结)高(需正则或数据混合)
多任务部署支持热插拔适配器需维护多个完整模型
极致性能略低于全量微调上限更高

PRACTICE

PEFT 最小使用步骤

明确任务目标与成功指标(如准确率、BLEU、人工评估)
准备高质量领域数据,划分训练/验证/测试集
选择 PEFT 方法(LoRA/QLoRA/Adapter)与基座模型
配置秩(r)、alpha、目标模块(如 q_proj/v_proj)与量化精度
注入适配层,验证可训练参数数量与显存占用
设置学习率、批大小、训练步数,启动训练
监控损失与验证指标,必要时调整超参数
评估测试集效果,选择保留适配器或合并权重
导出模型并接入推理服务,验证端到端延迟与吞吐
CODE / PYTHONLoRA 最小训练示例
from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments
from peft import LoraConfig, get_peft_model, TaskType
from datasets import load_dataset

# 加载基座模型与分词器
model_name = "meta-llama/Llama-2-7b-hf"
model = AutoModelForCausalLM.from_pretrained(model_name, device_map="auto")
tokenizer = AutoTokenizer.from_pretrained(model_name)

# 配置 LoRA
lora_config = LoraConfig(
    task_type=TaskType.CAUSAL_LM,
    r=16,
    lora_alpha=32,
    target_modules=["q_proj", "v_proj"],
    lora_dropout=0.05,
)
model = get_peft_model(model, lora_config)

# 加载数据
dataset = load_dataset("json", data_files="train.jsonl")

# 训练参数
training_args = TrainingArguments(
    output_dir="./lora_output",
    per_device_train_batch_size=4,
    learning_rate=2e-4,
    num_train_epochs=3,
    logging_steps=10,
    save_strategy="epoch",
)

# 启动训练(伪代码,需配合 Trainer)
# trainer = Trainer(model=model, args=training_args, train_dataset=dataset["train"])
# trainer.train()

使用 PEFT 与 Transformers 跑通单任务 LoRA 微调

JSON / RESPONSELoRA 训练返回结构示例
{
  "train_loss": 1.234,
  "eval_loss": 1.189,
  "train_runtime": 3600.5,
  "train_samples_per_second": 12.3,
  "epoch": 3.0,
  "adapter_path": "./lora_output/checkpoint-3000/adapter_model.safetensors",
  "merged_model_path": "./lora_output/merged_model"
}

FAQ

常见问题

选型、用法与失败,不复述定义。
01谁在实际使用 PEFT?

算法工程师、数据科学家与 MLOps 团队,负责模型适配、训练与部署。

明确角色分工,决定接口设计、权限控制与运维责任。
02LoRA 与 QLoRA 有什么区别?

QLoRA 在 LoRA 基础上引入 4-bit 量化,显存占用更低,但需注意精度损失。

根据显存与性能需求选择合适方法,避免盲目追求低显存。
03最小可用方式是什么?

加载基座模型,配置 LoRA 参数,注入适配层,跑通单任务训练与验证。

帮助读者快速闭环,验证方法可行性。
04生产环境最容易在哪里失败?

秩与 alpha 配置不当导致欠拟合/过拟合,量化精度损失未验证,多适配器冲突。

决定监控指标、验证流程与兜底策略。
05什么时候不需要 PEFT?

任务需深度重构表征、数据分布差异极大或追求极致性能时,应评估全量微调。

控制系统成本,避免方法误用。