AttributeError: 'EvalPrediction' object has no attribute 'prediction' // Training MiniLM

I am a beginner trying to train Minilm using Hugging Face

I have followed this tutorial: Simple Training with the ๐Ÿค— Transformers Trainer - YouTube

My Dataset:
DatasetDict({
train: Dataset({
features: [โ€˜tec_nameโ€™, โ€˜labelโ€™, โ€˜sentenceโ€™],
num_rows: 10356
})
validation: Dataset({
features: [โ€˜tec_nameโ€™, โ€˜labelโ€™, โ€˜sentenceโ€™],
num_rows: 1295
})
test: Dataset({
features: [โ€˜tec_nameโ€™, โ€˜labelโ€™, โ€˜sentenceโ€™],
num_rows: 1294
})
})

Codes:

from transformers import TrainingArguments
batch_size = 64
logging_steps = len(ds[โ€œtrainโ€])
output_dir1=โ€œminilm-finetuned_1โ€

training_args = TrainingArguments(output_dir=output_dir1,
num_train_epochs=5,
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โ€,
push_to_hub=True)

trainer = WeightedLossTrainer(model=model,
args=training_args,
compute_metrics=compute_metrics,
train_dataset=ds[โ€œtrainโ€],
eval_dataset=ds[โ€œvalidationโ€],
tokenizer=tokenizer)

trainer.train()

However an error was returned when I trained the model which showed the following:

/usr/local/lib/python3.10/dist-packages/transformers/optimization.py:407: FutureWarning: This implementation of AdamW is deprecated and will be removed in a future version. Use the PyTorch implementation torch.optim.AdamW instead, or set no_deprecation_warning=True to disable this warning
warnings.warn(
[501/810 00:58 < 00:36, 8.47 it/s, Epoch 3.09/5]
Step Training Loss Validation Loss
[21/21 00:00]
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Traceback (most recent call last) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ in <cell line: 1>:1 โ”‚
โ”‚ โ”‚
โ”‚ /usr/local/lib/python3.10/dist-packages/transformers/trainer.py:1664 in train โ”‚
โ”‚ โ”‚
โ”‚ 1661 โ”‚ โ”‚ inner_training_loop = find_executable_batch_size( โ”‚
โ”‚ 1662 โ”‚ โ”‚ โ”‚ self._inner_training_loop, self._train_batch_size, args.auto_find_batch_size โ”‚
โ”‚ 1663 โ”‚ โ”‚ ) โ”‚
โ”‚ โฑ 1664 โ”‚ โ”‚ return inner_training_loop( โ”‚
โ”‚ 1665 โ”‚ โ”‚ โ”‚ args=args, โ”‚
โ”‚ 1666 โ”‚ โ”‚ โ”‚ resume_from_checkpoint=resume_from_checkpoint, โ”‚
โ”‚ 1667 โ”‚ โ”‚ โ”‚ trial=trial, โ”‚
โ”‚ โ”‚
โ”‚ /usr/local/lib/python3.10/dist-packages/transformers/trainer.py:2019 in _inner_training_loop โ”‚
โ”‚ โ”‚
โ”‚ 2016 โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ self.state.epoch = epoch + (step + 1 + steps_skipped) / steps_in_epo โ”‚
โ”‚ 2017 โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ self.control = self.callback_handler.on_step_end(args, self.state, s โ”‚
โ”‚ 2018 โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚
โ”‚ โฑ 2019 โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ self._maybe_log_save_evaluate(tr_loss, model, trial, epoch, ignore_k โ”‚
โ”‚ 2020 โ”‚ โ”‚ โ”‚ โ”‚ else: โ”‚
โ”‚ 2021 โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ self.control = self.callback_handler.on_substep_end(args, self.state โ”‚
โ”‚ 2022 โ”‚
โ”‚ โ”‚
โ”‚ /usr/local/lib/python3.10/dist-packages/transformers/trainer.py:2300 in _maybe_log_save_evaluate โ”‚
โ”‚ โ”‚
โ”‚ 2297 โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ ) โ”‚
โ”‚ 2298 โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ metrics.update(dataset_metrics) โ”‚
โ”‚ 2299 โ”‚ โ”‚ โ”‚ else: โ”‚
โ”‚ โฑ 2300 โ”‚ โ”‚ โ”‚ โ”‚ metrics = self.evaluate(ignore_keys=ignore_keys_for_eval) โ”‚
โ”‚ 2301 โ”‚ โ”‚ โ”‚ self._report_to_hp_search(trial, self.state.global_step, metrics) โ”‚
โ”‚ 2302 โ”‚ โ”‚ โ”‚ โ”‚
โ”‚ 2303 โ”‚ โ”‚ โ”‚ # Run delayed LR scheduler now that metrics are populated โ”‚
โ”‚ โ”‚
โ”‚ /usr/local/lib/python3.10/dist-packages/transformers/trainer.py:3029 in evaluate โ”‚
โ”‚ โ”‚
โ”‚ 3026 โ”‚ โ”‚ start_time = time.time() โ”‚
โ”‚ 3027 โ”‚ โ”‚ โ”‚
โ”‚ 3028 โ”‚ โ”‚ eval_loop = self.prediction_loop if self.args.use_legacy_prediction_loop else se โ”‚
โ”‚ โฑ 3029 โ”‚ โ”‚ output = eval_loop( โ”‚
โ”‚ 3030 โ”‚ โ”‚ โ”‚ eval_dataloader, โ”‚
โ”‚ 3031 โ”‚ โ”‚ โ”‚ description=โ€œEvaluationโ€, โ”‚
โ”‚ 3032 โ”‚ โ”‚ โ”‚ # No point gathering the predictions if there are no metrics, otherwise we d โ”‚
โ”‚ โ”‚
โ”‚ /usr/local/lib/python3.10/dist-packages/transformers/trainer.py:3318 in evaluation_loop โ”‚
โ”‚ โ”‚
โ”‚ 3315 โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ EvalPrediction(predictions=all_preds, label_ids=all_labels, inputs=a โ”‚
โ”‚ 3316 โ”‚ โ”‚ โ”‚ โ”‚ ) โ”‚
โ”‚ 3317 โ”‚ โ”‚ โ”‚ else: โ”‚
โ”‚ โฑ 3318 โ”‚ โ”‚ โ”‚ โ”‚ metrics = self.compute_metrics(EvalPrediction(predictions=all_preds, lab โ”‚
โ”‚ 3319 โ”‚ โ”‚ else: โ”‚
โ”‚ 3320 โ”‚ โ”‚ โ”‚ metrics = {} โ”‚
โ”‚ 3321 โ”‚
โ”‚ in compute_metrics:5 โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
AttributeError: โ€˜EvalPredictionโ€™ object has no attribute โ€˜predictionโ€™

Any assistance is welcomed. Please Help :frowning: