refactor len(datasets) call.
🚀 Feature
Let's minimize len(dataset) calls and do it as late in the training as we can (ie: ideally right before any training loop). This way, we can open up the path to support iterable datasets more cleanly.
Motivation
Getting the length prematurely calls datasets at the wrong time often causing double loads.
This is a blocker to #948