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

Что ест память GPU при обучении

Вопрос

Модель на 1 млрд параметров учится с AdamW в fp32. Сколько памяти примерно уйдёт на веса, градиенты и состояние оптимизатора (без активаций)?

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

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

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

Коротко

Правильный ответ: Около 16 ГБ: 4 байта веса + 4 градиент + 8 моменты Adam. На параметр: вес 4 байта, градиент 4, m и v по 4.

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

  1. Около 4 ГБ: состояние Adam хранится на CPU
  2. Около 8 ГБ: веса и градиенты, а моменты Adam хранятся в fp16
  3. Около 16 ГБ: 4 байта веса + 4 градиент + 8 моменты Adamправильный ответ
  4. Около 1 ГБ: по байту на параметр после сжатия

Разбор

На параметр: вес 4 байта, градиент 4, m и v по 4. Итого 16 байт, то есть около 16 ГБ на миллиард параметров, и ещё активации, зависящие от батча и длины. При mixed precision с fp32-мастер-копией и bf16-весами итог похожий или больше, отсюда FSDP/ZeRO, 8-битные оптимизаторы и LoRA.

  • 4 ГБ это только веса, как при инференсе в fp32; на CPU состояние Adam по умолчанию не выгружается.
  • В fp32-обучении моменты Adam тоже fp32, их нельзя не учитывать.
  • 1 байт на параметр это int8-инференс.

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

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