使用AutoTrain微调Llama模型推送到HF仓库后缺失config.json报错求助
问题解决:加载AutoTrain推送的PEFT Llama模型报错找不到config.json
问题原因
- 训练时使用了
--use_peft参数,AutoTrain推送到Hub的只是PEFT适配器权重,不是完整的Llama模型,因此仓库中没有base模型的config.json文件。 - 错误使用了
AutoModelForSeq2SeqLM加载模型——Llama是因果语言模型(Causal LM),应该用AutoModelForCausalLM。
正确加载步骤
1. 安装PEFT库(如果未安装)
pip install peft
2. 正确加载代码
from transformers import AutoModelForCausalLM, AutoTokenizer from peft import PeftModel, PeftConfig # 加载PEFT适配器的配置,获取base模型信息 peft_config = PeftConfig.from_pretrained("myrepo/test", use_auth_token=True) # 加载base模型(和训练时的meta-llama/Llama-2-7b-hf一致) base_model = AutoModelForCausalLM.from_pretrained( peft_config.base_model_name_or_path, use_auth_token=True, load_in_4bit=True # 对应训练时的--use_int4参数 ) # 加载tokenizer tokenizer = AutoTokenizer.from_pretrained(peft_config.base_model_name_or_path, use_auth_token=True) tokenizer.pad_token = tokenizer.eos_token # Llama默认无pad token,需手动设置 # 将PEFT适配器加载到base模型上 model = PeftModel.from_pretrained(base_model, "myrepo/test", use_auth_token=True) # (可选)如果需要合并适配器和base模型,保存为完整模型 # model = model.merge_and_unload() # model.save_pretrained("merged-model") # tokenizer.save_pretrained("merged-model")
额外说明
- 检查你的Hugging Face仓库,应该包含
adapter_config.json和adapter_model.bin,这是PEFT适配器的核心文件,而非完整模型的文件。 - 只有当你不使用PEFT训练时,AutoTrain才会推送完整模型文件到Hub。
内容的提问来源于stack exchange,提问作者Youshikyou
相关产品推荐
相关产品推荐

