Покращуйте цінову ефективність навчання моделі за допомогою гетерогенних кластерів Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Покращуйте цінову ефективність навчання моделі за допомогою різнорідних кластерів Amazon SageMaker

Цей пост написано спільно з Хаїмом Рендом з Mobileye.

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

Щоб вирішити цю проблему, у липні 2022 року ми запущений неоднорідні кластери для Amazon SageMaker модель навчання, що дозволяє запускати навчальні завдання, які використовують різні типи екземплярів в одній роботі. Це дозволяє розвантажувати частини конвеєра попередньої обробки даних оптимізований для обчислень типи екземплярів, тоді як завдання глибокої нейронної мережі (DNN) продовжує виконуватися GPU або прискорені обчислення типи екземплярів. Наші контрольні показники показують до 46% переваги в ціні після включення гетерогенних кластерів у навчання моделі комп’ютерного бачення TensorFlow, пов’язане з ЦП.

Для подібного випадку використання, Мобільне, компанія з розробки технологій автономних транспортних засобів, поділився цим:

«Перемістивши навчання моделі комп’ютерного бачення глибокого навчання, пов’язане з процесором, для запуску кількох типів екземплярів (прискорювачі CPU та GPU/ML), використовуючи tf.data.service Завдяки створеному нами рішенню нам вдалося скоротити час навчання на 40%, одночасно зменшивши вартість навчання на 30%. Ми в захваті від гетерогенних кластерів, які дозволяють нам запускати це рішення на Amazon SageMaker».

— AI Engineering, Mobileye

У цій публікації ми обговорюємо такі теми:

  • Як гетерогенні кластери допомагають усунути вузькі місця ЦП
  • Коли використовувати різнорідні кластери та інші альтернативи
  • Довідкова реалізація в PyTorch і TensorFlow
  • Результати тестування продуктивності
  • Гетерогенні кластери в Mobileye

AWS екземпляр прискореного обчислення сімейство включає прискорювачі від власних мікросхем AWS (AWS Inferentia, AWS Trainium), NVIDIA (Графічні процесори), А також Прискорювачі Гауді від Habana Labs (компанія Intel). Зауважте, що в цій публікації ми використовуємо терміни графічний процесор і прискорювач як синоніми.

Як гетерогенні кластери усувають вузькі місця обробки даних

Науковці даних, які тренують моделі глибокого навчання, прагнуть максимізувати рентабельність навчання та мінімізувати час навчання. Щоб досягти цього, однією з основних цілей оптимізації є високе використання GPU, найдорожчого та дефіцитного ресурсу в межах Обчислювальна хмара Amazon Elastic (Amazon EC2). Це може бути складнішим із робочими навантаженнями ML, які поєднують пряме та зворотне розповсюдження моделі класичної нейронної мережі з інтенсивним використанням графічного процесора з інтенсивними завданнями, пов’язаними з ЦП, такими як обробка даних і доповнення комп’ютерного зору або запуск симуляції середовища під час навчання з підкріпленням. Ці робочі навантаження можуть у кінцевому підсумку бути пов’язаними з процесором, де наявність більшого ЦП призведе до вищої пропускної здатності та швидшого та дешевшого навчання, оскільки наявні прискорювачі частково простоюють. У деяких випадках вузькі місця ЦП можна вирішити, перейшовши на інший тип екземпляра з вищим співвідношенням ЦП:ГП. Однак бувають ситуації, коли перехід на інший тип екземпляра може бути неможливим через архітектуру сімейства екземплярів, сховище або мережеві залежності.

У таких ситуаціях вам потрібно збільшити потужність процесора, змішуючи типи екземплярів: екземпляри з графічним процесором разом із центральним процесором. У підсумку це призводить до загального вищого співвідношення CPU:GPU. Донедавна навчальні завдання SageMaker обмежувалися екземплярами одного вибраного типу екземплярів. Завдяки гетерогенним кластерам SageMaker дослідники даних можуть легко запускати навчальну роботу з кількома типами екземплярів, що дає змогу перенести деякі з існуючих завдань ЦП з екземплярів графічного процесора на виділені екземпляри ЦП, оптимізовані для обчислень, що призводить до більш високого використання графічного процесора та швидшого та дешевшого. ефективне навчання. Крім того, з додатковою потужністю процесора ви можете зробити завдання попередньої обробки, які традиційно виконувалися в автономному режимі як попередній крок до навчання, стати частиною вашої навчальної роботи. Це пришвидшує ітерації та експерименти над попередньою обробкою даних і припущеннями та гіперпараметрами навчання DNN.

