Обучение в fp16 или bf16 при накоплении в fp32: двукратная экономия памяти и заметное ускорение.
Ключевые тезисы
- fp16 требует масштабирования потерь, чтобы малые не обнулялись; bf16 — нет.
- Мастер-копия весов и накопление остаются в fp32.
- На современных ускорителях bf16 — практический дефолт для обучения больших моделей.
Подробный разбор
| fp16 | bf16 | fp32 | |
|---|---|---|---|
| Бит на мантиссу | 10 | 7 | 23 |
| Диапазон экспоненты | узкий | как у fp32 | полный |
| Нужен loss scaling | да | нет | нет |
| Где используется | старые | современное обучение | эталон |
bf16 жертвует точностью мантиссы ради диапазона — и это оказалось правильным выбором для обучения: переполнение опаснее, чем округление.
scaler = torch.amp.GradScaler()
with torch.autocast(device_type="cuda", dtype=torch.bfloat16):
loss = model(batch)
scaler.scale(loss).backward()
scaler.unscale_(optimizer)
torch.nn.utils.clip_grad_norm_(model.parameters(), 1.0)
scaler.step(optimizer); scaler.update()- Экономия памяти около 40–50%, ускорение 1.5–3× на современных ускорителях.
- Появление NaN обычно означает переполнение в fp16 — переходите на bf16.
- и внутри autocast считаются в fp32 автоматически.
Видеолекции
Записи университетских курсов, где эта тема звучит. Ссылка открывает запись с той секунды, где о ней говорят, — искать по трёхчасовой лекции не нужно.
Связанные темы
Стабильность обучения нейросетей · Обучение на GPU · Сжатие моделей
Normalization Layers85%
Слои нормализации · Глубокое обучениеBatchNorm, LayerNorm, RMSNorm: стабилизация распределения активаций, без которой глубокие сети почти не обучаются.
Gradient Clipping85%
Обрезка градиента · Оптимизация обученияОграничение нормы градиента перед шагом оптимизатора — простейшая защита от расходимости обучения.
Backpropagation85%
Обратное распространение ошибки · Глубокое обучениеЭффективное вычисление градиентов по всем параметрам сети за один обратный проход с помощью правила цепочки.
Learning Rate Scheduling85%
Расписание скорости обучения · Оптимизация обученияИзменение шага по ходу обучения: большой в начале для исследования, малый в конце для точной настройки.
Numerical Methods85%
Численные методы · ОсновыКомпьютер считает приближённо. Понимание точности float, устойчивости и обусловленности спасает от NaN и «необъяснимых» расхождений.
GPU Architecture85%
Архитектура GPU · Вычислительная инфраструктураТысячи простых ядер, сгруппированных в мультипроцессоры, и иерархия памяти, в которую упирается почти любое ускорение.
AI Accelerators85%
Ускорители: GPU, TPU, NPU · Вычислительная инфраструктураЧем специализированный чип отличается от универсальной видеокарты и когда эта разница окупается.
GPU in PyTorch85%
GPU в PyTorch · Вычислительная инфраструктураКак проверить доступность ускорителя, разложить тензоры по устройствам и понять, куда ушла видеопамять.
Distributed Training85%
Распределённое обучение · Вычислительная инфраструктураКак разложить обучение на несколько GPU: копиями модели по данным, шардами состояния или разрезанием самой модели.
Collective Operations85%
Коллективные операции · Вычислительная инфраструктураAllReduce, Broadcast, AllGather — примитивы, которыми процессы обучения обмениваются тензорами.
Cluster Networking85%
Сеть кластера · Вычислительная инфраструктураТопология соединений и скорость обмена, которые определяют, доедет ли обучение до линейного ускорения.
Training Throughput85%
Ускорение обучения · Вычислительная инфраструктураЧто делать, когда число GPU фиксировано: снизить точность, накопить градиент, пересчитать активации, разгрузить загрузчик данных.
Batch size85%
Размер батча · Оптимизация обученияЧисло объектов на одно обновление весов: влияет на скорость, память и качество обобщения.
Pruning80%
Прунинг · Глубокое обучениеУдаление наименее значимых весов, каналов или голов внимания из уже обученной сети ради скорости инференса.
Distillation80%
Дистилляция · Генеративный ИИОбучение маленькой модели воспроизводить поведение большой: кратное снижение стоимости при небольшой потере качества.
PEFT and Adapters80%
Экономное дообучение · Генеративный ИИБазовая модель заморожена, обучается лишь небольшой набор дополнительных параметров — адаптеры, LoRA, префиксы.
LoRA80%
LoRA · Генеративный ИИОбучение низкоранговых добавок к весам вместо полного дообучения модели.
GPU Inference80%
GPU-инференс · Системный дизайн ML-сервисовКак выжать из видеокарты пропускную способность и не переплачивать.
Профильная компетенция для роли: MLOps-инженер.
Усиливает профиль: ML Engineer, NLP-инженер, LLM-инженер, CV-инженер, Исследователь, Инженер речи.
Спрашивают на собеседовании: YADRO — Инфраструктура обучения, YADRO — Эффективность моделей.
Тема встречается в тесте по направлениям — ошибки приведут обратно на эту страницу.
Разбор архитектуры, где эта тема — один из кирпичей: требования, развилки, цифры и режимы отказа.
Глава «Оптимизация обучения» последний раз правилась . Нашли ошибку — напишите.