Техническое РУКОВОДСТВО

Компромиссы при перевычислении активации

Повторный расчет активации (градиент или контрольная точка активации) экономит память графического процессора во время обучения, отбрасывая промежуточные активации при прямом проходе и пересчитывая их во время обратного прохода.

2 минуты чтенияПоследнее обновление

Обзор

It trades extra compute for the ability to train larger models or longer sequences on the same hardware.

Глубокое погружение

Для обратного распространения ошибки требуется активация прямого распространения для вычисления градиентов, поэтому по умолчанию выходные данные каждого слоя сохраняются — это огромные затраты памяти, которые растут с увеличением размера модели, размера пакета и длины последовательности. Повторное вычисление активации сохраняет только несколько тензоров «контрольных точек» (часто просто границы слоев) и отбрасывает остальные. Во время обратного прохода он повторно запускает прямые вычисления между контрольными точками, чтобы по требованию регенерировать отброшенные активации. Классический результат заключается в том, что при размещении контрольных точек на каждом слое sqrt(N) объем памяти падает примерно до O(sqrt(N)) при добавлении примерно одного дополнительного прохода вперед (примерно на 33% больше вычислений). Выборочные варианты пересчитывают только дешевые, но требовательные к памяти операции (например, внимание или отключение), кэшируя при этом дорогостоящие операции, получая большую часть экономии памяти при гораздо меньших затратах на перевычисление.

Техническая информация

Фундаментальный компромисс – это память и FLOP. Полный перерасчет примерно добавляет один дополнительный проход вперед на шаг (~30-40% медленнее), но может сократить память активации на порядок. Разумным шагом является выборочная контрольная точка: выявите операции, которые требуют большого объема памяти, но не требуют больших вычислительных затрат (softmax, Layernorm, GELU, оценки внимания), и пересчитывайте только их, сохраняя при этом результаты дорогостоящих GEMM в кэше, что минимизирует потери вычислений.

Стратегическое воздействие

Стоимость и бюджет

Архитектурные решения влияют на производительность и эксплуатационные расходы на протяжении многих лет.

Более четкие решения

Техническое образование помогает командам выбрать правильный стек, а не только самый новый.

Контроль качества

Лучший инженерный выбор снижает вероятность возникновения проблем с надежностью на производстве.

Будущее компромиссов при перевычислении активации

Перерасчет становится все более автоматизированным и выборочным. Платформы теперь профилируют память каждой операции и стоимость FLOP для выбора оптимальных контрольных точек, а также сочетают повторные вычисления с разгрузкой активации на CPU/NVMe и стратегиями параллелизма. Поскольку длина контекста и размеры модели продолжают расти, ожидайте, что политики, управляемые компилятором (в PyTorch, JAX/XLA), будут автоматически выбирать решения по перевычислению для каждой операции, а также более тесное перекрытие перевычислений с коммуникацией, чтобы лишние FLOP были частично скрыты.

Реальная реализация

Обучение большого трансформатора, который в противном случае не подошел бы, путем проверки каждого блока слоя.

Использование torch.utils.checkpoint PyTorch для переноса блоков трансформатора и сокращения памяти активации.

Выборочный перерасчет внимания/софтмакса в Мегатрон-ЛМ для экономии памяти с минимальным замедлением

Включение более длинных последовательностей при фиксированном бюджете графического процессора путем повторного расчета активаций вместо их сохранения.

Риски и ограничения

Оптимизация одного теста может скрыть более широкие недостатки системы.

Затраты на инфраструктуру и техническое обслуживание часто недооцениваются.

Пробелы в безопасности и наблюдаемости могут увеличиваться по мере усложнения систем.

Дорожная карта реализации

1

Определите целевые показатели задержки, качества и стоимости перед внедрением.

2

Тестирование при реалистичной нагрузке и условиях данных.

3

Мониторинг прибора на наличие ошибок, дрейфа и влияния пользователя.

4

Перед масштабированием подготовьте пути отката и реагирования на инциденты.

Продолжайте исследовать

Free newsletter

Get the daily AI briefing

Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.

One email each weekday. Unsubscribe in one click. We never sell or share your address.

Test yourself

Take the Activation Recomputation Tradeoffs quiz

Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.

Начать тест

Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation

Следующее руководство

SmoothQuant и активационное квантование

Часто задаваемые вопросы

What is Activation Recomputation Tradeoffs?

Повторный расчет активации (градиент или контрольная точка активации) экономит память графического процессора во время обучения, отбрасывая промежуточные активации при прямом проходе и пересчитывая их во время обратного прохода. Он обменивает дополнительные вычисления на возможность обучения более крупных моделей или более длинных последовательностей на том же оборудовании.

Чем жертвует перерасчет активации для экономии памяти?

Повторное вычисление отбрасывает сохраненные активации и восстанавливает их в обратном проходе, затрачивая дополнительные вычисления для уменьшения использования памяти.

Почему активации прямого прохода обычно вообще сохраняются?

Обратный проход использует прямые активации для вычисления градиентов, поэтому по умолчанию они сохраняются в памяти до тех пор, пока не будет выполнен обратный проход.

Сколько примерно дополнительных вычислений обычно добавляется при полном перерасчете активации?

При полном перерасчете прямые вычисления повторяются во время обратного прохода, добавляя примерно один дополнительный прямой проход — примерно на 30–40 % больше вычислений.

В чем идея выборочного (не полного) перерасчета?

Выборочный перерасчет предназначен для операций, которые используют много памяти, но мало вычислений (например, softmax или Layernorm), при этом кэшируя дорогостоящие результаты GEMM, чтобы минимизировать потери FLOP.

Какой дополнительный метод часто сочетается с повторным вычислением, чтобы сэкономить еще больше памяти?

Разгрузка активации переносит некоторые активации в хранилище CPU/NVMe и часто сочетается с повторными вычислениями и параллелизмом для дополнительной экономии памяти.