Using label_names = ["start_positions", "end_positions"] looks like it took care of the problem! It finishes training successfully and I can use my_trainer.predict() successfully too.
I look forward to whatever QA improvements you add to the Trainer, but this is excellent.