Як Latent Space використовувала бібліотеку паралелізму моделі Amazon SageMaker, щоб розширити кордони великомасштабних трансформаторів

Вихідний вузол: 1204406

Співавторами цього блогу є Сара Джейн Хонг CSO, Дерріл Барнхарт і Ієн Томпсон, генеральний директор Latent Space і Прем Ранга з AWS.

Латентний простір — це приховане представлення абстрактних ідей, які вивчають моделі машинного навчання (ML). Наприклад, «собака», «квітка» або «двері» — це поняття або місця в прихованому просторі. В Латентний простір, ми працюємо над механізмом, який дозволяє маніпулювати та досліджувати цей простір за допомогою мовних і візуальних підказок. Команда Latent Space працює з двох галузей, які давно майже не збігаються: графіка та обробка природної мови (NLP). Традиційно, модальності зображень і тексту оброблялися окремо, кожен зі своєю історією складної, дорогої та крихкої інженерії функцій. Завдання НЛП, такі як розуміння документа або відповіді на запитання, зазвичай мають мало спільного з завданнями бачення, такими як розуміння або рендеринг сцени, і зазвичай ми використовуємо дуже різні підходи та моделі для кожного завдання. Але це швидко змінюється.

Це злиття способів в єдиному спільному прихованому просторі відкриває нове покоління творчих і комерційних додатків, від ігор до розуміння документів. Але розблокування цих нових програм в одній моделі відкриває нові проблеми масштабування, як підкреслено в «Гіркому урокі» Річарда Саттона, і захоплюючу роботу за останні кілька років над законами масштабування. Щоб зробити це можливим, Latent Space працює над передовими дослідженнями, щоб об’єднати ці модальності в одній моделі, а також масштабувати й ефективно робити це. Ось тут і виникає паралелізм моделі.

Amazon SageMakerУнікальне автоматизоване розбиття моделей та ефективний підхід до конвеєрної конвеєрії зробили наше прийняття паралельності моделей можливим з невеликими інженерними зусиллями, і ми розширили наше навчання моделей понад 1 мільярд параметрів (ми використовуємо p4d.24xlarge A100 екземпляри), що для нас є важливою вимогою. Крім того, ми помітили, що під час навчання з 16-вузловою, восьми графічною установкою навчання з бібліотекою паралелізму моделі SageMaker ми зафіксували підвищення ефективності на 38% порівняно з нашими попередніми навчальними запусками.

Проблеми з навчанням великомасштабних трансформаторів

У Latent Space ми об’єднуємо мову та бачення в моделях трансформаторів з мільярдами параметрів, щоб підтримувати випадки використання «поза розповсюдженням», які виникли б у уяві користувача або які б мали місце в реальному світі, але не в наших навчальних даних. Ми вирішуємо проблеми, пов’язані з масштабуванням до мільярдів параметрів і більше, двома різними способами:

Методи пошуку інформації вже давно є ключовим компонентом пошукових систем і завдань QA. Нещодавно було досягнуто захоплюючого прогресу, поєднуючи класичні ІЧ-методи з сучасними трансформаторами, спеціально для завдань із відповідями на запитання, коли модель тренується разом із нейронним ретривером, який вчиться отримувати відповідні документи, щоб допомогти відповісти на запитання. Для огляду див. останні роботи FAIR in Доповнене генерування пошуку: оптимізація створення інтелектуальних моделей обробки природної мови та Fusion-in-Decoder, Google Brain's РЕАЛЬНО, і Nvidia Нейронний ретривер для відповіді на запитання.

Незважаючи на те, що доповнені методи пошуку допомагають знижувати витрати та ефективність, ми все ще не можемо встановити модель на одному GPU для нашої найбільшої моделі. Це означає, що нам потрібно використовувати паралелізм моделі для її навчання. Однак через природу нашої архітектури пошуку розробка розділення моделі була складною через взаємозалежність між вилученими контекстами через навчальні вхідні дані. Крім того, навіть якщо ми визначимо, як ми розділимо нашу модель, введення паралельності моделі було важливим інженерним завданням, яке ми виконували вручну протягом усього життєвого циклу досліджень і розробок.

Бібліотека паралелізму моделі SageMaker

