加载HuggingFace Transformer文本分类模型时遇AttributeError问题求助
解决加载自定义训练Transformer分类模型时的AttributeError错误
问题场景
使用aubmindlab/bert-base-arabertv02训练问题答案类别分类模型后,执行加载代码时:
- 首先触发
OSError,提示目标目录中找不到pytorch_model.bin等模型权重文件 - 错误将目录中的
training_args.bin重命名为pytorch_model.bin后,出现新错误:AttributeError: 'TrainingArguments' object has no attribute 'keys'
根本原因
training_args.bin是Hugging Face Trainer API保存的训练参数配置文件,并非模型权重文件。强行将其重命名为模型权重文件名后,AutoModelForSequenceClassification会尝试把它当作模型权重加载,自然会触发属性错误。
正确解决步骤
- 恢复文件命名:将被重命名的
pytorch_model.bin改回原名称training_args.bin - 定位真实模型权重目录:
- 使用Trainer API训练时,模型权重默认保存在训练输出目录下的
checkpoint-xxx子文件夹中(比如checkpoint-500、checkpoint-1000,数字对应训练步数) - 如果训练时设置了保存最佳模型(如
metric_for_best_model参数),可查找带有best_model标识的文件夹,或选择最后生成的checkpoint文件夹
- 使用Trainer API训练时,模型权重默认保存在训练输出目录下的
- 修正模型加载路径:将
from_pretrained的路径指向包含pytorch_model.bin的子目录,示例代码:from transformers import pipeline, AutoModelForSequenceClassification, AutoTokenizer model_name = 'aubmindlab/bert-base-arabertv02' # 替换为你的checkpoint子目录路径 arabert_model = AutoModelForSequenceClassification.from_pretrained('/gdrive/MyDrive/LabelModel/checkpoint-1000') tokenizer = AutoTokenizer.from_pretrained(model_name) text = "أين وقعت غزوة بدر؟" pipe = pipeline(model=arabert_model, tokenizer=tokenizer) print(pipe(text)) - 验证文件完整性:确保目标加载目录包含以下必要文件:
pytorch_model.bin(核心模型权重)config.json(模型配置信息)
内容的提问来源于stack exchange,提问作者RJ94
相关产品推荐
相关产品推荐

