Стабильное обучение большой модели
Вопрос
Какие приёмы вы используете, чтобы стабильно и эффективно обучать большую модель на нескольких GPU?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
AdamW, warmup, косинус, клиппинг, группы weight decay
bf16 mixed precision, gradient checkpointing, накопление градиентов
Распределённость: DDP, FSDP или ZeRO для шардирования весов и состояния оптимизатора
Мониторинг loss, норм градиентов, lr, пропускной способности; частые чекпоинты
Реакция на всплески: откат, пропуск батчей, снижение lr
Что могут спросить следом
- Чем FSDP отличается от DDP по памяти?
- Сколько памяти занимает состояние Adam для модели на 7 млрд параметров?
Разбор
Базовый рецепт: AdamW с параметрами под масштаб модели, warmup и косинусное затухание, клиппинг градиентов по норме около 1, weight decay только на матрицы. Для памяти и скорости: bf16 mixed precision через autocast, gradient checkpointing для активаций, накопление градиентов до нужного эффективного батча, torch.compile и эффективные ядра attention. Распределение: DDP, если модель влезает в одну GPU (реплика на каждой, градиенты усредняются all-reduce), FSDP или ZeRO, если нет: веса, градиенты и состояние оптимизатора шардируются между GPU. Состояние Adam в fp32 это 8 байт на параметр, для 7 млрд около 56 ГБ, плюс fp32-копия весов, поэтому без шардирования не обойтись. Мониторю loss, нормы градиентов, lr, токены в секунду и утилизацию GPU, сохраняю чекпоинты часто. При всплеске loss откатываюсь к чекпоинту, пропускаю проблемные батчи, снижаю lr.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.