Збільште продуктивність і зменшіть витрати на навчання глибокого навчання за допомогою AWS Trainium і Amazon SageMaker

Збільште продуктивність і зменшіть витрати на навчання глибокого навчання за допомогою AWS Trainium і Amazon SageMaker

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

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

SageMaker — це повністю керована служба ML, яка допомагає розробникам і дослідникам даних легко створювати, навчати та розгортати моделі ML. SageMaker уже пропонує найширший і найглибший вибір обчислювальних пропозицій із апаратними прискорювачами для навчання ML, у тому числі G5 (Nvidia A10G) екземпляри та P4d (Nvidia A100) екземпляри.

Зростаючі вимоги до обчислень вимагають швидшої та економічно ефективної обчислювальної потужності. Щоб ще більше скоротити час навчання моделі та дозволити фахівцям ML працювати швидше, AWS впроваджує інновації в чіпи, сервери та підключення до центру обробки даних. Нові екземпляри Trn1 на основі AWS Trainium чіпи пропонують найкращу ціну-продуктивність і найшвидше навчання моделям ML на AWS, забезпечуючи до 50% нижчу вартість навчання моделей глибокого навчання порівняно з порівнянними екземплярами на базі GPU без будь-якого зниження точності.

У цій публікації ми покажемо, як ви можете максимізувати свою продуктивність і зменшити витрати, використовуючи екземпляри Trn1 із SageMaker.

Огляд рішення

Навчальні завдання SageMaker підтримують екземпляри ml.trn1 на базі чіпів Trainium, спеціально створених для високопродуктивних програм навчання ML у хмарі. Ви можете використовувати екземпляри ml.trn1 на SageMaker для навчання обробки природної мови (NLP), комп’ютерного зору та моделей рекомендацій у широкий набір додатків, як-от розпізнавання мовлення, рекомендації, виявлення шахрайства, класифікація зображень і відео та прогнозування. Екземпляри ml.trn1 містять до 16 чіпів Trainium, які є чіпом ML другого покоління, створеним AWS після AWS Inferentia. Примірники ml.trn1 є першими Обчислювальна хмара Amazon Elastic (Amazon EC2) із пропускною спроможністю до 800 Гбіт/с адаптера еластичної тканини (EFA). Для ефективного паралелізму даних і моделей кожен екземпляр ml.trn1.32xl має 512 ГБ пам’яті з високою пропускною здатністю, забезпечує до 3.4 петафлопс обчислювальної потужності FP16/BF16 і включає в себе NeuronLink, неблокуюче міжсистемне з’єднання для внутрішнього екземпляра з високою пропускною здатністю. .

Trainium доступний у двох конфігураціях і може використовуватися у Східному (Північна Вірджинія) і Західному (Орегон) регіонах США.

У наведеній нижче таблиці підсумовано функції екземплярів Trn1.

Розмір екземпляра Трайніум
Прискорювачі
Accelerator
пам'ять
(ГБ)
vCPU Екземпляр
пам'ять
(ГіБ)
мережу
ширина смуги
(Гбіт / с)
EFA і
RDMA
Підтримайте
trn1.2xlarge 1 32 8 32 До 12.5 Немає
trn1.32xlarge 16 512 128 512 800 Так
trn1n.32xlarge (незабаром) 16 512 128 512 1600 Так

Давайте розберемося, як використовувати Trainium із SageMaker на простому прикладі. Ми навчимо модель класифікації тексту за допомогою навчання SageMaker і PyTorch за допомогою бібліотеки трансформаторів Hugging Face.

Ми використовуємо набір даних Amazon Reviews, який складається з відгуків із amazon.com. Дані охоплюють період у 18 років і включають приблизно 35 мільйонів оглядів до березня 2013 року. Огляди містять інформацію про продукт і користувача, рейтинги та огляд відкритого тексту. Наступний код є прикладом із AmazonPolarity набір тестів:

{
title':'Great CD', 'content':"My lovely Pat has one of the GREAT voices of her generation. I have listened to this CD for YEARS and I still LOVE IT. When I'm in a good mood it makes me feel better. A bad mood just evaporates like sugar in the rain. This CD just oozes LIFE. Vocals are jusat STUUNNING and lyrics just kill. One of life's hidden gems. This is a desert isle CD in my book. Why she never made it big is just beyond me. Everytime I play this, no matter black, white, young, old, male, female EVERYBODY says one thing ""Who was that singing ?""", 'label':1
}

