Reseeding global RNGs in worker_init_fn misses per-object generators
Since PyTorch 1.9, DataLoader workers reseed the global numpy and stdlib RNGs, and many people add a worker_init_fn calling np.random.seed/random.seed on top. Neither helps when a dataset's transform owns its RNG: a np.random.Generator or random.Random created in the parent, e.g. at pipeline construction with seed=None. The object is copied into each worker (memory copy under fork, pickled by value under spawn/forkserver), so all k workers draw one identical sequence. With persistent_workers=False, every epoch also replays it. Measured: 16 distinct of 64 with 4 workers under fork, spawn and the 3.14 forkserver alike. Fix in worker_init_fn: reach the object through get_worker_info().dataset and reseed it from torch.initial_seed(). To detect it, record the drawn parameter itself, not just an output hash.