"ValueError: вы должны указать input_ids или inputs_embeds" при использовании трейнера
Я получаю "ValueError: You have to specify either input_ids or inputs_embeds"
из, казалось бы, простого обучающего примера:
Iteration: 0%| | 0/6694 [00:00<?, ?it/s]
Epoch: 0%| | 0/3 [00:00<?, ?it/s]
Traceback (most recent call last):
File "train_masked_lm.py", line 33, in <module>
trainer.train()
File "/home/zm/anaconda3/envs/electra/lib/python3.7/site-packages/transformers/trainer.py", line 503, in train
tr_loss += self._training_step(model, inputs, optimizer)
File "/home/zm/anaconda3/envs/electra/lib/python3.7/site-packages/transformers/trainer.py", line 629, in _training_step
outputs = model(**inputs)
File "/home/zm/anaconda3/envs/electra/lib/python3.7/site-packages/torch/nn/modules/module.py", line 550, in __call__
result = self.forward(*input, **kwargs)
File "/home/zm/anaconda3/envs/electra/lib/python3.7/site-packages/transformers/modeling_electra.py", line 639, in forward
return_tuple,
File "/home/zm/anaconda3/envs/electra/lib/python3.7/site-packages/torch/nn/modules/module.py", line 550, in __call__
result = self.forward(*input, **kwargs)
File "/home/zm/anaconda3/envs/electra/lib/python3.7/site-packages/transformers/modeling_electra.py", line 349, in forward
raise ValueError("You have to specify either input_ids or inputs_embeds")
ValueError: You have to specify either input_ids or inputs_embeds
Моя цель - взять предварительно обученную модель и дополнительно обучить ее на основе дополнительных данных. Новое в трансформаторах. Должно быть, что-то не так. Пожалуйста помоги!
Я адаптировал https://huggingface.co/blog/how-to-train следующим образом:
from transformers import (
ElectraForMaskedLM,
ElectraTokenizer,
Trainer,
TrainingArguments,
LineByLineTextDataset
)
model = ElectraForMaskedLM.from_pretrained('google/electra-base-generator')
tokenizer = ElectraTokenizer.from_pretrained('google/electra-base-generator')
def to_dataset(input_file):
return LineByLineTextDataset(file_path=input_file, tokenizer=tokenizer, block_size=128)
training_args = TrainingArguments(
output_dir='./output',
overwrite_output_dir=True,
num_train_epochs=3,
per_device_train_batch_size=64,
per_device_eval_batch_size=64,
save_steps=10000,
warmup_steps=500,
logging_dir='./logs',
)
trainer = Trainer(
model=model,
args=training_args,
train_dataset=to_dataset('...../lines.txt'), # \n-separated lines of text (sentences)
)
trainer.train()
Вышеупомянутая ошибка возникает через несколько секунд после запуска скрипта и является самым первым результатом.