Наприклад, розглянемо потужний екземпляр GPU, ml.p4d.24xlarge (96 vCPU, 8 x NVIDIA A100 GPU), із співвідношенням CPU:GPU 12:1. Припустімо, що вашій навчальній роботі потрібно 20 vCPU для попередньої обробки достатньої кількості даних, щоб один графічний процесор використовувався на 100%. Тому, щоб усі 8 графічних процесорів використовувалися на 100%, вам потрібен тип екземпляра 160 vCPU. Однак у ml.p4d.24xlarge не вистачає 64 vCPU, або 40%, що обмежує використання GPU до 60%, як показано ліворуч на наведеній нижче діаграмі. Чи допоможе додавання іншого екземпляра ml.p4d.24xlarge? Ні, тому що співвідношення CPU:GPU залишатиметься незмінним.

З різнорідними кластерами ми можемо додати два ml.c5.18xlarge (72 vCPU), як показано праворуч на діаграмі. Чиста загальна кількість vCPU у цьому кластері становить 210 (96+2*72), що призводить до співвідношення CPU:GPU до 30:1. Кожен із цих екземплярів, оптимізованих для обчислень, буде розвантажено завданням попередньої обробки даних, що потребує інтенсивного використання ЦП, і дозволить ефективно використовувати графічний процесор. Незважаючи на додаткову вартість ml.c5.18xlarge, вищий рівень використання графічного процесора забезпечує швидшу обробку, а отже, вищу цінову продуктивність.

Коли використовувати різнорідні кластери та інші альтернативи

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

Найшвидший спосіб виявити вузьке місце ЦП – це відстежити ЦП і ГП показники використання для навчальних робіт SageMaker у Amazon CloudWatch. Ви можете отримати доступ до цих видів з Консоль управління AWS у гіперпосиланні екземпляра метрики сторінки навчання. Виберіть відповідні показники та змініть роздільну здатність із 5 хвилин на 1 хвилину. Зауважте, що масштаб становить 100% для віртуального процесора або графічного процесора, тому рівень використання для екземпляра з 4 віртуальними процесорами/графічними процесорами може досягати 400%. Наступний малюнок є одним із таких прикладів із показників CloudWatch, де ЦП використовується приблизно на 100%, що вказує на вузьке місце ЦП, тоді як ГП використовується недостатньо.

Покращуйте цінову ефективність навчання моделі за допомогою гетерогенних кластерів Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Для детальної діагностики виконайте навчальні завдання з Налагоджувач Amazon SageMaker щоб профілювати статус використання ресурсів, статистику та операції інфраструктури, додавши конфігурацію профайлера під час створення оцінювача SageMaker за допомогою SDK SageMaker Python. Після того, як ви надішлете навчальну роботу, перегляньте її результат звіт профайлера для вузьких місць ЦП.

Якщо ви дійшли висновку, що ваша робота може отримати користь від вищого співвідношення обчислень CPU:GPU, спочатку подумайте про масштабування до іншого типу екземпляра в тому самому сімействі екземплярів, якщо він доступний. Наприклад, якщо ви тренуєте свою модель на ml.g5.8xlarge (32 vCPU, 1 GPU), подумайте про масштабування до ml.g5.16xlarge (64 vCPU, 1 GPU). Або, якщо ви тренуєте свою модель за допомогою багатографічного екземпляра ml.g5.12xlarge (48 vCPU, 4 GPU), подумайте про масштабування до ml.g5.24xlarge (96 vCPU, 4 GPU). Зверніться до G5 специфікацію сімейства екземплярів, щоб дізнатися більше.

Інколи масштабування неможливе, оскільки в тому самому сімействі екземплярів немає типу з вищим співвідношенням vCPU:GPU. Наприклад, якщо ви тренуєте модель на ml.trn1.32xlarge, ml.p4d.24xlarge або ml.g5.48xlarge, вам слід розглянути різнорідні кластери для навчання моделі SageMaker.

