Полная ошибка:
ValueError: The model did not return a loss from the inputs, only the following keys: logits. For reference, the inputs it received are input_ids,attention_mask.
Однако набор данных содержит метку, а train_dataset в аргументе имеет метку в столбцах.
from transformers import Trainer, TrainingArguments
batch_size = 64
logging_steps = len(emotions_encoded["train"])
training_args = TrainingArguments(output_dir = "model_out",
num_train_epochs=2,
learning_rate = 2e-5,
per_device_train_batch_size=batch_size,
per_device_eval_batch_size=batch_size,
weight_decay=0.01,
evaluation_strategy="epoch",
disable_tqdm=False,
logging_steps=logging_steps,
push_to_hub=False,
log_level="error")
from transformers import Trainer
trainer = Trainer(model=model, args=training_args,
compute_metrics=compute_metrics,
train_dataset=emotions_encoded["train"], # column_names shows : ['text', 'label', 'input_ids', 'attention_mask']
eval_dataset=emotions_encoded["validation"],
tokenizer=tokenizer)
trainer.train()
Вот что я нашел:
train_dataset в следующей функцииtrainer.py имеет имя_столбца значение : ['label', 'input_ids', 'attention_mask']
def get_train_dataloader(self) -> DataLoader:
return DataLoader(
train_dataset,
batch_size=self._train_batch_size,
sampler=train_sampler,
collate_fn=data_collator,
drop_last=self.args.dataloader_drop_last,
num_workers=self.args.dataloader_num_workers,
pin_memory=self.args.dataloader_pin_memory,
worker_init_fn=seed_worker,
)
но функция datasetsarrow_dataset.py:
def _getitem(self, key: Union[int, slice, str, ListLike[int]], **kwargs) -> Union[Dict, List]:
format_columns = kwargs["format_columns"] if "format_columns" in kwargs else self._format_columns
поскольку kwargs имеет значение None, после этого используется self._format_columns и его значение равно : ['input_ids', 'attention_mask']. Здесь модель потеряна.
И это, наконец, вызвало функцию _BaseDataLoaderIter класса dataloder.py:
def __next__(self) -> Any:
with torch.autograd.profiler.record_function(self._profile_name):
if self._sampler_iter is None:
# TODO(https://github.com/pytorch/pytorch/issues/76750)
self._reset() # type: ignore[call-arg]
data = self._next_data()
data содержит только 'input_ids' и 'attention_mask'.
Я новичок в загрузке НЛП с Трансформерами
ДОБАВИТЬ: определение модели
from transformers import AutoModelForSequenceClassification
model = (AutoModelForSequenceClassification
.from_pretrained("distilbert-base-uncased", num_labels = 6)
.to("cpu"))
версии:
transformers 4.30.2
datasets 3.0.0
torch 2.3.1+cpu
Python 3.10.2
Подробнее здесь: https://stackoverflow.com/questions/790 ... del-exists
ValueError: модель не вернула потерю из входных данных, но «модель» существует в «train_datasets columns_names» ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение