#model #save #bert-language-model
#Модель #Сохранить #bert-language-model
Вопрос:
Я хочу сохранить всю обученную модель после такой точной настройки в папке:
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/')
но earror apears
AttributeError: 'BertTokenizer' object has no attribute 'save_pretrained'
Я сохранил файл двоичной модели с помощью следующего кода
torch.save(model_to_save.state_dict(), output_model_file)
но когда я использовал его для сохранения токенизатора или файла конфигурации, я не смог этого сделать, потому что я не знаю, какое расширение файла я должен сохранить tokenizer, и я не смог добраться до файла cofig,
Есть ли какой-нибудь способ сохранить все детали моей модели?
заранее благодарю
Ответ №1:
Я не знаю, как вы определили токенизатор и для чего вы назначили переменную «tokenizer», но это может быть решением вашей проблемы:
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained(...)
tokenizer.save_pretrained('results/tokenizer/')
Это сохраняет все о токенизаторе и с your_model.save_pretrained('results/tokenizer/')
полученным:
config.json
added_token.json
special_tokens_map.json
tokenizer_config.json
vocab.txt
pytorch_model.bin
ОБНОВЛЕНИЕ после комментария:
Если вы используете from pytorch_pretrained_bert import BertForSequenceClassification
, то этот атрибут недоступен (как вы можете видеть из кода).
Что вам следует сделать, так это использовать трансформаторы, которые также интегрируют эту функциональность.
Пример:
from transformers import BertForSequenceClassification
model = BertForSequenceClassification.from_pretrained('bert-base-uncased')
model.save_pretrained('results/tokenizer/')
Другим решением было бы использовать автоклассы.
Комментарии:
1. Я попробовал ваш код your_model.save_pretrained(‘results/tokenizer/’), но появляется эта ошибка torch.nn.modules.module. ModuleAttributeError: объект ‘BertForSequenceClassification’ не имеет атрибута ‘save_pretrained’
2. Да, конечно, теперь я пытаюсь обновить свой ответ, сделав его более полным, чтобы лучше объяснить
3. Я попробовал ваше обновленное решение, но появляется ошибка torch.nn.modules.module. ModuleAttributeError: объект ‘BertForSequenceClassification’ не имеет атрибута ‘save_pretrained’
4. Вы не используете код из моего обновленного ответа. Вы продолжаете использовать
pytorch_pretrained_bert
вместоtransformers
этого . Пожалуйста, скопируйте и вставьте мои последние три строки, и вы увидите, что это работает.5. учитывая, что я точно настроил модель, и я хочу сохранить точно настроенную версию, а не импортированную версию, и я мог бы сохранить файл .bin моей модели, используя этот код model_to_save = model.module if hasattr(model, ‘module’) else model # Только сохранить модель самостоятельно output_model_file =os.path.join(args.output_dir, «pytorch_model_task.bin»), но я не смог сохранить другие файлы конфигурации