Крім масштабування, ми хотіли б зазначити, що існують додаткові альтернативи гетерогенному кластеру, наприклад NVIDIA DALI, який переносить попередню обробку зображень на GPU. Для отримання додаткової інформації див Подолання вузьких місць попередньої обробки даних за допомогою служби даних TensorFlow, NVIDIA DALI та інших методів.

Щоб спростити прийняття рішень, зверніться до наступної блок-схеми.

Покращуйте цінову ефективність навчання моделі за допомогою гетерогенних кластерів Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Як використовувати гетерогенні кластери SageMaker

Щоб швидко розпочати роботу, ви можете перейти безпосередньо до прикладів TensorFlow або PyTorch, наданих у цій публікації.

У цьому розділі ми розповімо вам, як використовувати гетерогенний кластер SageMaker на простому прикладі. Ми припускаємо, що ви вже знаєте, як навчити модель за допомогою SDK SageMaker Python і класу Estimator. Якщо ні, зверніться до Використання SageMaker Python SDK перед тим, як продовжити.

До цієї функції ви ініціалізували клас оцінювача навчального завдання за допомогою InstanceCount і параметри InstanceType, які неявно припускають, що у вас є лише один тип екземпляра (однорідний кластер). З випуском гетерогенних кластерів ми представили нове sagemaker.instance_group.InstanceGroup клас. Це група з одного або кількох екземплярів певного типу, призначених для виконання логічної ролі (наприклад, обробки даних або оптимізації нейронної мережі. Ви можете мати дві або більше груп і вказати настроюване ім’я для кожної групи екземплярів, екземпляр тип і кількість екземплярів для кожної групи екземплярів.Для отримання додаткової інформації зверніться до Використання SageMaker Python SDK та Використання низькорівневих API SageMaker.

Після того, як ви визначили групи екземплярів, вам потрібно змінити ваш навчальний сценарій для читання SageMaker інформація про середовище навчання що включає неоднорідну конфігурацію кластера. Конфігурація містить таку інформацію, як поточні групи екземплярів, поточні хости в кожній групі та в якій групі знаходиться поточний хост з їх рейтингом. Ви можете створити логіку у своєму сценарії навчання, щоб призначити групи екземплярів певним завданням навчання та обробки даних. Крім того, ваш навчальний сценарій має подбати про груповий зв’язок між екземплярами або розподілені механізми завантаження даних (наприклад, tf.data.service у TensorFlow або загальний gRPC клієнт-сервер) або будь-який інший фреймворк (наприклад, Apache Spark).

Давайте розглянемо простий приклад запуску гетерогенного навчального завдання та читання конфігурації середовища під час виконання.

  1. Під час визначення та запуску навчального завдання ми налаштовуємо дві групи екземплярів, які використовуються як аргументи для оцінювача SageMaker:
    from sagemaker.instance_group import InstanceGroup
    data_group = InstanceGroup("data_group", "ml.c5.18xlarge", 2)
    dnn_group = InstanceGroup("dnn_group", "ml.p4d.24xlarge", 1)
    
    from sagemaker.pytorch import PyTorch
    estimator = PyTorch(...,
        entry_point='launcher.py',
        instance_groups=[data_group, dnn_group]
    )
  2. На навчальному сценарії точки входу (наз launcher.py), ми зчитуємо конфігурацію гетерогенного кластера, щоб визначити, чи запускатиме екземпляр попередню обробку чи код DNN:
    from sagemaker_training import environment
    env = environment.Environment()
    if env.current_instance_group == 'data_group': ...;

Таким чином, давайте підсумуємо завдання, які SageMaker виконує від вашого імені, і завдання, за які ви відповідаєте.

SageMaker виконує такі завдання:

  1. Надання різних типів екземплярів відповідно до визначення групи екземплярів.
  2. Надання каналів введення для всіх або окремих груп екземплярів.
  3. Поширюйте навчальні сценарії та залежності до екземплярів.
  4. Налаштуйте кластер MPI для певної групи екземплярів, якщо вона визначена.

Ви відповідаєте за такі завдання:

  1. Змініть сценарій початкового навчання, щоб указати групи екземплярів.
  2. Впровадити розподілений конвеєр даних (наприклад, tf.data.service).
  3. Змініть свій сценарій точки входу (див launcher.py у прикладі блокнота), щоб бути єдиною точкою входу, яка працюватиме на всіх екземплярах, визначатиме, у якій групі екземплярів він працює, і запускатиме відповідну поведінку (наприклад, обробку даних або оптимізацію DNN).
  4. Після завершення циклу навчання ви повинні переконатися, що процес вашої точки входу завершується на всіх примірниках у всіх групах примірників. Це важливо, тому що SageMaker чекає, поки всі екземпляри завершать обробку, перш ніж позначати завдання як завершене та припиняти виставлення рахунків. The launcher.py сценарій у прикладах блокнотів TensorFlow і PyTorch забезпечує еталонну реалізацію сигналізації екземплярів групи даних для виходу, коли екземпляри групи DNN завершують свою роботу.

Приклади блокнотів для гетерогенних кластерів SageMaker

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

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

Неоднорідний кластер із використанням розподіленого завантажувача даних на основі tf.data.service (TensorFlow)

це ноутбук демонструє, як реалізувати гетерогенний кластер для навчання SageMaker за допомогою TensorFlow tf.data.service заснований розподілений конвеєр даних. Ми навчаємо модель комп’ютерного зору глибокого навчання Resnet50 що потребує збільшення даних із інтенсивним використанням ЦП. Це використовує Горвод для паралелізму розподілених даних із кількома GPU.

Ми запускаємо робоче навантаження у двох конфігураціях: спочатку як однорідний кластер, єдиний екземпляр ml.p4d.24xlarge, використовуючи стандартний tf.data конвеєр, який демонструє вузькі місця ЦП, що призводить до нижчого використання графічного процесора. Під час другого запуску ми переходимо від одного типу екземпляра до двох груп екземплярів за допомогою гетерогенного кластера SageMaker. Цей запуск перевантажує частину обробки даних на додаткові екземпляри ЦП (за допомогою tf.data.service).

Потім ми порівнюємо однорідні та різнорідні конфігурації та знаходимо ключові переваги щодо ціни. Як показано в наведеній нижче таблиці, гетерогенне завдання (86 мс/крок) навчається в 2.2 рази швидше, ніж однорідне завдання (192 мс/крок), що робить навчання моделі на 46% дешевшим.

Приклад 1 (TF) ml.p4d.24xl ml.c5.18xl Ціна за годину* Середній час кроку Ціна за крок Покращення ефективності ціни
Однорідний 1 0 $37.688 192 мс $0.201 .
Гетерогенний 1 2 $45.032 86 мс $0.108 46%

* Ціна за годину базується на us-east-1 Ціни SageMaker за запитом

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

Гетерогенний кластер із використанням клієнт-серверного завантажувача розподілених даних gRPC (PyTorch)

це ноутбук демонструє зразок робочого навантаження з використанням гетерогенного кластера для навчання SageMaker із використанням клієнт-серверного завантажувача розподілених даних gRPC. У цьому прикладі використовується один графічний процесор. Ми використовуємо модель PyTorch на основі наступного офіційний приклад МНІСТ. Навчальний код було змінено, щоб посилити попередню обробку даних. Ми навчаємо цю модель як у однорідному, так і в гетерогенному кластерному режимі та порівнюємо цінову ефективність.

У цьому прикладі ми припустили, що робоче навантаження не може отримати користь від кількох графічних процесорів і залежить від конкретної архітектури графічного процесора (NVIDIA V100). Ми провели як однорідні, так і різнорідні навчальні завдання та виявили ключові переваги в ціні, як показано в наступній таблиці. Гетерогенне завдання (1.19 с/крок) навчається в 6.5 разів швидше, ніж однорідне завдання (0.18 с/крок), що робить навчання моделі на 77% дешевшим.

Приклад 2 (PT) мл.p3.2xl ml.c5.9xl Ціна за годину* Середній час кроку Ціна за крок Покращення ефективності ціни
Однорідний 1 0 $3.825 1193 мс $0.127 .
Гетерогенний 1 1 $5.661 184 мс $0.029 77%

* Ціна за годину базується на us-east-1 Ціни SageMaker за запитом

Це можливо, тому що з більшою кількістю процесорів ми могли б використовувати 32 робочі завантажувачі даних (порівняно з 8 у ml.p3.2xlarge) для попередньої обробки даних і підтримувати використання графічного процесора близько 100% через часті проміжки часу. Див ноутбук для отримання додаткової інформації та графіків.

Гетерогенні кластери в Mobileye

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

Ми помітили, що для однієї з наших моделей CV вузьке місце ЦП було спричинено передусім важкою попередньою обробкою даних, що призвело до недостатнього використання графічних процесорів. Для цього конкретного робочого навантаження ми почали шукати альтернативні рішення, оцінили технології розподіленого конвеєра даних із гетерогенними кластерами на основі екземплярів EC2 і розробили еталонні реалізації для обох TensorFlow та PyTorch. Випуск гетерогенного кластера SageMaker дозволяє нам запускати це та подібні робочі навантаження на SageMaker, щоб отримати покращену цінову ефективність.

Міркування

З запуском функції гетерогенних кластерів SageMaker пропонує набагато більше гнучкості в змішуванні та зіставленні типів екземплярів у вашій навчальній роботі. Однак під час використання цієї функції враховуйте наступне:

  • Функція гетерогенного кластера доступна через SageMaker PyTorch та TensorFlow рамкові класи оцінювачів. Підтримувані фреймворки: PyTorch версії 1.10 або новішої та TensorFlow версії 2.6 або новішої.
  • Усі групи екземплярів мають одне й те саме зображення Docker.
  • Усі групи екземплярів мають спільний сценарій навчання. Таким чином, ваш сценарій навчання слід змінити, щоб визначити, до якої групи екземплярів він належить, і розгалуження запускається відповідно.
  • Імена хостів навчальних примірників (наприклад, alog-1, algo-2 тощо) призначаються випадковим чином і не вказують, до якої групи примірників вони належать. Щоб отримати роль примірника, ми рекомендуємо отримати його членство в групі під час виконання. Це також важливо під час перегляду входів CloudWatch, оскільки назва потоку журналу [training-job-name]/algo-[instance-number-in-cluster]-[epoch_timestamp] має ім'я хоста.
  • Стратегію розподіленого навчання (зазвичай кластер MPI) можна застосувати лише до однієї групи екземплярів.
  • SageMaker Керовані теплі басейни і SageMaker Місцевий режим наразі не можна використовувати з гетерогенним кластерним навчанням.

Висновок

У цій публікації ми обговорювали, коли та як використовувати функцію гетерогенних кластерів навчання SageMaker. Ми продемонстрували підвищення ефективності ціни на 46% на прикладі реального використання та допомогли вам швидко розпочати роботу з розподіленим завантажувачем даних (tf.data.service і gRPC клієнт-сервер). Ви можете використовувати ці реалізації з мінімальними змінами коду в існуючих сценаріях навчання.

Щоб почати, спробуйте наш приклади зошитів. Щоб дізнатися більше про цю функцію, див Навчання з використанням гетерогенного кластера.


Про авторів

Покращуйте цінову ефективність навчання моделі за допомогою гетерогенних кластерів Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Гілі Нахум є старшим архітектором рішень спеціаліста зі штучного інтелекту/ML, який працює в команді Amazon Machine Learning у регіоні EMEA. Джілі захоплюється проблемами навчання моделей глибокого навчання та тим, як машинне навчання змінює світ, яким ми його знаємо. У вільний час Гілі любить грати в настільний теніс.

Покращуйте цінову ефективність навчання моделі за допомогою гетерогенних кластерів Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Грушікеш Гангур є головним архітектором рішень для стартапів зі штучним інтелектом/ML, який має досвід як у навчанні ML, так і в мережах AWS. Він допомагає стартапам у сферах автономних транспортних засобів, робототехніки, CV, NLP, MLOps, платформи ML і автоматизації процесів робототехніки ефективно та ефективно вести свій бізнес на AWS. До того, як приєднатися до AWS, Грушікеш набув понад 20 років досвіду в галузі, головним чином у сфері хмарних платформ і платформ даних.

Покращуйте цінову ефективність навчання моделі за допомогою гетерогенних кластерів Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Гал Ошрі є старшим менеджером із продуктів у команді Amazon SageMaker. Він має 7 років досвіду роботи над інструментами, фреймворками та сервісами машинного навчання.

Покращуйте цінову ефективність навчання моделі за допомогою гетерогенних кластерів Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Хаїм Ренд є розробником алгоритму машинного навчання, який працює над технологіями глибокого навчання та комп’ютерного зору для рішень для автономних транспортних засобів у Mobileye, компанії Intel. Перевірте його блоги.

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

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