Автор|huggingface Компилировать|ВКонтакте Источник | Гитхаб
В этом разделе объясняется, как сохранять и перезагружать настроенные модели (BERT, GPT, GPT-2 и Transformer-XL). Существует три типа файлов, которые необходимо сохранить для перезагрузки настроенной модели:
- Сама модель должна быть моделью, сохраненной сериализацией PyTorch (py torch.org/docs/stable…)
- Файл конфигурации модели сохраняется в виде файла JSON.
- Словарь (и модель, основанная на комбинированном BPE GPT и GPT-2).
Имена файлов по умолчанию для этих файлов следующие:
- Файл весов модели:
pytorch_model.bin
- Конфигурационный файл:
config.json
- Глоссарий:
vocab.txt
расшифровывается как BERT и Transformer-XL,vocab.json
расшифровывается как GPT/GPT-2 (словарь BPE), - Дополнительные объединенные файлы, представляющие GPT/GPT-2 (словарь BPE):
merges.txt
.
Если вы используете этиимя файла по умолчаниюПосле сохранения модели вы можете перезагрузить модель и токенизатор с помощью метода from_pretrained().
Это рекомендуемый способ сохранения моделей, конфигураций и файлов конфигурации. словарный запасoutput_dir
каталог, затем перезагрузите модель и токенизатор:
from transformers import WEIGHTS_NAME, CONFIG_NAME
output_dir = "./models/"
# 步骤1:保存一个经过微调的模型、配置和词汇表
#如果我们有一个分布式模型,只保存封装的模型
#它包装在PyTorch DistributedDataParallel或DataParallel中
model_to_save = model.module if hasattr(model, 'module') else model
#如果使用预定义的名称保存,则可以使用`from_pretrained`加载
output_model_file = os.path.join(output_dir, WEIGHTS_NAME)
output_config_file = os.path.join(output_dir, CONFIG_NAME)
torch.save(model_to_save.state_dict(), output_model_file)
model_to_save.config.to_json_file(output_config_file)
tokenizer.save_vocabulary(output_dir)
# 步骤2: 重新加载保存的模型
#Bert模型示例
model = BertForQuestionAnswering.from_pretrained(output_dir)
tokenizer = BertTokenizer.from_pretrained(output_dir, do_lower_case=args.do_lower_case) # Add specific options if needed
#GPT模型示例
model = OpenAIGPTDoubleHeadsModel.from_pretrained(output_dir)
tokenizer = OpenAIGPTTokenizer.from_pretrained(output_dir)
Если вы хотите использовать определенный путь для каждого типа файла, есть еще один способ сохранить и перезагрузить модель:
output_model_file = "./models/my_own_model_file.bin"
output_config_file = "./models/my_own_config_file.bin"
output_vocab_file = "./models/my_own_vocab_file.bin"
# 步骤1:保存一个经过微调的模型、配置和词汇表
#如果我们有一个分布式模型,只保存封装的模型
#它包装在PyTorch DistributedDataParallel或DataParallel中
model_to_save = model.module if hasattr(model, 'module') else model
torch.save(model_to_save.state_dict(), output_model_file)
model_to_save.config.to_json_file(output_config_file)
tokenizer.save_vocabulary(output_vocab_file)
# 步骤2: 重新加载保存的模型
# 我们没有使用预定义权重名称、配置名称进行保存,无法使用`from_pretrained`进行加载。
# 下面是在这种情况下的操作方法:
#Bert模型示例
config = BertConfig.from_json_file(output_config_file)
model = BertForQuestionAnswering(config)
state_dict = torch.load(output_model_file)
model.load_state_dict(state_dict)
tokenizer = BertTokenizer(output_vocab_file, do_lower_case=args.do_lower_case)
#GPT模型示例
config = OpenAIGPTConfig.from_json_file(output_config_file)
model = OpenAIGPTDoubleHeadsModel(config)
state_dict = torch.load(output_model_file)
model.load_state_dict(state_dict)
tokenizer = OpenAIGPTTokenizer(output_vocab_file)
Оригинальная ссылка:Метод объятий test.co/transformer…
Добро пожаловать на сайт блога Panchuang AI:panchuang.net/
Официальная китайская документация OpenCV:woshicver.com/
Добро пожаловать на станцию сводки ресурсов блога Panchuang:docs.panchuang.net/