Запустіть PyTorch Lightning і нативний PyTorch DDP на Amazon SageMaker Training із Amazon Search PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Запустіть PyTorch Lightning і нативний PyTorch DDP на Amazon SageMaker Training із Amazon Search

Так багато даних, так мало часу. Експерти з машинного навчання (ML), дослідники даних, інженери та ентузіасти стикаються з цією проблемою в усьому світі. Від обробки природної мови до комп’ютерного бачення, від табличних до часових рядів і всього, що між ними, давня проблема оптимізації швидкості під час роботи даних із якомога більшою кількістю графічних процесорів надихнула незліченну кількість рішень. Сьогодні ми раді оголосити про функції для розробників PyTorch, які використовують рідні фреймворки з відкритим кодом, наприклад Блискавка PyTorch та PyTorch DDP, що спростить їхній шлях до хмари.

Amazon SageMaker – це повністю керована служба для ML, а навчання моделі SageMaker – це оптимізоване обчислювальне середовище для високопродуктивного навчання в масштабі. Навчання моделі SageMaker пропонує досвід дистанційного навчання з безперебійною площиною керування, щоб легко навчати та відтворювати моделі ML із високою продуктивністю та низькою ціною. Ми раді оголосити про нові функції в навчальному портфоліо SageMaker, які роблять запуск PyTorch у масштабі ще простішим і доступнішим:

  1. Тепер можна інтегрувати PyTorch Lightning Розподілена паралельна бібліотека даних SageMaker зі зміною лише одного рядка коду.
  2. Навчання моделі SageMaker тепер підтримується нативний PyTorch Distributed Data Parallel із серверною частиною NCCL, що дозволяє розробникам переходити на SageMaker легше, ніж будь-коли раніше.

У цій публікації ми обговорюємо ці нові функції, а також дізнаємося, як Amazon Search запустив PyTorch Lightning з оптимізованою розподіленою системою навчання в SageMaker, щоб пришвидшити час навчання моделі.

Перш ніж заглибитися в тематичне дослідження Amazon Search, для тих, хто не знайомий, ми хотіли б розповісти про це Розподілена паралельна бібліотека даних SageMaker. У 2020 році ми розробили та запустили спеціальну конфігурацію кластера для розподіленого градієнтного спуску в масштабі, що підвищує загальну ефективність кластера, представлену на Amazon Science як Оселедець. Використовуючи найкраще з серверів параметрів і кільцевих топологій, SageMaker Distributed Data Parallel (SMDDP) оптимізовано для Обчислювальна хмара Amazon Elastic (Amazon EC2) топологія мережі, в т.ч ОДВ. Для більших розмірів кластерів SMDDP може забезпечити 20–40% підвищення пропускної здатності порівняно з Horovod (TensorFlow) і PyTorch Distributed Data Parallel. Для менших розмірів кластерів і підтримуваних моделей ми рекомендуємо Навчальний компілятор SageMaker, що дозволяє скоротити загальний час роботи до 50%.

У центрі уваги клієнтів: PyTorch Lightning на оптимізованому сервері SageMaker із пошуком Amazon

Amazon Search відповідає за пошук і пошук на Amazon.com. Це сприяє пошуку клієнтів, які шукають продукти для покупки на Amazon. На високому рівні Amazon Search створює індекс для всіх продуктів, що продаються на Amazon.com. Коли клієнт вводить запит, Amazon Search використовує різноманітні методи ML, у тому числі моделі глибокого навчання, щоб відповідати релевантним і цікавим продуктам запиту клієнта. Потім він ранжує продукти перед тим, як показати результати клієнту.

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

Попередні результати порівняльного аналізу команди показали, що час навчання для зразкової моделі у 7.3 рази швидший за умови навчання на восьми вузлах порівняно з базовим рівнем навчання з одним вузлом. Базовою моделлю, яка використовується в цьому порівняльному аналізі, є багатошарова нейронна мережа персептрона з сімома щільними повністю зв’язаними шарами та понад 200 параметрами. У наведеній нижче таблиці підсумовуються результати порівняльного аналізу для екземплярів навчання ml.p3.16xlarge SageMaker.

Кількість екземплярів Час тренування (хв.) Поліпшення
1 99 Базова лінія
2 55 1.8x
4 27 3.7x
8 13.5 7.3x

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

Запустіть PyTorch Lightning із розподіленою навчальною бібліотекою SageMaker

Ми раді повідомити, що SageMaker Data Parallel тепер легко інтегрується з PyTorch Lightning під час навчання SageMaker.

PyTorch Lightning — це платформа з відкритим вихідним кодом, яка спрощує написання користувацьких моделей у PyTorch. Певним чином схоже на те, що Keras зробив для TensorFlow або навіть, можливо, Hugging Face, PyTorch Lightning надає високорівневий API з абстракціями для більшої частини нижчого рівня функціональності самого PyTorch. Це включає визначення моделі, профілювання, оцінку, скорочення, паралелізм моделі, конфігурації гіперпараметрів, перенесення навчання тощо.

