如何从预训练模型加载保存的分词器
Posted
技术标签:
【中文标题】如何从预训练模型加载保存的分词器【英文标题】:How to load the saved tokenizer from pretrained model 【发布时间】:2020-02-13 11:23:35 【问题描述】:我使用 huggingface 转换器在 Pytorch 中微调了预训练的 BERT 模型。所有的训练/验证都在云端的 GPU 上完成。
在训练结束时,我保存模型和分词器,如下所示:
best_model.save_pretrained('./saved_model/')
tokenizer.save_pretrained('./saved_model/')
这会在saved_model
目录中创建以下文件:
config.json
added_token.json
special_tokens_map.json
tokenizer_config.json
vocab.txt
pytorch_model.bin
现在,我在我的计算机中下载了saved_model
目录,并希望加载模型和标记器。我可以像下面这样加载模型
model = torch.load('./saved_model/pytorch_model.bin',map_location=torch.device('cpu'))
但是如何加载分词器?我是 pytorch 的新手,不确定因为有多个文件。可能我没有以正确的方式保存模型?
【问题讨论】:
tokenizer = BertTokenizer.from_pretrained('./saved_model/')
我确信它必须工作。让我知道它是否有效,我会将其发布为答案。
@AshwinGeetD'Sa 是的,将其发布为答案,我会标记它
【参考方案1】:
如果您查看语法,它是您应该通过的预训练模型的目录。因此,加载分词器的正确方法必须是:
tokenizer = BertTokenizer.from_pretrained(<Path to the directory containing pretrained model/tokenizer>)
在你的情况下:
tokenizer = BertTokenizer.from_pretrained('./saved_model/')
./saved_model
这里是您保存预训练模型和标记器的目录。
【讨论】:
如何使这个对本地模型的引用在 docker 中工作?我将模型和标记器放在名为“./saved”的文件夹中,但出现以下错误。看来 Docker 仍在从拥抱脸中寻找配置、模型、标记器文件。 404 客户端错误:未找到 url:huggingface.co/saved/resolve/main/config.json Traceback(最后一次调用):文件“/usr/local/lib/python3.7/site-packages/transformers/configuration_utils.py ",第 505 行,get_config_dict user_agent=user_agent,文件 "/usr/local/lib/python3.7/site-packages/transformers/file_utils.py",第 1337 行,以上是关于如何从预训练模型加载保存的分词器的主要内容,如果未能解决你的问题,请参考以下文章
Gensim Word2Vec 从预训练模型中选择少量词向量