У DataLoader есть два плохих дефолта, которые тормозят процесс.
Исправив их, я получил почти 5x ускорение.
❌ Проблема
-
.to(device) переносит данные на GPU. - Пока GPU считает - CPU ничего не делает.
- Пока CPU готовит данные — GPU простаивает.
⚡ Решение
Нужно заставить CPU и GPU работать параллельно:
- В
DataLoader укажи pin_memory=True - При переносе данных используй
.to(device, non_blocking=True) - Добавь
num_workers в DataLoader для фоновой загрузки. ✅ В итоге CPU готовит следующий батч, пока GPU занят текущим.
Так исчезают простои, и обучение идёт заметно быстрее.
