This is not the issue here, clearly one must use “eval” mode for validation/testing.
The issue here is using “eval” for training as well: it is common practice to use “eval” when fine-tuning, but not for training from scratch