Для цієї публікації ми використовуємо лише поля вмісту та мітки. Поле вмісту – це довільний текстовий огляд, а поле мітки – це двійкове значення, яке містить 1 або 0 для позитивних чи негативних відгуків відповідно.

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

Деталі реалізації

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

  • AWS Trainium – За своєю суттю кожен Екземпляр Trainium має вбудовані пристрої Trainium. Trn1.2xlarge має 1 пристрій Trainium, а Trn1.32xlarge — 16 пристроїв Trainium. Кожен пристрій Trainium складається з комп’ютера (2 NeuronCore-v2), 32 ГБ пам’яті пристрою HBM і NeuronLink для швидкого зв’язку між пристроями. Кожен NeuronCore-v2 складається з повністю незалежного гетерогенного обчислювального блоку з окремими механізмами (Tensor/Vector/Scalar/GPSIMD). GPSIMD — це повністю програмовані процесори загального призначення, які можна використовувати для впровадження спеціальних операторів і запуску їх безпосередньо на механізмах NeuronCore.
  • Навчання Amazon SageMaker – SageMaker забезпечує повністю керований досвід навчання, щоб легко навчати моделі, не турбуючись про інфраструктуру. Коли ви використовуєте SageMaker Training, він виконує все необхідне для навчальної роботи, як-от код, контейнер і дані, в обчислювальній інфраструктурі, відокремленій від середовища виклику. Це дозволяє нам проводити експерименти паралельно та швидко повторювати. SageMaker надає a Python SDK відкрити навчальні робочі місця. У прикладі в цій публікації використовується SageMaker Python SDK для запуску навчального завдання за допомогою Trainium.
  • AWS нейрон – Оскільки Trainium NeuronCore має власний обчислювальний механізм, нам потрібен механізм для компіляції нашого навчального коду. The AWS нейрон компілятор бере код, написаний на Pytorch/XLA, і оптимізує його для роботи на пристроях Neuron. Компілятор Neuron інтегрований як частина контейнера глибокого навчання, який ми будемо використовувати для навчання нашої моделі.
  • PyTorch/XLA - Це Пакет Python використовує компілятор глибокого навчання XLA для підключення середовища глибокого навчання PyTorch і хмарних прискорювачів, таких як Trainium. Для створення нової мережі PyTorch або перетворення існуючої для роботи на пристроях XLA потрібно лише кілька рядків коду, специфічного для XLA. Ми побачимо для нашого випадку використання, які зміни нам потрібно внести.
  • Розподілене навчання – Для ефективного проведення навчання на кількох NeuronCores нам потрібен механізм для розподілу навчання в доступних NeuronCores. SageMaker підтримує torchrun з примірниками Trainium, які можна використовувати для запуску кількох процесів, еквівалентних кількості NeuronCores у кластері. Це робиться шляхом передачі параметра розподілу в оцінювач SageMaker таким чином, який запускає паралельне розподілене навчання даних, де та сама модель завантажується в різні NeuronCores, які обробляють окремі пакети даних:
distribution={"torch_distributed": {"enabled": True}}

Для роботи на Trainium потрібні зміни в сценарії

Давайте розглянемо зміни коду, необхідні для адаптації звичайного сценарію PyTorch на основі GPU для запуску на Trainium. На високому рівні нам потрібно внести такі зміни:

  1. Замініть пристрої GPU на пристрої Pytorch/XLA. Оскільки ми використовуємо розповсюдження смолоскипів, нам потрібно ініціалізувати навчання за допомогою XLA як пристрою таким чином:
    device = "xla"
    torch.distributed.init_process_group(device)

  2. Ми використовуємо розподілену серверну частину PyTorch/XLA, щоб поєднати розподілені API PyTorch із семантикою зв’язку XLA.
  3. Ми використовуємо PyTorch/XLA MpDeviceLoader для конвеєрів прийому даних. MpDeviceLoader допомагає підвищити продуктивність, перекриваючи три кроки: трасування, компіляцію та пакетне завантаження даних на пристрій. Нам потрібно обернути завантажувач даних PyTorch із MpDeviceDataLoader наступним чином:
    train_device_loader = pl.MpDeviceLoader(train_loader, "xla")

  4. Виконайте крок оптимізації за допомогою API, наданого XLA, як показано в наступному коді. Це консолідує градієнти між ядрами та видає покрокове обчислення пристрою XLA.
    torch_xla.core.xla_model.optimizer_step(optimizer)

  5. Зіставте API CUDA (якщо такі є) на загальні API PyTorch.
  6. Замініть злиті оптимізатори CUDA (якщо такі є) загальними альтернативами PyTorch.

