Увеличили num_workers, а в обучении появились повторяющиеся записи? У каждого worker в DataLoader своя копия IterableDataset. Если все копии читают один поток с начала, записи дублируются.
Разделите источник между worker. В PyTorch для этого есть get_worker_info(): он сообщает ID текущего worker и их общее число. Эти данные можно использовать в __iter__ или worker_init_fn, чтобы назначить каждой копии отдельную часть потока.
Проверьте ID записей: части не должны пересекаться, а вместе должны покрывать нужные данные. Отдельно проверьте возобновление чтения после сбоя. Для реального источника недостаточно просто поделить конечный диапазон из учебного примера.
drop_last отбрасывает неполный последний батч у каждой копии IterableDataset. Суммарно DataLoader может потерять больше одного батча. Разделение потока само по себе ускорения не гарантирует.
🔗 Документация и два способа разделения
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека дата-сайентиста