Выбор ответа Middle PyTorch на практике обновлено
GPU простаивает
Вопрос
Утилизация GPU 30%, профайлер показывает, что шаг ждёт данные. Что поможет?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: numworkers 0, pinmemory=True, предобработка заранее, кеширование; проверить диск. Загрузка в основном процессе последовательна.
Варианты ответа
- num_workers > 0, pin_memory=True, предобработка заранее, кеширование; проверить дискправильный ответ
- Увеличить learning rate, чтобы каждый шаг давал больше пользы за то же время
- Уменьшить число эпох и увеличить батч, чтобы GPU реже простаивала в ожидании следующего шага
- Отключить torch.no_grad() в цикле обучения, чтобы данные шли на GPU сразу
Разбор
Загрузка в основном процессе последовательна. Несколько воркеров готовят батчи параллельно, pin_memory ускоряет копирование на GPU, а тяжёлое декодирование картинок или токенизацию выносят заранее. Ещё помогают более быстрые форматы хранения.
- lr не влияет на скорость подготовки данных.
- Число эпох не решает узкое место.
- no_grad к обучению не относится.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.