当前位置:首页 > 文章列表 > 科技周边 > 人工智能 > PEFT适配器检查点为什么不包含完整基础模型

PEFT适配器检查点为什么不包含完整基础模型

来源:17golang原创 2026-10-13 20:32:00 0浏览 收藏

训练完 LoRA 或其他 PEFT 适配器,打开检查点目录却只看到 adapter_model.safetensors 和 adapter_config.json,这通常不是保存失败。PEFT 的目标就是只保存可训练的适配器参数,把体积较大的冻结基础模型留在外部;恢复时再把两者装配起来。

官方地址:https://huggingface.co/docs/peft/main/developer_guides/checkpoint

检查点不包含完整基础模型,是 PEFT 的参数高效设计。只要适配器配置仍能指向匹配的基础模型,就可以恢复推理或继续训练;只有需要独立部署时,才考虑额外保存或合并完整模型。

先看目录:缺少基础模型不等于保存失败

这次问题往往出现在两个时刻:训练任务结束后检查输出目录,或者把检查点上传到模型仓库后发现文件明显比基础模型小。先不要把“文件少”当成损坏证据,我们要先按职责拆开目录。

文件或对象负责什么是否包含完整基础模型参数
adapter_model.safetensors保存适配器的可训练权重否
adapter_config.json保存 PEFT 类型、目标模块和基础模型标识等配置否
基础模型目录或 Hub 模型提供冻结的 Transformer 主体权重是

官方 checkpoint 文档明确说明,save_pretrained() 保存的是适配器文件与配置,state_dict 只包含适配器模块参数。也就是说,保存动作本身没有把基础模型“删掉”,而是没有重复拷贝它。

PEFT冻结基础模型与适配器检查点的存储边界说明图
图1:PEFT 检查点边界说明图,适配器文件与冻结基础模型分别位于两个存储域。

故障根因:训练更新范围和保存范围是同一件事

PEFT 训练时,基础模型大部分参数被冻结,优化器真正更新的是 LoRA 矩阵、Prefix 等适配器参数。为了让检查点足够小、便于在多个基础模型副本之间复用,保存器默认沿用这个边界:把会变化的部分保存下来,把不会变化的部分留给加载方提供。

因此需要区分三个容易混淆的对象:

  • 训练检查点:用于保存适配器进度,通常还会由 Trainer 维护训练状态,以便从某个 checkpoint 继续训练。
  • 适配器发布包:权重加配置,适合在已知基础模型的前提下共享、切换和挂载。
  • 独立部署模型:不希望部署环境再寻找基础模型时,才需要把基础模型一起交付,或将适配器合并进基础权重后另存。

换句话说,检查点小并不代表训练结果丢失;它代表结果被表达成“基础模型 + 增量适配器”的组合。

恢复检查点:先加载基础模型,再挂载适配器

恢复的关键顺序是先根据配置加载与训练时一致的基础模型,再将适配器目录交给 PEFT。下面的示例只展示恢复关系,模型名称应替换成训练时实际使用的值。

from transformers import AutoModelForCausalLM
from peft import PeftConfig, PeftModel

adapter_dir = "./my-adapter"

# 先读取适配器配置,取得训练时绑定的基础模型标识。
peft_config = PeftConfig.from_pretrained(adapter_dir)

# 基础模型必须与训练时的架构、词表和关键配置保持匹配。
base_model = AutoModelForCausalLM.from_pretrained(
    peft_config.base_model_name_or_path
)

# 将适配器参数挂到基础模型上,得到可用于推理或继续训练的组合模型。
model = PeftModel.from_pretrained(base_model, adapter_dir)
model.eval()  # 推理场景关闭训练态行为

如果配置里的基础模型标识不可访问、被移动,或本地使用了不同修订版本,加载失败并不说明适配器文件损坏,而是组合中的另一半没有按原约束准备好。生产环境应记录基础模型的仓库、修订版本、分词器和 PEFT 配置。

PEFT基础模型配置适配器与可选合并模型的关系说明图
图2:恢复与导出关系说明图,加载适配器和合并基础权重是两条不同的结果路径。

继续训练还是独立部署:按结果选择保存策略

确定“为什么没有基础模型”之后,下一步是根据交付目标做选择,而不是盲目把大文件复制进每个检查点。

继续训练

保留适配器检查点和训练状态,使用同一基础模型恢复。这样能继续沿用轻量检查点的优势;如果换了基础模型、词表或关键架构配置,原适配器不一定仍然适用。

保留可切换适配器

把基础模型作为共享依赖,把多个适配器放在不同目录。推理服务可以按任务加载或切换适配器,适合一个基础模型对应多个领域能力的场景。发布清单中至少要同时写明基础模型标识、适配器版本和兼容的 PEFT/Transformers 范围。

导出独立模型

当部署侧不想再管理适配器依赖,可以使用适配器模型提供的合并能力,将增量权重写入基础模型后保存新的模型目录。合并前先保留原始适配器包;合并后的目录适合直接交付,但会失去轻量切换和单独更新适配器的便利。

# 仅在确认目标是独立部署时才执行合并导出。
merged_model = model.merge_and_unload()

# 保存合并后的完整模型;分词器仍要与模型一起交付。
merged_model.save_pretrained("./merged-model", safe_serialization=True)

复查清单:把“文件缺失”改成“依赖完整”

  1. 确认目录中有适配器权重和配置,而不是只检查是否存在基础模型大文件。
  2. 从 adapter_config.json 记录基础模型标识、PEFT 类型和目标模块。
  3. 用与训练时一致的基础模型和分词器加载,再恢复适配器。
  4. 继续训练保留适配器检查点;独立部署再考虑合并或额外交付基础模型。
  5. 在模型仓库说明组合关系,避免接收方把适配器目录误当成完整模型直接加载。

最后可以把这个问题记成一句话:PEFT 保存的是“变化量”,不是“完整世界”。只要基础模型和适配器的契约没有断,检查点体积小反而说明参数高效微调正在按设计工作。

相关问题

为什么 adapter_config.json 很重要?

它记录了适配器类型以及加载所需的关键配置,通常还会提供基础模型标识。没有配置时,加载方可能无法自动判断如何把权重注入正确的模块。

可以只把 adapter_model.safetensors 发给别人吗?

不建议。权重文件需要与配置和匹配的基础模型一起解释;至少应同时交付配置,并明确基础模型来源和版本。

合并后还能像原来一样切换多个适配器吗?

合并后的目录更接近独立完整模型,通常不再保留原来的适配器切换边界。需要灵活切换时,应保留未合并的适配器包。

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
Transformers生成结果为什么包含输入提示词Transformers生成结果为什么包含输入提示词
上一篇
Transformers生成结果为什么包含输入提示词
Hugging Face Datasets map怎样同时删除旧字段
下一篇
Hugging Face Datasets map怎样同时删除旧字段
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • PubMedQA数据集详解:生物医学问答基准、功能与应用指南
    PubMedQA
    深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
    463次使用
  • H2O EvalGPT:开源LLM大模型评估与排行榜工具
    H2O EvalGPT
    H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
    526次使用
  • LMArena是什么?伯克利AI模型评估平台使用指南与功能解析
    LMArena
    LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
    543次使用
  • 斯坦福HELM:大语言模型Holistic Evaluation整体评估框架详解
    HELM
    深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
    492次使用
  • MMBench详解:多模态大模型基准测试、功能特点与使用指南
    MMBench
    MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
    311次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议 和 隐私政策
返回登录
  • 重置密码