ZeRO и Sharded оптимизатори
ZeRO (Оптимизатор на нулево излишък) елиминира разточителното дублиране на паметта на паралелизма на данни чрез разделяне на състоянието на оптимизатора, градиентите и теглата между GPU.
Преглед
It lets you train enormous models with the simplicity of data parallelism but a fraction of the per-GPU memory.
Дълбоко гмуркане
При обикновения паралелизъм на данни всеки GPU съхранява излишно пълно копие на състоянието на оптимизатора, градиентите и параметрите, което е изключително разточително, особено за Adam, където състоянието на оптимизатора може да бъде няколко пъти по-голямо от размера на самия модел. ZeRO, въведен от Microsoft в DeepSpeed, премахва този излишък чрез разделяне на тези тензори между GPU, така че всяко устройство притежава само срез. ZeRO идва в три прогресивни етапа: Етап 1 разделя състоянието на оптимизатора, Етап 2 добавя градиентно шардинг, а Етап 3 разделя самите параметри. При необходимост графичните процесори събират липсващите срезове чрез комуникация, изчисляват и след това ги освобождават. Резултатът е драстично по-ниска памет на GPU, което позволява обучение с милиарди до трилиони параметри, като същевременно се запазва лесният програмен модел на паралелизъм на данните.
Техническа информация
ZeRO търгува с допълнителна комуникация за спестяване на памет. В Етап 3, преди преминаването напред на даден слой, събирането на всички елементи събира пълните параметри на този слой върху всеки GPU; след това непритежаваните срезове се изхвърлят, за да се възстанови паметта. Градиентите са намалено разпръснати, така че всеки графичен процесор запазва само среза на градиента, съответстващ на параметрите, които притежава. FSDP на PyTorch (Fully Sharded Data Parallel) прилага същата идея нативно, обгръщайки модули за сегментиране и повторно шардиране в движение.
Стратегическо въздействие
Cost and budget
Архитектурните решения стимулират производителността и оперативните разходи в продължение на години.
Clearer decisions
Техническото образование помага на екипите да изберат правилния стек, а не само най-новия.
Quality control
По-добрият инженерен избор намалява инцидентите, свързани с надеждността в производството.
Бъдещето на ZeRO и Sharded оптимизаторите
Шардингът се превръща в по подразбиране за широкомащабно обучение, а не като екзотична опция. Очаквайте по-дълбока интеграция с разтоварване (прехвърляне на срезове към CPU или NVMe чрез ZeRO-Infinity), по-добро припокриване на събирането на всички и намаляването на разпръскването с изчисления, за да се скрие тяхната цена, и комбинации с тензорен и тръбопроводен паралелизъм. Тъй като моделите продължават да се разрастват, ефективни от паметта сегментирани оптимизатори са централни за поставянето им в реалистични хардуерни бюджети.
Внедряване в реалния свят
Използване на DeepSpeed ZeRO Stage 2 за фина настройка на езиков модел с много милиарди параметри, който иначе би препълнил GPU паметта.
Обучение с PyTorch FSDP, който разделя параметри, градиенти и състояние на оптимизатора между GPU и ги събира на слой при поискване.
Прилагане на ZeRO-Offload за прехвърляне на състоянието на оптимизатора към паметта на процесора, позволявайки на един GPU да обучи модел, многократно по-голям от неговата VRAM.
Мащабиране на модел с трилион параметри със ZeRO-Infinity чрез поточно предаване на сегменти на параметри от NVMe хранилище, когато GPU и CPU паметта се изчерпят.
Рискове и предпазни огради
Оптимизирането на един бенчмарк може да скрие по-широки системни слабости.
Разходите за инфраструктура и поддръжка често се подценяват.
Пропуските в сигурността и видимостта могат да нарастват, когато системите стават по-сложни.
Пътна карта за изпълнение
Определете целите за латентност, качество и разходи преди внедряването.
Бенчмарк при реалистични условия на натоварване и данни.
Мониторинг на инструмента за грешки, отклонение и въздействие върху потребителя.
Подгответе пътеките за връщане назад и реакция на инцидент преди мащабиране.
Продължете да изследвате
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
Next guide
Lookahead и Lion Optimizers
Frequently asked questions
What is ZeRO and Sharded Optimizers?
ZeRO (Оптимизатор на нулево излишък) елиминира разточителното дублиране на паметта на паралелизма на данни чрез разделяне на състоянието на оптимизатора, градиентите и теглата между GPU. Позволява ви да обучавате огромни модели с простотата на паралелизма на данни, но част от паметта на GPU.
Какво излишък елиминира ZeRO в сравнение с обикновения паралелизъм на данните?
Стандартният паралелизъм на данните съхранява пълно копие на състоянието на оптимизатора, градиентите и теглата на всеки GPU; ZeRO ги разделя, така че всеки GPU съдържа само срез.
Защо състоянието на оптимизатора често е най-голямата загуба на памет при Адам?
Адам поддържа текущи оценки като първи и втори момент за параметър, които в комбинация с основните тегла fp32 могат да заменят собствения размер на модела.
Какво ZeRO Stage 3 разделя, което етапи 1 и 2 не правят?
Етап 1 разделя състоянието на оптимизатора, етап 2 добавя градиенти, а етап 3 отива по-далеч, като разделя параметрите на модела и между GPU.
В ZeRO Stage 3, как GPU получава пълните параметри, от които се нуждае за преминаване напред на даден слой?
Преди да изчисли слой, сборът на всички събира пълните му параметри на всеки GPU; веднъж готови, непритежаваните срезове се освобождават, за да възстановят паметта.
Коя функция на PyTorch естествено внедрява шардинг в стил ZeRO?
PyTorch's Fully Sharded Data Parallel (FSDP) разделя параметрите, градиентите и състоянието на оптимизатора, като ги събира и повторно споделя в движение, отразявайки ZeRO.