Паралелізм моделі — це процес поділу моделі між кількома пристроями або вузлами (наприклад, екземпляри з GPU) і створення ефективного конвеєра для навчання моделі на цих пристроях для максимального використання GPU. The бібліотека паралелізму моделей в SageMaker робить паралелізм моделі більш доступним, забезпечуючи автоматичне розбиття моделі, також зване автоматизоване розділення моделі і складне планування роботи трубопроводу. Алгоритми поділу моделі можуть оптимізувати швидкість або споживання пам'яті. Бібліотека використовує алгоритм розподілу, який балансує пам’ять, мінімізує зв’язок між пристроями та оптимізує продуктивність.

Автоматизоване поділ моделі

Для нашого випадку використання PyTorch, паралельна бібліотека моделі внутрішньо виконує крок трасування (на першому кроці навчання), який створює графік моделі та визначає форми тензора та параметра. Потім він створює дерево, яке складається з вкладених nn.Module об’єкти в моделі, а також додаткові дані, зібрані в результаті трасування, наприклад кількість збережених nn.Parameters, і час виконання для кожного nn.Module.

Потім бібліотека обходить це дерево з кореня й запускає алгоритм розподілу, який балансує обчислювальне навантаження та використання пам’яті та мінімізує зв’язок між екземплярами. Якщо декілька модулів nn.Modules мають однаковий параметр nn.Parameter, ці модулі розміщуються на одному пристрої, щоб уникнути підтримки кількох версій одного параметра. Після прийняття рішення про розділення призначені модулі та ваги завантажуються в їхні пристрої.

Планування роботи трубопроводу

Ще однією основною особливістю паралельної бібліотеки розподіленої моделі SageMaker є трубопроводи, які визначають порядок обчислень та обробки даних між пристроями під час навчання моделі. Конвеєрний конвеєр заснований на поділі міні-пакету на мікропакети, які один за іншим надходять у навчальний конвеєр і дотримуються графіка виконання, визначеного середовищем виконання бібліотеки.

Конвеєр мікропакетів забезпечує повне використання всіх графічних процесорів, що нам доведеться створити самостійно, але з бібліотекою паралелізму моделей це відбувається акуратно за кадром. Нарешті, ми можемо використовувати Amazon FSx, що важливо для забезпечення високої швидкості читання, враховуючи кількість файлів, які зчитуються під час навчання мультимодальної моделі з пошуком.

Навчальна архітектура

Наступна діаграма показує, як ми налаштовуємо нашу архітектуру навчання. Наші основні цілі полягали в тому, щоб підвищити швидкість навчання та зменшити витрати. Трансформатори зображень і мови, які ми навчаємо, дуже складні, зі значною кількістю шарів і ваг всередині, що працюють до мільярдів параметрів, і все це робить їх нездатними вмістити в пам’ять одного вузла. Кожен вузол несе підмножину моделі, через яку протікають дані та перетворення спільно використовують і компілюють. Встановлюємо 16 p4d.24xlarge екземпляри, кожен з вісьмома графічними процесорами, використовуючи таке представлення архітектури:

Коли ми збільшуємо наші моделі, поширена тенденція полягає в тому, щоб усе зберігалося у вагових показниках мережі. Однак для практичних цілей ми хочемо розширити наші моделі, щоб навчитися шукати відповідні контексти, щоб допомогти із завданням візуалізації. Це дозволяє нам знизити витрати на обслуговування без шкоди для якості зображення. Ми використовуємо велику модель NLP на основі трансформаторів, і, як згадувалося раніше, ми спостерігали підвищення ефективності навчання на 38% за допомогою бібліотеки паралелізму моделі SageMaker, як показано нижче:

  • Нам потрібен allreduce для кожного обчислення у випадку паралельності тензорного рівня. Це займає O(log_2 n) паралельних кроків. Тобто n машин, які виконують O(n) кроків, для O(n log_2 n) загальних операцій.
  • Для паралельності конвеєра нам потрібно O(1) паралельних кроків для передачі даних по конвеєру
  • Враховуючи 16 машин з вісьмома графічними процесорами, ми маємо вартість O(1) для паралельного конвеєра та O(log_2(8)) = O(3) для паралельної моделі по глибині.
  • У цьому випадку ми бачимо, що вартість мережі зменшується на 1/3 шляхом перемикання на паралельний конвеєр, що ми використовуємо з паралельністю моделі SageMaker, а загальна вартість навчання зменшується до 1/2 + 1/2 * 1/log_2(16 ) = 0.625 первісної вартості, що призводить до відповідного підвищення ефективності.

