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

微调Llama 2后无法生成config.json,模型加载失败求助

解决Llama-2 4bit+LoRA微调后保存无config.json及加载报错问题

问题原因

使用4bit量化+LoRA方案时,trainer.model是PeftModel实例,仅包含LoRA适配器权重,其内置的config指向的是LoRA专属配置而非完整的基础模型配置。直接调用save_pretrained只会生成LoRA相关文件(如adapter_config.json、adapter_model.bin),不会自动导出基础模型的config.json;显式保存失败也是因为误操作了LoRA配置而非基础模型配置。

解决方案

1. 手动保存基础模型配置

训练完成后,从PeftModel关联的base_model中提取并保存完整的基础模型配置:

# 先保存LoRA适配器权重
trainer.model.save_pretrained('finetuned_llama')

# 提取并保存基础模型的config
trainer.model.base_model.config.save_pretrained('finetuned_llama')

执行后,finetuned_llama目录下会同时生成adapter_config.json、adapter_model.bin和config.json三个关键文件。

2. 正确加载微调模型

加载时不能直接用AutoModelForCausalLM读取LoRA目录,需先加载基础量化模型,再挂载LoRA适配器:

from peft import PeftModel
from transformers import AutoModelForCausalLM, BitsAndBytesConfig
import torch

# 定义4bit量化配置(需与训练时一致)
bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_use_double_quant=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=torch.bfloat16
)

# 加载基础模型
base_model = AutoModelForCausalLM.from_pretrained(
    "meta-llama/Llama-2-7b-chat-hf",
    quantization_config=bnb_config,
    device_map="auto",
    trust_remote_code=True
)

# 挂载LoRA适配器
finetuned_model = PeftModel.from_pretrained(base_model, "finetuned_llama")

若使用peft 0.5.0及以上版本,可简化为:

from peft import AutoPeftModelForCausalLM

finetuned_model = AutoPeftModelForCausalLM.from_pretrained(
    "finetuned_llama",
    load_in_4bit=True,
    device_map="auto"
)

3. 权限与目录排查

若显式保存config仍失败,检查目标目录是否存在、是否有写入权限,可提前创建目录:

import os
os.makedirs('finetuned_llama', exist_ok=True)
trainer.model.base_model.config.save_pretrained('finetuned_llama')

4. 可选:升级依赖版本

peft 0.4.0与accelerate 0.21.0的组合在4bit量化场景下存在部分配置保存的兼容性问题,升级peft至0.5.0+、accelerate至0.23.0+可避免此类问题,同时获得更稳定的LoRA保存/加载逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 17:45:19