Останні розробки в області глибокого навчання призвели до все більших моделей, таких як GPT-3, BLOOM і OPT, деякі з яких уже перевищують 100 мільярдів параметрів. Хоча більші моделі, як правило, більш потужні, навчання таких моделей вимагає значних обчислювальних ресурсів. Навіть із використанням розширених розподілених навчальних бібліотек, таких як FSDP і DeepSpeed, зазвичай для навчальних завдань потрібні сотні пристроїв-прискорювачів протягом кількох тижнів або місяців за раз.
Наприкінці 2022 року AWS оголосила про загальну доступність Екземпляри Amazon EC2 Trn1 живлення від AWS Trainium— спеціально створений прискорювач машинного навчання (ML), оптимізований для забезпечення високопродуктивної, економічно ефективної та масово масштабованої платформи для навчання моделей глибокого навчання в хмарі. Екземпляри Trn1 доступні в кількох розмірах (див. наступну таблицю), до 16 прискорювачів Trainium на екземпляр.
Розмір екземпляра | Прискорювачі Trainium | Пам'ять прискорювача (ГБ) | vCPU | Пам'ять примірників (ГіБ) | Пропускна здатність мережі (Гбіт/с) |
trn1.2xlarge | 1 | 32 | 8 | 32 | До 12.5 |
trn1.32xlarge | 16 | 512 | 128 | 512 | 800 |
trn1n.32xlarge (незабаром) | 16 | 512 | 128 | 512 | 1600 |
Екземпляри Trn1 можна розгортати як окремі екземпляри для невеликих навчальних завдань, або в масштабованих ультракластерах, які підтримують розподілене навчання на десятках тисяч прискорювачів Trainium. Усі екземпляри Trn1 підтримують автономну конфігурацію, тоді як для ультракластерів Trn1 потрібні екземпляри trn1.32xlarge або trn1n.32xlarge. В ультракластері кілька екземплярів Trn1 розташовані в певній зоні доступності AWS і з’єднані за допомогою високошвидкісного адаптера EFA з низькою затримкою, який забезпечує 800 Гбіт/с неблокуючої смуги пропускання на екземпляр для колективних обчислювальних операцій. . Тип екземпляра trn1n.32xlarge, запущений на початку 2023 року, збільшить цю пропускну здатність до 1600 Гбіт/с на екземпляр.
Багато корпоративних клієнтів вирішують розгортати свої робочі навантаження глибокого навчання за допомогою Kubernetes — де-факто стандарту оркестровки контейнерів у хмарі. Клієнти AWS часто розгортають ці робочі навантаження за допомогою Послуга Amazon Elastic Kubernetes (Amazon EKS). Amazon EKS — це керована служба Kubernetes, яка спрощує створення, конфігурацію, життєвий цикл і моніторинг кластерів Kubernetes, водночас пропонуючи повну гнучкість попередньої версії Kubernetes.
Сьогодні ми раді оголосити про офіційну підтримку розподілених навчальних завдань за допомогою примірників Amazon EKS і EC2 Trn1. Завдяки цьому оголошенню ви тепер можете легко запускати масштабні контейнерні навчальні завдання в Amazon EKS, використовуючи всі переваги співвідношення ціни та продуктивності, масштабованості та простоти використання, які пропонують інсталяції Trn1.
Разом із цим оголошенням ми також публікуємо детальний навчальний посібник, який проведе вас через кроки, необхідні для виконання завдання розподіленого навчання з декількома екземплярами (попереднє навчання 1 фази BERT) за допомогою екземплярів Amazon EKS і Trn1. У цій публікації ви дізнаєтесь про архітектуру рішення та переглянете кілька ключових кроків із підручника. Зверніться до офіційний репозиторій підручників для повного наскрізного робочого процесу.
Щоб продовжити, широке знайомство з основними службами AWS, такими як Обчислювальна хмара Amazon Elastic (Amazon EC2) і Amazon EKS мається на увазі, і базове знайомство з глибоким навчанням і PyTorch було б корисним.
Архітектура рішення
Наступна діаграма ілюструє архітектуру рішення.
Розчин складається з наступних основних компонентів:
- Кластер EKS
- Група вузлів EKS, що складається з екземплярів trn1.32xlarge
- Команда AWS нейрон SDK
- Плагіни EKS для Neuron і EFA
- An Реєстр контейнерів Amazon Elastic (Amazon ECR) Репозиторій
- Зображення навчального контейнера
- An Amazon FSx для Luster файлової системи
- Пакетний планувальник Volcano та сервер etcd
- Універсальний засіб запуску завдань TorchX
- Модуль TorchX DDP для Trainium
Серцем рішення є кластер EKS, який надає вам основні функції керування Kubernetes через кінцеву точку служби EKS. Однією з переваг Amazon EKS є те, що служба активно відстежує та масштабує площину керування залежно від навантаження, що забезпечує високу продуктивність для великих робочих навантажень, таких як розподілене навчання. Усередині кластера EKS є група вузлів, що складається з двох або більше екземплярів на основі trn1.32xlarge Trainium, які знаходяться в одній зоні доступності.
Neuron SDK — це стек програмного забезпечення, який надає драйвер, компілятор, середовище виконання, інтеграцію фреймворку (наприклад, PyTorch Neuron) та інструменти користувача, які дозволяють отримати доступ до переваг прискорювачів Trainium. Драйвер пристрою Neuron працює безпосередньо на вузлах EKS (екземпляри Trn1) і надає доступ до чіпів Trainium із навчальних контейнерів, які запускаються на вузлах. Плагіни Neuron і EFA встановлені в кластері EKS для забезпечення доступу до чіпів Trainium і мережевих пристроїв EFA, необхідних для розподіленого навчання.
Для зберігання зображень навчальних контейнерів використовується репозиторій ECR. Ці зображення містять Neuron SDK (за винятком драйвера Neuron, який працює безпосередньо на екземплярах Trn1), сценарій навчання PyTorch і необхідні залежності. Коли в кластері EKS запускається навчальне завдання, зображення контейнерів спочатку завантажуються з Amazon ECR на вузли EKS, а потім із зображень створюються робочі контейнери PyTorch.
Спільне сховище надається за допомогою високопродуктивної файлової системи FSx для Lustre, яка існує в тій самій зоні доступності, що й екземпляри trn1.32xlarge. Створення та підключення файлової системи FSx для Lustre до кластера EKS здійснюється за допомогою Драйвер Amazon FSx для Lustre CSI. У цьому рішенні спільне сховище використовується для зберігання набору навчальних даних і будь-яких журналів або артефактів, створених під час процесу навчання.
Рішення використовує Універсальний засіб запуску завдань TorchX запустити розподілені навчальні завдання в Amazon EKS. TorchX має дві важливі залежності: пакетний планувальник Volcano та сервер etcd. Volcano обробляє планування та чергування завдань навчання, тоді як сервер etcd є сховищем ключ-значення, яке використовується TorchElastic для синхронізації та виявлення однорангових під час запуску завдання.
Коли навчальне завдання запускається за допомогою TorchX, команда запуску використовує наданий розподілений модуль TorchX DDP для Trainium, щоб налаштувати загальне навчальне завдання, а потім запустити відповідні команди torchrun на кожному робочому модулі PyTorch. Коли завдання виконується, його можна відстежувати за допомогою стандартних інструментів Kubernetes (таких як kubectl) або стандартних наборів інструментів ML, таких як TensorBoard.
Огляд рішення
Давайте розглянемо важливі кроки цього рішення. У цьому огляді ми посилаємося на Запуск багатовузлової роботи з навчання нейронів PyTorch на Trainium за допомогою TorchX і EKS підручник на GitHub.
Створіть кластер EKS
Щоб розпочати роботу з розподіленими навчальними завданнями в Amazon EKS з екземплярами Trn1, спочатку створіть кластер EKS, як описано в підручник на GitHub. Створення кластера може бути досягнуто за допомогою стандартних інструментів, таких як eksctl
та AWS CloudFormation.
Створіть групу вузлів EKS
Далі нам потрібно створити групу вузлів EKS, що містить два або більше екземплярів trn1.32xlarge у підтримуваному регіоні. У підручнику AWS CloudFormation використовується для створення шаблону запуску EC2 для Trainium, який гарантує, що екземпляри Trn1 запускаються з відповідним образом машини Amazon (AMI) і правильною конфігурацією мережі EFA, необхідною для підтримки розподіленого навчання. AMI також включає драйвер пристрою Neuron, який забезпечує підтримку чіпів-прискорювачів Trainium. З eksctl
Інструмент керування Amazon EKS, ви можете легко створити групу вузлів Trainium за допомогою базового маніфесту YAML, який посилається на щойно створений шаблон запуску. Наприклад:
У попередньому маніфесті кілька атрибутів налаштовано для використання екземплярів Trn1 у кластері EKS. Перший, metadata.region
встановлено один із регіонів, який підтримує екземпляри Trn1 (наразі us-east-1
та us-west-2
). Далі для Amazon EKS потрібно вказати дві зони доступності для зон доступності. Одна з цих зон доступності повинна підтримувати використання екземплярів Trn1, тоді як іншу можна вибрати навмання. Підручник показує, як визначити, які зони доступності дозволять інстанси Trn1 у вашому обліковому записі AWS. Ту саму зону доступності, що підтримує Trn1, також потрібно вказати за допомогою availabiltyZones
атрибут, пов’язаний із групою вузлів EKS. efaEnabled
встановлений в true
щоб налаштувати вузли відповідно до конфігурації мережі EFA, необхідної для розподіленого навчання. Нарешті, launchTemplate.id
атрибут, пов’язаний із групою вузлів, вказує на шаблон запуску EC2, створений за допомогою AWS CloudFormation на попередньому кроці.
Припустимо, що ви вже застосували шаблон CloudFormation і встановили eksctl
інструмент керування, ви можете створити сумісну з Trainium групу вузлів EKS, виконавши такий код:
Встановіть плагіни Kubernetes для пристроїв Trainium і EFA
Після створення групи вузлів наступним кроком буде встановлення плагінів Kubernetes, які забезпечують підтримку прискорювачів Trainium (через плагін Neuron) і пристроїв EFA (через плагін EFA). Ці плагіни можна легко встановити на кластер за допомогою стандарту kubectl
інструмент керування, як показано в підручнику.
Щоб використовувати універсальний засіб запуску PyTorch TorchX для запуску розподілених навчальних завдань, необхідні дві передумови: пакетний планувальник Volcano та сервер etcd. Подібно до модулів Neuron і EFA, ми можемо використовувати kubectl
інструмент для встановлення Volcano та сервера etcd на кластер EKS.
Приєднайте спільне сховище до кластера EKS
У підручнику FSx для Lustre використовується для забезпечення високопродуктивної спільної файлової системи, до якої можуть отримати доступ різні робочі групи EKS. Це спільне сховище використовується для розміщення набору навчальних даних, а також будь-яких артефактів і журналів, які створюються під час процесу навчання. Підручник описує, як створити та приєднати спільне сховище до кластера за допомогою Драйвер Amazon FSx для Lustre CSI.
Створіть образ навчального контейнера
Далі нам потрібно створити образ навчального контейнера, який містить навчальний сценарій PyTorch разом із усіма залежностями. У навчальний посібник включено приклад Dockerfile, який включає сценарій попереднього навчання BERT разом із програмними залежностями. Файл Docker використовується для створення образу навчального контейнера, а потім зображення надсилається до сховища ECR, з якого працівники PyTorch можуть отримати зображення, коли в кластері запускається навчальне завдання.
Налаштуйте навчальні дані
Перед запуском навчального завдання дані навчання спочатку копіюються до спільного сховища на FSx для Lustre. У підручнику описано, як створити тимчасовий модуль Kubernetes, який має доступ до спільного обсягу сховища, і показано, як увійти в модуль, щоб завантажити та видобути навчальний набір даних за допомогою стандартних команд оболонки Linux.
Маючи різноманітні інфраструктурні та програмні передумови, тепер ми можемо зосередитися на аспектах рішення Trainium.
Попередньо скомпілюйте свою модель
Neuron SDK підтримує PyTorch через рівень інтеграції під назвою Нейрон PyTorch. За замовчуванням PyTorch Neuron працює зі своєчасною компіляцією, коли різні обчислювальні графіки нейронної мережі в рамках навчального завдання компілюються, коли вони зустрічаються під час процесу навчання. Для більших моделей зручніше використовувати надані neuron_parallel_compile
інструмент для попередньої компіляції та кешування різних обчислювальних графіків заздалегідь, щоб уникнути компіляції графів під час навчання. Перед запуском навчального завдання на кластері EKS навчальний посібник показує, як спочатку запустити завдання попередньої компіляції через TorchX за допомогою neuron_parallel_compile
інструмент. Після завершення завдання попередньої компіляції компілятор Neuron ідентифікує та скомпільує всі обчислювальні графіки нейронної мережі та кешує їх у спільному сховищі для подальшого використання під час фактичного завдання попереднього навчання BERT.
Запустіть завдання розподіленого навчання
Після завершення попередньої компіляції TorchX використовується для запуску розподіленого навчального завдання з 64 об’єктами для двох екземплярів trn1.32xlarge, по 32 об’єкти на примірник. Ми використовуємо 32 воркери на екземпляр, оскільки кожен екземпляр trn1.32xlarge містить 16 прискорювачів Trainium, причому кожен прискорювач забезпечує 2 NeuronCores. До кожного NeuronCore можна отримати доступ як до унікального Пристрій PyTorch XLA у сценарії навчання. Приклад команди запуску TorchX із підручника виглядає так:
Різні аргументи командного рядка в попередній команді TorchX детально описані в посібнику. Однак наступні аргументи є найважливішими при налаштуванні навчального завдання:
- -cfg queue=test – Визначає чергу Volcano, яка буде використовуватися для навчального завдання
- -cfg image_repo – Визначає репозиторій ECR, який буде використовуватися для зображень контейнера TorchX
- –script_args – Визначає будь-які аргументи, які слід передати в навчальний сценарій PyTorch
- –nnodes і –nproc_per_node – Кількість екземплярів і працівників на екземпляр для використання для навчальної роботи
- – Сценарій – Назва навчального сценарію PyTorch для запуску в навчальному контейнері
- –Зображення – Шлях до зображення навчального контейнера в Amazon ECR
- –bf16 – Чи вмикати тип даних BF16
Стежити за виконанням навчальної роботи
Після того, як навчальну роботу було запущено, є різні способи, за допомогою яких можна контролювати роботу. Підручник показує, як контролювати показники основного навчального сценарію за допомогою командного рядка kubectl
, як візуально контролювати виконання сценарію навчання в TensorBoard (див. наступний знімок екрана) і як контролювати використання прискорювача Trainium за допомогою neuron-top
інструмент із Neuron SDK.
Очистіть або повторно використовуйте навколишнє середовище
Після завершення навчального завдання кластер можна повторно використовувати або повторно налаштувати для додаткових навчальних завдань. Наприклад, групу вузлів EKS можна швидко збільшити за допомогою eksctl
для підтримки навчальних завдань, які потребують додаткових екземплярів Trn1. Подібним чином надані команди запуску Dockerfile і TorchX можна легко модифікувати для підтримки додаткових моделей глибокого навчання та розповсюдження навчальних топологій.
Якщо кластер більше не потрібен, підручник також містить усі кроки, необхідні для видалення інфраструктури EKS та пов’язаних ресурсів.
Висновок
У цій публікації ми дослідили, як екземпляри Trn1 і Amazon EKS забезпечують керовану платформу для високопродуктивного, економічно ефективного та масово масштабованого розподіленого навчання моделям глибокого навчання. Ми також поділилися вичерпним навчальним посібником, який показує, як запустити реальне завдання розподіленого навчання з кількома екземплярами в Amazon EKS за допомогою екземплярів Trn1, і виділили кілька ключових кроків і компонентів у рішенні. Вміст цього навчального посібника можна легко адаптувати для інших моделей і робочих навантажень, і він надає вам базове рішення для розподіленого навчання моделям глибокого навчання в AWS.
Щоб дізнатися більше про те, як почати роботу з екземплярами Trn1 на базі Trainium, див Документація нейронів.
Про авторів
Скотт Перрі є архітектором рішень у команді акселератора Annapurna ML в AWS. Перебуваючи в Канаді, він допомагає клієнтам розгортати та оптимізувати тренінги глибокого навчання та робочі навантаження з висновків за допомогою AWS Inferentia та AWS Trainium. Його інтереси включають великі мовні моделі, глибоке навчання з підкріпленням, IoT та геноміку.
Лореа Аррісабалага є архітектором рішень у державному секторі Великобританії, де вона допомагає клієнтам розробляти рішення ML за допомогою Amazon SageMaker. Вона також є частиною Technical Field Community, яка займається апаратним прискоренням, і допомагає тестувати та порівнювати робочі навантаження AWS Inferentia та AWS Trainium.
- Розповсюдження контенту та PR на основі SEO. Отримайте посилення сьогодні.
- Платоблокчейн. Web3 Metaverse Intelligence. Розширені знання. Доступ тут.
- джерело: https://aws.amazon.com/blogs/machine-learning/scaling-distributed-training-with-aws-trainium-and-amazon-eks/
- 1
- 100
- 11
- 2022
- 2023
- 7
- a
- Здатний
- МЕНЮ
- прискорювач
- прискорювачі
- доступ
- доступний
- досягнутий
- через
- активно
- Додатковий
- просування
- просунутий
- Перевага
- вирівняні
- ВСІ
- вже
- хоча
- Amazon
- Amazon EC2
- Amazon SageMaker
- та
- Оголосити
- оголошений
- Оголошення
- прикладної
- відповідний
- архітектура
- аргументація
- аспекти
- асоційований
- приєднувати
- Атрибути
- наявність
- доступний
- AWS
- AWS CloudFormation
- AWS Inferentia
- ширина смуги
- заснований
- основний
- оскільки
- перед тим
- бенчмаркінг
- Переваги
- Мільярд
- Цвісти
- широкий
- будувати
- Кеш
- званий
- Канада
- Чіпси
- Вибирати
- вибраний
- хмара
- кластер
- код
- Collective
- майбутній
- Скоро
- загальний
- співтовариство
- повний
- завершення
- Компоненти
- всеосяжний
- обчислення
- конфігурація
- підключений
- Складається
- Контейнер
- Контейнери
- містить
- зміст
- контроль
- Зручний
- Core
- рентабельним
- створювати
- створений
- створення
- створення
- CSI
- В даний час
- Клієнти
- дані
- DDP
- присвячених
- глибокий
- глибоке навчання
- дефолт
- розгортання
- розгорнути
- описаний
- дизайн
- деталь
- докладно
- події
- пристрій
- прилади
- безпосередньо
- відкриття
- розподілений
- розподілене навчання
- розповсюдження
- скачати
- водій
- під час
- кожен
- Раніше
- Рано
- простота використання
- легко
- або
- включіть
- кінець в кінець
- Кінцева точка
- гарантує
- підприємство
- Навіть
- приклад
- збуджений
- виключення
- існує
- Розвіданий
- витяг
- тканину
- Знайомство
- поле
- філе
- Перший
- Гнучкість
- Сфокусувати
- стежити
- після
- Рамки
- від
- Повний
- функціональність
- Загальне
- геномика
- отримати
- GitHub
- даний
- графік
- графіки
- Group
- Гід
- Ручки
- апаратні засоби
- Серце
- корисний
- допомагає
- Високий
- висока продуктивність
- Виділено
- дуже
- господар
- Як
- How To
- Однак
- HTML
- HTTPS
- Сотні
- ID
- ідентифікований
- зображення
- зображень
- мається на увазі
- важливо
- in
- включати
- включені
- includes
- Augmenter
- все більше і більше
- Інфраструктура
- встановлювати
- встановлений
- екземпляр
- інтеграція
- інтереси
- КАТО
- IT
- робота
- Джобс
- ключ
- Дитина
- мова
- великий
- масштабний
- більше
- Пізно
- запуск
- запущений
- запуск
- шар
- УЧИТЬСЯ
- вивчення
- Led
- libraries
- Лінія
- Linux
- загрузка
- довше
- подивитися
- ВИГЛЯДИ
- машина
- навчання за допомогою машини
- головний
- вдалося
- управління
- масово
- пам'ять
- метадані
- Метрика
- ML
- Моделі
- модифікований
- Модулі
- монітор
- контрольований
- моніторинг
- монітори
- місяців
- більше
- найбільш
- множинний
- ім'я
- Необхідність
- мережу
- мережа
- нейронної мережі
- наступний
- вузол
- вузли
- номер
- запропонований
- пропонує
- офіційний
- ONE
- працює
- операції
- Оптимізувати
- оптимізований
- оркестровка
- порядок
- Інше
- викладені
- контури
- загальний
- огляд
- параметри
- частина
- Пройшов
- шлях
- однолітка
- продуктивність
- фаза
- місце
- платформа
- plato
- Інформація про дані Платона
- PlatoData
- підключати
- plugins
- точок
- пошта
- Харчування
- потужний
- передумови
- процес
- прогрес
- забезпечувати
- за умови
- забезпечує
- забезпечення
- громадськість
- Видавничий
- штовхнув
- піторх
- швидко
- випадковий
- Реальний світ
- посилання
- регіон
- райони
- пов'язаний
- видаляти
- Сховище
- вимагати
- вимагається
- Вимагається
- ресурси
- огляд
- прогін
- біг
- мудрець
- то ж
- масштабованість
- масштабовані
- ваги
- Масштабування
- Sdk
- сектор
- обслуговування
- Послуги
- комплект
- кілька
- загальні
- Склад
- Повинен
- показаний
- Шоу
- значний
- Аналогічно
- розміри
- менше
- So
- Софтвер
- рішення
- Рішення
- деякі
- зазначений
- стек
- автономні
- standard
- почалася
- введення в експлуатацію
- Крок
- заходи
- Як і раніше
- зберігання
- зберігати
- такі
- підтримка
- Підтриманий
- Опори
- синхронізація
- система
- таблиця
- взяття
- команда
- технічний
- шаблон
- тимчасовий
- Тестування
- Команда
- Великобританія
- їх
- тисячі
- через
- по всьому
- час
- до
- інструмент
- інструменти
- Навчання
- правда
- підручник
- Uk
- створеного
- Universal
- використання
- користувач
- різний
- версія
- через
- обсяг
- способи
- тижня
- Чи
- який
- в той час як
- волі
- в
- робочий
- робочі
- б
- ямл
- Ти
- вашу
- зефірнет
- зони