Hi, my fix was to pass a random seed to each worker in the following way:
In DataLoaderIter:
self.workers = [
            multiprocessing.Process(
                target=_worker_loop,
                args=(self.dataset, self.index_queue, self.data_queue, self.collate_fn, np.random.randint(0, 4294967296, dtype='uint32')))
            for _ in range(self.num_workers)]

In the worker loop:
def _worker_loop(dataset, index_queue, data_queue, collate_fn, rng_seed):
global _use_shared_memory
_use_shared_memory = True

np.random.seed(rng_seed)  # local random seed for each worker
torch.set_num_threads(1)
while True:
    r = index_queue.get()
    if r is None:
        data_queue.put(None)
        break
    idx, batch_indices = r
    try:
        samples = collate_fn([dataset[i] for i in batch_indices])
    except Exception:
        data_queue.put((idx, ExceptionWrapper(sys.exc_info())))
    else:
        data_queue.put((idx, samples))

Then, setting a global seed with numpy.random.seed makes the code reproducible, while keeping the random numbers diverse across workers.