Технічний КЕРІВНИЦТВО

Оптимізатори ZeRO та Sharded

ZeRO (оптимізатор нульової надлишковості) усуває марнотратне дублювання пам’яті для паралелізму даних, розподіляючи стан оптимізатора, градієнти та ваги між GPU.

2 хвилини читанняОстаннє оновлення

Огляд

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

Глибоке занурення

У звичайному паралелізмі даних кожен графічний процесор зберігає надлишкову повну копію стану оптимізатора, градієнтів і параметрів, що є надзвичайно марнотратним, особливо для Адама, де стан оптимізатора може в кілька разів перевищувати розмір самої моделі. ZeRO, представлений Microsoft в DeepSpeed, усуває цю надлишковість, розділяючи ці тензори між GPU, щоб кожен пристрій володів лише фрагментом. ZeRO складається з трьох прогресивних етапів: Етап 1 сегментує стан оптимізатора, Етап 2 додає градієнтне сегментування, а Етап 3 шардить самі параметри. За потреби графічні процесори збирають відсутні фрагменти через зв’язок, обчислюють, а потім випускають їх. Результатом є значно менший об’єм пам’яті на графічний процесор, що забезпечує навчання від мільярдів до трильйонів параметрів, зберігаючи при цьому просту програмну модель паралелізму даних.

Технічне розуміння

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

Стратегічний вплив

Вартість і бюджет

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

Чіткіші рішення

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

Контроль якості

Кращий інженерний вибір зменшує проблеми з надійністю у виробництві.

Майбутнє ZeRO та Sharded Optimizers

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

Реалізація в реальному світі

Використання DeepSpeed ​​ZeRO Stage 2 для точного налаштування мовної моделі з кількома мільярдами параметрів, яка інакше переповнила б пам’ять GPU.

Навчання за допомогою PyTorch FSDP, який розподіляє параметри, градієнти та стан оптимізатора між графічним процесором і збирає їх на рівні за запитом.

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

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

Ризики та огорожі

Оптимізація одного тесту може приховати ширші слабкі сторони системи.

Витрати на інфраструктуру та обслуговування часто недооцінюються.

Прогалини в безпеці та спостережуваності можуть зростати в міру ускладнення систем.

Дорожня карта впровадження

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

Часті запитання

What is ZeRO and Sharded Optimizers?

ZeRO (оптимізатор нульової надлишковості) усуває марнотратне дублювання пам’яті для паралелізму даних, розподіляючи стан оптимізатора, градієнти та ваги між GPU. Це дозволяє тренувати величезні моделі з простотою паралелізму даних, але з часткою пам’яті кожного GPU.

Яку надмірність усуває ZeRO порівняно з паралелізмом простих даних?

Стандартний паралелізм даних зберігає повну копію стану оптимізатора, градієнтів і ваг на кожному GPU; ZeRO розбиває їх на фрагменти, щоб кожен GPU містив лише фрагмент.

Чому стан оптимізатора часто є найбільшою проблемою пам’яті Адама?

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

Що має шард ZeRO Stage 3, чого немає на етапах 1 і 2?

Етап 1 розбиває стан оптимізатора, Етап 2 додає градієнти, а Етап 3 йде далі, також розбиваючи параметри моделі на графічні процесори.

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

Перед обчисленням шару збірка збирає його повні параметри на кожному GPU; після завершення фрагменти, які не належать, звільняються для відновлення пам’яті.

Яка функція PyTorch нативно реалізує шардинг у стилі ZeRO?

PyTorch Fully Sharded Data Parallel (FSDP) сегментує параметри, градієнти та стан оптимізатора, збираючи та повторюючи їх на льоту, віддзеркалюючи ZeRO.