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

ZeRO и сегментированные оптимизаторы

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

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

Обзор

It lets you train enormous models with the simplicity of data parallelism but a fraction of the per-GPU memory.

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

При обычном параллелизме данных каждый графический процессор хранит избыточную полную копию состояния, градиентов и параметров оптимизатора, что чрезвычайно расточительно, особенно для Адама, где состояние оптимизатора может в несколько раз превышать размер самой модели. ZeRO, представленный Microsoft в DeepSpeed, устраняет эту избыточность, распределяя эти тензоры по графическим процессорам, так что каждому устройству принадлежит только часть. ZeRO реализуется в три последовательных этапа: этап 1 сегментирует состояние оптимизатора, этап 2 добавляет сегментирование градиента, а этап 3 сегментирует сами параметры. При необходимости графические процессоры собирают недостающие фрагменты посредством связи, вычисляют, а затем освобождают их. В результате значительно снижается объем памяти на каждый графический процессор, что позволяет обучать миллиарды и триллионы параметров, сохраняя при этом простую модель программирования параллелизма данных.

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

ZeRO обменивает дополнительную связь на экономию памяти. На этапе 3, перед прямым проходом слоя, сбор всех данных собирает полные параметры этого слоя на каждом графическом процессоре; после этого не принадлежащие ему фрагменты отбрасываются для освобождения памяти. Градиенты разбросаны по уменьшению, поэтому каждый графический процессор сохраняет только срез градиента, соответствующий его параметрам. FSDP (Fully Sharded Data Parallel) в PyTorch изначально реализует ту же идею, упаковывая модули для сегментирования и повторного сегментирования на лету.

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

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

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

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

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

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

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

Будущее ZeRO и сегментированных оптимизаторов

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

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

Использование DeepSpeed ​​ZeRO Stage 2 для точной настройки языковой модели с несколькими миллиардами параметров, которая в противном случае привела бы к переполнению памяти графического процессора.

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

Применение ZeRO-Offload для передачи состояния оптимизатора в память ЦП, позволяя одному графическому процессору обучать модель, во много раз превышающую его VRAM.

Масштабирование модели с триллионом параметров с помощью ZeRO-Infinity путем потоковой передачи фрагментов параметров из хранилища NVMe, когда заканчивается память графического процессора и процессора.

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

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

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

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

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

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 ZeRO and Sharded Optimizers 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

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

Оптимизаторы Lookahead и Lion

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

What is ZeRO and Sharded Optimizers?

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

Какую избыточность устраняет ZeRO по сравнению с простым параллелизмом данных?

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

Почему состояние оптимизатора часто является самым большим расходом памяти у Адама?

Адам поддерживает текущие оценки, такие как первый и второй моменты для каждого параметра, которые в сочетании с основными весами fp32 могут затмить собственный размер модели.

Что такого есть на этапе 3 ZeRO, чего нет на этапах 1 и 2?

Этап 1 сегментирует состояние оптимизатора, этап 2 добавляет градиенты, а этап 3 идет дальше, сегментируя параметры модели также по графическим процессорам.

Как в ZeRO Stage 3 графический процессор получает все параметры, необходимые для прямого прохода слоя?

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

Какая функция PyTorch изначально реализует сегментирование в стиле ZeRO?

Функция Fully Sharded Data Parallel (FSDP) PyTorch сегментирует параметры, градиенты и состояние оптимизатора, собирая и повторно распределяя их на лету, отражая ZeRO.