Dataset отдаёт один sample по индексу; DataLoader батчит samples, перемешивает и опционально грузит в несколько процессов.
Разбор
__len__ и __getitem__ — минимальный контракт Dataset.
batch_size, shuffle, num_workers, collate_fn — ключевые knobs.
- Map-style vs Iterable-style Dataset для потоков.
- На GPU часто
pin_memory=True + non_blocking transfer.
Итог
Dataset описывает данные; DataLoader организует батчи для цикла.