我想在文件夹中像这样进行微调后保存所有训练好的模型:
config.json
added_token.json
special_tokens_map.json
tokenizer_config.json
vocab.txt
pytorch_model.bin
我只能保存 pytorch_model.bin,但其他详细信息我无法保存,我如何保存模型的所有配置、分词器等?
我用过
tokenizer.save_pretrained('results/tokenizer/')
但是出现了错误
AttributeError: 'BertTokenizer' object has no attribute 'save_pretrained'
我通过以下代码保存了二进制模型文件
torch.save(model_to_save.state_dict(), output_model_file)
但是当我用它来保存标记生成器或配置文件时,我无法执行此操作,因为我不知道应该保存标记生成器的文件扩展名,并且无法访问 cofig 文件, 有什么方法可以保存模型的所有详细信息吗? 预先感谢
我不知道你如何定义标记器以及你将“标记器”变量分配给什么,但这可以解决你的问题:
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained(...)
tokenizer.save_pretrained('results/')
这会保存有关分词器的所有内容。要保存模型设置,请运行:
[... your fine-tuning code]
your_model.save_pretrained('results/')
输出中保存的文件是:
配置.json
添加的_token.json
Special_tokens_map.json
tokenizer_config.json
vocab.txt pytorch_model.bin
评论后更新:
如果您使用
from pytorch_pretrained_bert import BertForSequenceClassification
,则该属性不可用(正如您从代码中看到的那样)。
你应该做的是使用transformers,它也集成了此功能。
示例:
from transformers import BertForSequenceClassification
model = BertForSequenceClassification.from_pretrained('bert-base-uncased')
model.save_pretrained('results/tokenizer/')
另一个解决方案是使用 AutoClasses。