Загалом, коли потреба вимагає розподіленого навчання (проблеми з розміром моделі масштабування або навчальними даними), ми можемо дотримуватися набору найкращих практик, щоб визначити, який підхід найкраще працює.

Найкращі методи розподіленого навчання

Виходячи з нашого досвіду, ми пропонуємо почати з паралельного підходу з розподіленими даними. Паралелізм розподілених даних, наприклад Паралельна бібліотека розподілених даних SageMaker вирішує більшість проблем з мережею з репліками моделей, тому ви повинні вмістити моделі в найменшу кількість вузлів, а потім реплікувати, щоб масштабувати розмір пакету за потреби.

Якщо під час навчання у вас закінчиться пам’ять, як ми зробили в цьому сценарії, ви можете перейти до паралельного підходу моделі. Однак розгляньте ці альтернативи, перш ніж спробувати моделювати паралельне навчання:

  • На апаратному забезпеченні NVIDIA Tensor Core використовуйте тренування змішаної точності для прискорення та зменшення споживання пам’яті.
  • Зменште розмір пакету (або зменште роздільну здатність зображення чи довжину послідовності NLP, якщо можливо).

Крім того, ми віддаємо перевагу моделям, які не мають пакетної нормалізації, як описано в Високопродуктивне широкомасштабне розпізнавання зображень без нормалізації. Якщо цього не можна уникнути, переконайтеся, що пакетна нормалізація синхронізована між пристроями. Коли ви використовуєте розподілене навчання, ваш пакет розподіляється між графічними процесорами, тому точна пакетна статистика вимагає синхронізації на всіх пристроях. Без цього нормалізація матиме підвищену похибку і, таким чином, погіршить збіжність.

Почніть з паралельного навчання моделі, якщо у вас є такі обмеження:

  • Ваша модель не підходить для одного пристрою
  • Через розмір вашої моделі ви стикаєтеся з обмеженнями у виборі більших розмірів партії, наприклад, якщо вага моделі займає більшу частину пам’яті графічного процесора, і ви змушені вибрати менший, неоптимальний розмір партії.

Під час оптимізації для продуктивності виконайте такі дії:

  • Використовуйте конвеєри для зв’язку між вузлами, щоб мінімізувати затримки та збільшити пропускну здатність
  • Тримайте трубопроводи якомога коротшими, щоб звести до мінімуму будь-які бульбашки. Кількість мікропартій має бути налаштована, щоб збалансувати ефективність обчислень з розміром бульбашки, і бути принаймні довжиною трубопроводу. Якщо потрібно, ви можете сформувати мікропакети на рівні маркера, як описано в TeraPipe: Паралелізм конвеєра рівня маркерів для навчання великомасштабних мовних моделей

Під час оптимізації витрат використовуйте керовані SageMaker Spot Instances для навчання. Це може оптимізувати вартість навчальних моделей до 90% у порівнянні з екземплярами On-Demand. SageMaker керує спотовими перервами від вашого імені.

Інші фактори, які слід враховувати:

  • Усередині вузла, коли є швидке взаємоз’єднання, це більш нюанси. Якщо є достатня ємність внутрішньовузової мережі, перетасування даних для більш оптимального обчислення може показати перевагу.
  • Якщо активації набагато більші, ніж тензори ваг, також може допомогти оптимізатор з розподіленими елементами. Будь ласка зверніться до ZeRO для більш докладної інформації.

У наступній таблиці наведено деякі поширені сценарії масштабування навчання та те, як їх можна налаштувати в AWS.

