如何保存序列分类模型分词器和配置的微调 bert?

问题描述 投票:0回答:1

我想在文件夹中像这样进行微调后保存所有训练好的模型:

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 文件, 有什么方法可以保存模型的所有详细信息吗? 预先感谢

model save bert-language-model
1个回答
2
投票

我不知道你如何定义标记器以及你将“标记器”变量分配给什么,但这可以解决你的问题:

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

© www.soinside.com 2019 - 2024. All rights reserved.