SkipPipe: ефективний метод комунікації для децентралізованого навчання

Це наукова стаття про ефективну комунікацію під час паралельного навчання через конвеєр. У ній представлений алгоритм оптимального планування, який максимізує продуктивність і відмовостійкість, мінімізуючи вплив на збіжність через пропуски рівнів. Це скорочує час ітерацій розподіленого навчання до 55% і забезпечує відмовостійкість до 50%-ї частоти відмов вузлів під час інференсу.
Недавні досягнення в галузі великих мовних моделей були обумовлені масштабом. Великі набори даних і кількість параметрів призвели до створення кращих моделей. Хоча ця тенденція показала передбачуване покращення продуктивності, вона також призвела до збільшення витрат на розробку до межі, оскільки моделі тепер потрібно розподіляти на тисячах дорогих взаємопов’язаних вузлів під час навчання.
Для вирішення цієї проблеми необхідні нові методи, які обмежують міжвузлову комунікацію під час навчання. Це відкриває можливість навчання на географічно розподіленому обладнанні, усуваючи ключове вузьке місце в поточних постачаннях.
Більша частина ранніх досліджень у цій галузі була зосереджена на методах паралелізму даних, коли кожен вузол незалежно навчає копію моделі і ділиться оновленнями градієнтів через деякі рідкі інтервали. Ці методи є гарною відправною точкою, оскільки вони спочатку ефективні з точки зору комунікації. Однак вони погано масштабується, оскільки вимагають, щоб кожен вузол зберігав повну модель у пам’яті, що обмежує розмір моделі ємністю пам’яті найменшого учасника.
Представляємо SkipPipe
Разом з дослідниками з Університету Невшателя та Технічного університету Делфта ми розробили SkipPipe — відмовостійкий метод паралельного конвеєрного навчання, який динамічно пропускає і перераспреділяє етапи для оптимізації навчання в децентралізованих середовищах. SkipPipe демонструє скорочення часу навчання на 55% порівняно зі стандартними методами конвеєрного навчання в цих середовищах, при цьому не погіршуючи збіжність.
Він також має високу відмовостійкість — демонструє стійкість до 50% відмови вузлів з втратою лише 7% перплексії під час інференсу (тобто, коли половина вузлів конвеєра для однієї моделі недоступна, ми втрачаємо лише 7% перплексії при запуску інференсу через тепер вже розріджену модель).
На відміну від існуючих методів паралельного навчання даних, SkipPipe може навчати великі моделі. Оскільки він розподіляє саму модель між вузлами, а не просто розподіляє набір даних, SkipPipe зменшує обсяг пам’яті на кожному окремому вузлі та усуває обмеження на розмір моделі, дозволяючи будувати моделі теоретично безмежного розміру на розподіленій і децентралізованій інфраструктурі.
Як це працює
SkipPipe базується на традиційному конвеєрному паралелізмі, динамічно вибираючи, які етапи виконувати для кожного мікропакету, замість послідовної обробки кожного етапу. В традиційних конвеєрах кожен мікропакет проходить через всі шари моделі, що означає, що якщо один етап затримується, всі наступні етапи повинні чекати. SkipPipe дозволяє визначити коефіцієнт пропуску (k%), що дозволяє, в свою чергу, обходити певні шари для мікробатча, якщо вони можуть призвести до затримок.

SkipPipe використовує новий алгоритм планування для аналізу доступних обчислювальних шляхів через мережу і вибору оптимального маршруту. Це мінімізує час простою GPU і підвищує відмовостійкість, дозволяючи системі обходити не працюючі або повільні вузли.
Висновок
SkipPipe надає основну будівельну блок-систему для розподіленого (і децентралізованого) навчання, забезпечуючи як ефективність комунікації, так і відмовостійкість для конвеєрного паралелізму, в той час як існуючі роботи зосереджені виключно на паралелізмі даних. Зосередивши увагу на конвеєрному паралелізмі, ми усуваємо обмеження на розмір моделі, властиве існуючим методам, дозволяючи окремим моделям розширюватися через кілька розподілених вузлів, а не просто дублюватися та навчатися в паралельному режимі.
При поєднанні з системою координації і методом довіреної верифікації SkipPipe дозволяє ефективно навчати величезні передові моделі на краудсорсингових обчисленнях.
Щоб дізнатися більше, ви можете прочитати повну статтю тут.
SkipPipe повністю відкритий і ми закликаємо дослідницьку спільноту будувати свої розробки на основі цього коду.