сценарій Коли це застосовується? рішення
Масштабування від одного графічного процесора до багатьох графічних процесорів Коли обсяг навчальних даних або розмір моделі занадто великий Перейдіть на екземпляр із кількома графічними процесорами, такий як p3.16xlarge, який має вісім графічних процесорів, із розподілом даних і обробки на вісім графічних процесорів, що забезпечує майже лінійне прискорення часу, необхідного для навчання моделі.
Масштабування від одного екземпляра до кількох екземплярів Коли потреби масштабування виходять за рамки зміни розміру екземпляра Збільште кількість екземплярів за допомогою функції оцінки SageMaker Python SDK, встановивши для instance_type значення p3.16xlarge, а instance_count — 2. Замість восьми графічних процесорів на одному p3.16xlarge у вас є 16 графічних процесорів у двох ідентичних екземплярах. Розгляньте можливість використання Паралельна бібліотека розподілених даних SageMaker.
Вибір модельного паралельного підходу для навчання При виникненні помилок нестачі пам’яті під час тренування Перейдіть до модельного паралельного підходу за допомогою Паралельна бібліотека розподіленої моделі SageMaker.
Продуктивність мережі для міжвузлового зв'язку Для розподіленого навчання з кількома екземплярами (наприклад, зв’язок між вузлами в кластері під час виконання операції AllReduce) Ваші екземпляри мають бути в одному регіоні та тій самій зоні доступності. Коли ви використовуєте SageMaker Python SDK, це вирішується за вас. Ваші дані про навчання також мають бути в тій самій зоні доступності. Розгляньте можливість використання Паралельна бібліотека розподілених даних SageMaker.
Оптимізований графічний процесор, мережа та сховище Для потреб широкомасштабного розподіленого навчання Тип екземпляра p4d.24xlarge був розроблений для швидкого локального сховища та швидкої мережної об’єднавчої плати до 400 гігабіт, і ми настійно рекомендуємо його як найефективніший варіант для розподіленого навчання.

Висновок

Завдяки паралельній бібліотеці моделей у SageMaker ми отримуємо багато переваг із коробки, таких як автоматичне розбиття моделі та ефективне конвеєрування. У цій публікації ми поділилися своїми проблемами з нашим варіантом використання ML, нашими міркуваннями щодо різних підходів до навчання та про те, як ми використовували бібліотеку паралелізму моделі Amazon SageMaker, щоб прискорити навчання. Що найкраще, тепер може знадобитися лише кілька годин, щоб прийняти найкращі методи для паралельності моделей та покращення продуктивності, описані тут. Якщо ця публікація допоможе вам або надихне вас вирішити проблему, ми будемо раді почути про неї! Будь ласка, поділіться своїми коментарями та відгуками.

посилання

Для отримання додаткової інформації див. наведене нижче:


Про авторів

Прем Ранга є архітектором корпоративних рішень із Атланти, штат Джорджія. Він є частиною спільноти машинного навчання Technical Field і любить працювати з клієнтами на їх шляху машинного навчання та штучного інтелекту. Прем захоплюється робототехнікою, є дослідником автономних транспортних засобів, а також створив керований Alexa Beer Pours у Х'юстоні та інших місцях.

Сара Джейн Хонг є співзасновником та головним науковим директором Latent Space. Її історія лежить на стику взаємодії людини та комп’ютера та машинного навчання. Раніше вона керувала дослідженнями НЛП в Sonar (придбаний Marchex), який обслуговує бізнес у просторі розмовного штучного інтелекту. Вона також є шанованим розробником AR/VR, яка отримала нагороди та стипендії від Oculus, Mozilla Mixed Reality та Microsoft Hololens.

Дерріл Барнхарт є співзасновником і технічним директором Latent Space. Він досвідчений розробник з досвідом роботи з прискоренням графічного процесора, комп’ютерною графікою, великомасштабними даними та машинним навчанням. Інші захоплення включають математику, розробку ігор і вивчення інформації.

Ян Томпсон є засновником і генеральним директором Latent Space. Ян — інженер і дослідник, натхненний «суміжним можливим» — технологіями, які мають великий вплив на наше життя. Наразі зосереджено на спрощенні та масштабуванні навчання мультимодального представлення, щоб допомогти створити безпечний і творчий AI. Раніше він допомагав створювати компанії у сфері графіки/віртуальної реальності (AltspaceVR, придбаний Microsoft) та освіти/НЛП (HSE).

Джерело: https://aws.amazon.com/blogs/machine-learning/how-latent-space-used-the-amazon-sagemaker-model-parallelism-library-to-push-the-frontiers-of-large- масштабні трансформатори/

Часова мітка:

Більше від Блог машинного навчання AWS