You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用save_pretrained/from_pretrained无法还原训练后的PEFT模型求助

问题根源分析

你遇到的核心问题是PEFT(LoRA)模型的保存与加载方式错误,导致训练后的权重没有被正确加载,同时分类器、pooler层被重新初始化,最终精度暴跌。具体原因:

  1. 训练后用model.save_pretrained()保存的是LoRA的增量权重,并非完整模型。直接用AutoModelForSequenceClassification.from_pretrained()加载时,只会读取基础预训练模型,LoRA权重未被应用。
  2. 原预训练模型(如microsoft/deberta-v3-large)是纯语言模型,没有分类器和pooler层,加载时这些层会被重新初始化,这就是你看到警告的原因,而重新初始化的层完全没有训练信息,直接拉低精度。
正确的保存与加载流程

1. 训练完成后保存LoRA模型

训练后直接保存PEFT模型即可,这一步是正确的:

model.save_pretrained("./lora_deberta_ai_human")

该文件夹仅包含LoRA权重和配置文件,体积很小。

2. 加载时结合基础模型与LoRA权重

必须使用PEFT库的PeftModel.from_pretrained()方法加载,才能将LoRA权重合并到基础模型上:

from peft import PeftModel, PeftConfig
from transformers import AutoModelForSequenceClassification, AutoTokenizer

# 加载PEFT配置,获取基础模型信息
peft_config = PeftConfig.from_pretrained("./lora_deberta_ai_human")

# 加载对应基础模型,需与训练时的model_checkpoint完全一致
base_model = AutoModelForSequenceClassification.from_pretrained(
    peft_config.base_model_name_or_path,
    num_labels=2,
    id2label={0: "Human", 1: "AI"},
    label2id={"Human": 0, "AI": 1}
)

# 将LoRA权重加载到基础模型上
model = PeftModel.from_pretrained(base_model, "./lora_deberta_ai_human")

# (可选)合并权重为全量模型,方便后续无需PEFT库即可加载
model = model.merge_and_unload()

# 推理测试
tokenizer = AutoTokenizer.from_pretrained(peft_config.base_model_name_or_path)
inputs = tokenizer("测试文本内容", return_tensors="pt")
outputs = model(**inputs)
pred_label = model.config.id2label[outputs.logits.argmax(dim=-1).item()]
print(pred_label)

3. 彻底解决权重初始化警告

如果需要避免加载时的警告,同时生成可直接用AutoModelForSequenceClassification加载的全量模型,可在合并权重后保存完整模型:

# 合并权重后保存全量模型
model.save_pretrained("./merged_deberta_ai_human")
tokenizer.save_pretrained("./merged_deberta_ai_human")

# 后续加载全量模型,无警告且精度正常
model = AutoModelForSequenceClassification.from_pretrained("./merged_deberta_ai_human")
tokenizer = AutoTokenizer.from_pretrained("./merged_deberta_ai_human")
关键注意事项
  • 训练与加载时的基础模型必须完全一致(如均为microsoft/deberta-v3-large),不能混用其他模型。
  • 加载基础模型时,必须指定与训练时相同的num_labels、id2label、label2id参数,避免模型结构不匹配。
  • 若需轻量化部署,保留LoRA模型即可;若需简化部署流程,合并为全量模型更方便。

内容的提问来源于stack exchange,提问作者miguelik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 07:45:09