#python #nlp #huggingface-transformers #pre-trained-model
Вопрос:
В 1 коде. я загрузил трансформеры «обнимающее лицо». тренер.Модель на основе тренера, использующая функцию save_pretrained() Во 2-м коде, я хочу загрузить эту загруженную модель и использовать ее для прогнозирования. Мне нужна помощь на этом этапе — Как загрузить загруженную модель и затем сделать прогноз?
Шаги по созданию модели:
from transformers import AutoModelForQuestionAnswering, TrainingArguments, Trainer model = AutoModelForQuestionAnswering.from_pretrained('xlm-roberta-large) trainer = Trainer( model, args, train_dataset=tokenized_train_ds, eval_dataset=tokenized_val_ds, data_collator=data_collator, tokenizer=tokenizer,) #Arguments used above not mentioned here - model, args, tokenized_train_ds, tokenized_val_ds, data_collator, tokenizer #Below step train the pre-trained model trainer.train()
Затем я загрузил эту модель «тренажера», используя приведенную ниже команду:-
trainer.save_model('./trainer_sm')
В другом коде я теперь хочу загрузить эту модель и использовать ее для составления прогнозов, может кто-нибудь посоветовать, как это сделать? Я попробовал выполнить приведенную ниже команду, чтобы загрузить его:-
model_sm=AutoModelForQuestionAnswering.from_pretrained("./trainer_sm")
И использовал его для составления прогнозов по этой строке кода:-
model_sm.predict(test_features) AttributeError: 'XLMRobertaForQuestionAnswering' object has no attribute 'predict'
Я также использовал «use_auth_token=True» в качестве аргумента для from_pretrained, но это также не сработало.
Кроме того, тип(тренер) — » трансформеры.тренер.Тренер» , в то время как тип(model_sm) — transformers.models.xlm_roberta.modeling_xlm_roberta.xlmrobertaответ на вопросы
Ответ №1:
То, что вы сохранили, — это модель, которую собирался настроить тренер, и вы должны знать, что прогнозирование, обучение, оценка и т. Д.-Это утилиты transformers.trainer.Trainer
объекта, а не transformers.models.xlm_roberta.modeling_xlm_roberta.XLMRobertaForQuestionAnswering
. Основываясь на том, что было упомянуто, самый простой способ продолжить работу-создать еще один экземпляр тренажера.
model_sm=AutoModelForQuestionAnswering.from_pretrained("./trainer_sm") reloaded_trainer = Trainer( model = model_sm, tokenizer = tokenizer, # other arguments if you have changed the defaults ) reloaded_trainer.predict(test_dataset)