Выбор ответа Middle PyTorch на практике обновлено

GPU простаивает

Вопрос

Утилизация GPU 30%, профайлер показывает, что шаг ждёт данные. Что поможет?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: numworkers 0, pinmemory=True, предобработка заранее, кеширование; проверить диск. Загрузка в основном процессе последовательна.

Варианты ответа

  1. num_workers > 0, pin_memory=True, предобработка заранее, кеширование; проверить дискправильный ответ
  2. Увеличить learning rate, чтобы каждый шаг давал больше пользы за то же время
  3. Уменьшить число эпох и увеличить батч, чтобы GPU реже простаивала в ожидании следующего шага
  4. Отключить torch.no_grad() в цикле обучения, чтобы данные шли на GPU сразу

Разбор

Загрузка в основном процессе последовательна. Несколько воркеров готовят батчи параллельно, pin_memory ускоряет копирование на GPU, а тяжёлое декодирование картинок или токенизацию выносят заранее. Ещё помогают более быстрые форматы хранения.

  • lr не влияет на скорость подготовки данных.
  • Число эпох не решает узкое место.
  • no_grad к обучению не относится.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.