You should double check your datasets has items that are dictionaries with the keys "start_positions", "end_positions" (that may be why the model is not returning the loss).
Also, you seem to be passing dataloaders to the Trainer? It takes datasets.
Lastly, for easy debug you can do the following:
for batch in trainer.get_train_dataloader():
    break
batch = {k: v.cuda() for k, v in batch.items()}
outputs = trainer.model(**batch)

to easily inspect what’s in your batch and your outputs.