Выбор ответа Senior PyTorch на практике обновлено
Что ест память GPU при обучении
Вопрос
Модель на 1 млрд параметров учится с AdamW в fp32. Сколько памяти примерно уйдёт на веса, градиенты и состояние оптимизатора (без активаций)?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Около 16 ГБ: 4 байта веса + 4 градиент + 8 моменты Adam. На параметр: вес 4 байта, градиент 4, m и v по 4.
Варианты ответа
- Около 4 ГБ: состояние Adam хранится на CPU
- Около 8 ГБ: веса и градиенты, а моменты Adam хранятся в fp16
- Около 16 ГБ: 4 байта веса + 4 градиент + 8 моменты Adamправильный ответ
- Около 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 ошибок.