PyTorch中AutoTokenizer.from_pretrained加载本地预训练分词器失败求助
嘿,我来帮你搞定这个问题!你遇到的情况很常见——用AutoTokenizer.from_pretrained加载预训练模型的分词器没问题,但保存后本地加载时因为缺少config.json报错。这是因为AutoTokenizer需要通过config.json来判断该使用哪种具体的分词器类,而你保存的只是分词器本身的文件,没有包含模型的配置文件。
下面给你两种简单的解决办法:
方法一:直接使用对应模型的Tokenizer类加载
既然你用的是distilroberta-base的分词器,直接用DistilRobertaTokenizer类来加载本地文件就好,不需要依赖config.json:
from transformers import DistilRobertaTokenizer # 加载本地保存的分词器 tmp = DistilRobertaTokenizer.from_pretrained('distilroberta-tokenizer')
方法二:给AutoTokenizer明确指定模型类型
如果你坚持想用AutoTokenizer,可以在加载时通过model_type参数告诉它这是distilroberta类型的分词器,这样它就不需要读取config.json来判断了:
from transformers import AutoTokenizer # 加载时指定model_type tmp = AutoTokenizer.from_pretrained('distilroberta-tokenizer', model_type='distilroberta')
为什么会出现这个问题?
当你用AutoTokenizer.from_pretrained('distilroberta-base')时,它会自动从Hugging Face Hub下载模型的config.json,从而确定要实例化DistilRobertaTokenizer。但当你用tokenizer.save_pretrained()保存时,只会保存分词器相关的文件(也就是你看到的merges.txt、special_tokens_map.json、tokenizer_config.json、vocab.json),不会包含模型的config.json。所以本地加载时AutoTokenizer找不到这个文件就会报错。
这两种方法都能快速解决你的问题,试试吧!
内容的提问来源于stack exchange,提问作者ferty567