Повний приклад, який навчає модель класифікації тексту за допомогою SageMaker і Trainium, доступний у наступному GitHub репо. Файл блокнота Точне налаштування Transformers для побудови класифікаційних моделей за допомогою SageMaker і Trainium.ipynb є точкою входу та містить покрокові інструкції щодо проведення навчання.

Контрольні тести

У тесті ми запустили два навчальні завдання: одне на ml.trn1.32xlarge, а інше на ml.p4d.24xlarge з однаковим розміром партії, навчальними даними та іншими гіперпараметрами. Під час навчальних завдань ми виміряли оплачуваний час навчальних завдань SageMaker і розрахували співвідношення ціни та ефективності, помноживши час, необхідний для виконання навчальних завдань у годинах, на ціну за годину для типу екземпляра. Ми вибрали найкращий результат для кожного типу екземпляра з кількох виконань завдань.

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

Model Тип екземпляра Ціна (за вузол * година) Пропускна здатність (ітерацій/с) ValidationAccuracy Оплачуваний час (сек) Вартість навчання в $
Базова класифікація BERT ml.trn1.32xвеликий 24.725 6.64 0.984 6033 41.47
Базова класифікація BERT ml.p4d.24xlarge 37.69 5.44 0.984 6553 68.6

Результати показали, що екземпляр Trainium коштує дешевше, ніж екземпляр P4d, забезпечуючи однакову пропускну здатність і точність під час навчання тієї самої моделі з тими самими вхідними даними та параметрами навчання. Це означає, що екземпляр Trainium забезпечує кращу ціну-продуктивність, ніж екземпляри P4D на основі GPU. На такому простому прикладі ми бачимо, що Trainium пропонує приблизно на 22% швидший час навчання та до 50% нижчу вартість порівняно з інстансами P4d.

Розгорніть навчену модель

Після навчання моделі ми можемо розгорнути її на різних типах екземплярів, таких як CPU, GPU або AWS Inferentia. Ключовий момент, на який слід звернути увагу, полягає в тому, що навчена модель не залежить від спеціалізованого обладнання для розгортання та створення висновків. SageMaker надає механізми для розгортання навченої моделі за допомогою механізмів як у реальному часі, так і в пакетному режимі. Приклад блокнота в сховищі GitHub містить код для розгортання навченої моделі як кінцевої точки реального часу за допомогою екземпляра ml.c5.xlarge (на базі ЦП).

Висновок

У цій публікації ми розглянули, як використовувати Trainium і SageMaker для швидкого налаштування та навчання моделі класифікації, яка дає до 50% економії коштів без шкоди для точності. Ви можете використовувати Trainium для широкого діапазону випадків використання, які включають попереднє навчання або точне налаштування моделей на основі Transformer. Додаткову інформацію про підтримку різних архітектур моделей див Рекомендації щодо відповідності архітектури моделі.


Про авторів

Арун Кумар Локанатха є старшим архітектором рішень ML у команді Amazon SageMaker Service. Він зосереджується на допомозі клієнтам створювати, навчати та переносити робочі навантаження ML на SageMaker у масштабі. Він спеціалізується на глибокому навчанні, особливо в області НЛП і CV. Поза роботою він захоплюється бігом і пішим туризмом.

Марк Ю є інженером-програмістом в AWS SageMaker. Він зосереджується на створенні великомасштабних розподілених систем навчання, оптимізації ефективності навчання та розробці високопродуктивного обладнання для навчання ml, зокрема SageMaker trainium. Марк також має глибокі знання з оптимізації інфраструктури машинного навчання. У вільний час захоплюється пішим туризмом, бігом.

Омрі Фукс є менеджером з розробки програмного забезпечення в AWS SageMaker. Він є технічним керівником, відповідальним за платформу для навчання SageMaker, зосереджуючись на оптимізації ефективності навчання SageMaker і покращенні досвіду навчання. Він захоплюється передовими технологіями машинного навчання та ШІ. У вільний час любить їздити на велосипеді та піші прогулянки.

Гал Ошрі є старшим менеджером із продуктів у команді Amazon SageMaker. Він має 7 років досвіду роботи над інструментами, фреймворками та сервісами машинного навчання.

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

Більше від AWS Машинне навчання