Раніше розробники PyTorch Lightning не знали, як безперешкодно перенести свій навчальний код на високопродуктивні кластери GPU SageMaker. Крім того, у них не було можливості скористатися перевагами підвищення ефективності, запровадженого SageMaker Data Parallel.

Для PyTorch Lightning, загалом, потрібно незначно змінити код, щоб просто запустити ці API на SageMaker Training. У прикладі зошитів ми використовуємо DDPStrategy та плагін DDPP методи

Є три кроки, щоб використовувати PyTorch Lightning із SageMaker Data Parallel як оптимізовану серверну частину:

  1. Використовуйте підтримуваний Контейнер глибокого навчання AWS (DLC) як базове зображення або за бажанням створіть власний контейнер і самостійно встановіть серверну частину SageMaker Data Parallel. Переконайтеся, що PyTorch Lightning включено у ваші необхідні пакети, наприклад із a requirements.txt файлу.
  2. Внесіть кілька незначних змін у код вашого навчального сценарію, щоб увімкнути оптимізовану серверну частину. До них належать:
    1. Імпортуйте бібліотеку SM DDP:
      import smdistributed.dataparallel.torch.torch_smddp
      

    2. Налаштуйте середовище PyTorch Lightning для SageMaker:
      from pytorch_lightning.plugins.environments.lightning_environment 
        import LightningEnvironment
      
      env = LightningEnvironment()
      env.world_size = lambda: int(os.environ["WORLD_SIZE"])
      env.global_rank = lambda: int(os.environ["RANK"])

    3. Якщо ви використовуєте версію PyTorch Lightning, старішу за 1.5.10, вам потрібно буде додати ще кілька кроків.
      1. Спочатку додайте змінну середовища:
        os.environ["PL_TORCH_DISTRIBUTED_BACKEND"] = "smddp"

      2. По-друге, переконайтеся, що ви використовуєте DDPPlugin, А чи не DDPStrategy. Якщо ви використовуєте новішу версію, яку ви можете легко встановити, розмістивши requirements.txt в source_dir для вашої роботи, то це не потрібно. Перегляньте наступний код:
        ddp = DDPPlugin(parallel_devices=[torch.device("cuda", d) for d in range(num_gpus)], cluster_environment=env)

    4. За бажанням визначте серверну частину групи процесів як "smddp" в DDPSTrategy об'єкт. Однак, якщо ви використовуєте PyTorch Lightning із серверною частиною PyTorch DDP, яка також підтримується, просто видаліть це `process_group_backend` параметр. Перегляньте наступний код:
      ddp = DDPStrategy(
        cluster_environment=env, 
        process_group_backend="smddp", 
        accelerator="gpu")

  3. Переконайтеся, що в оцінювачі зазначений метод розподілу, наприклад distribution={"smdistributed":{"dataparallel":{"enabled":True} якщо ви використовуєте бекенд Herring, або distribution={"pytorchddp":{"enabled":True}.
  • Для повного переліку відповідних параметрів у distribution див. нашу документацію тут.

Тепер ви можете запустити своє навчальне завдання SageMaker! Ви можете запустити своє навчальне завдання через Python SDK, Boto3, консоль SageMaker, Інтерфейс командного рядка AWS (AWS CLI) і безліч інших методів. З точки зору AWS, це так одна команда API: create-training-job. Незалежно від того, запускаєте ви цю команду з локального терміналу, an AWS Lambda функція, an Студія Amazon SageMaker ноутбук, конвеєр KubeFlow або будь-яке інше обчислювальне середовище повністю залежить від вас.

Зауважте, що інтеграція між PyTorch Lightning і SageMaker Data Parallel наразі підтримується лише для новіших версій PyTorch, починаючи з 1.11. Крім того, цей випуск доступний лише в AWS DLC для SageMaker, починаючи з PyTorch 1.12. Переконайтеся, що ви вказали це зображення як основу. в us-east-1, ця адреса така:

ecr_image = '763104351884.dkr.ecr.us-east-1.amazonaws.com/pytorch-training:1.12.0-gpu-py38-cu113-ubuntu20.04-sagemaker'

Тоді ви можете розширити свій контейнер Docker, використовуючи це як базове зображення, або ви можете передати це як змінну в image_uri аргумент Оцінка навчання SageMaker.

У результаті ви зможете запускати свій код PyTorch Lightning на оптимізованих графічних процесорах SageMaker Training із найкращою продуктивністю, доступною на AWS.

Запустіть PyTorch Distributed Data Parallel на SageMaker

Найбільша проблема PyTorch Distributed Data Parallel (DDP) вирішує оманливо просто: швидкість. Хороша система розподіленого навчання повинна забезпечувати стабільність, надійність і, що найважливіше, відмінну продуктивність у масштабі. PyTorch DDP забезпечує це, надаючи розробникам Torch API для копіювання їхніх моделей на кількох пристроях графічного процесора як у одновузлових, так і в багатовузлових налаштуваннях. Потім структура керує шардингом різних об’єктів із навчального набору даних до кожної копії моделі, усереднюючи градієнти для кожної з копій моделі, щоб синхронізувати їх на кожному кроці. Це створює одну модель після повного завершення повного тренувального циклу. Наступна діаграма ілюструє цей процес.

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

Раніше клієнти, які використовували PyTorch DDP для розподіленого навчання на місці або в інших обчислювальних середовищах, не мали інфраструктури, щоб легко перенести свої проекти на SageMaker Training, щоб скористатися перевагами високопродуктивних графічних процесорів із безперебійною площиною керування. Зокрема, їм потрібно було або перенести свою паралельну структуру даних на SMDDP, або вручну розробити та протестувати можливості PyTorch DDP на SageMaker Training. Сьогодні SageMaker Training із задоволенням надає безперебійний досвід для клієнтів, які використовують код PyTorch DDP.

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

Ви можете побачити цей новий параметр у наступному коді. В distribution просто додайте pytorchddp і ввімкніть як true.

estimator = PyTorch(
    base_job_name="pytorch-dataparallel-mnist",
    source_dir="code",
    entry_point = "my_model.py",
    ... 
    # Training using SMDataParallel Distributed Training Framework
    distribution = {"pytorchddp": {"enabled": "true"}}
)

Ця нова конфігурація починається з SageMaker Python SDK версії 2.102.0 і PyTorch DLC 1.11.

Для розробників PyTorch DDP, які знайомі з популярними torchrun корисно знати, що це не обов’язково для навчального середовища SageMaker, яке вже забезпечує надійну відмовостійкість. Однак, щоб мінімізувати перезапис коду, ви можете додати інший сценарій запуску, який запускає цю команду як вашу точку входу.

Тепер розробники PyTorch можуть легко переносити свої сценарії на SageMaker, забезпечуючи безперебійну роботу їхніх сценаріїв і контейнерів у кількох обчислювальних середовищах.

Це готує їх до того, щоб у майбутньому скористатися ними Розподілені навчальні бібліотеки SageMaker які забезпечують топології навчання, оптимізовані для AWS, щоб забезпечити прискорення до 40%. Для розробників PyTorch це один рядок коду! Для коду PyTorch DDP ви можете просто налаштувати бекенд на smddp в ініціалізації (див Змініть навчальний скрипт PyTorch), як показано в наступному коді:

import smdistributed.dataparallel.torch.torch_smddp
import torch.distributed as dist
dist.init_process_group(backend='smddp')

Як ми бачили вище, ви також можете встановити серверну частину DDPStrategy до smddp при використанні Lightning. Це може призвести до Загальне прискорення на 40%. для великих кластерів! Щоб дізнатися більше про розподілене навчання на SageMaker, див наш вебінар за запитом, підтримуючи ноутбуки, актуально документація та документи.

Висновок

У цій публікації ми представили дві нові функції в сімействі SageMaker Training. Це значно полегшує розробникам PyTorch використання наявного коду на SageMaker, як PyTorch DDP, так і PyTorch Lightning.

Ми також показали, як Amazon Search використовує SageMaker Training для навчання своїх моделей глибокого навчання, зокрема PyTorch Lightning із оптимізованою колективною бібліотекою SageMaker Data Parallel як серверною частиною. Перехід до розподіленого навчання загалом допоміг Amazon Search у 7.3 рази пришвидшити час навчання.


Про авторів

Запустіть PyTorch Lightning і нативний PyTorch DDP на Amazon SageMaker Training із Amazon Search PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Емілі Веббер приєднався до AWS відразу після запуску SageMaker і з тих пір намагається розповісти про це всьому світу! Крім створення нових можливостей ML для клієнтів, Емілі любить медитувати та вивчати тибетський буддизм.

Запустіть PyTorch Lightning і нативний PyTorch DDP на Amazon SageMaker Training із Amazon Search PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai. Каран Діман є інженером з розробки програмного забезпечення в AWS, що базується в Торонто, Канада. Він дуже захоплений простором машинного навчання та розробкою рішень для прискорення розподілених обчислювальних навантажень.

Запустіть PyTorch Lightning і нативний PyTorch DDP на Amazon SageMaker Training із Amazon Search PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Вішва Карія є інженером з розробки програмного забезпечення в AWS Deep Engine. Її інтереси лежать на перетині машинного навчання та розподілених систем, а також вона захоплена розширенням прав і можливостей жінок у сфері технологій та ШІ.

Запустіть PyTorch Lightning і нативний PyTorch DDP на Amazon SageMaker Training із Amazon Search PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Ейман Ельнаграви є головним інженером-програмістом Amazon Search, який керує зусиллями з прискорення, масштабування та автоматизації машинного навчання. Її досвід охоплює кілька сфер, зокрема машинне навчання, розподілені системи та персоналізацію.

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

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