Недавние разработки в области глубокого обучения привели к появлению все более крупных моделей, таких как GPT-3, BLOOM и OPT, некоторые из которых уже превышают 100 миллиардов параметров. Хотя более крупные модели имеют тенденцию быть более мощными, обучение таких моделей требует значительных вычислительных ресурсов. Даже при использовании расширенных распределенных обучающих библиотек, таких как FSDP и DeepSpeed, для учебных заданий часто требуются сотни ускорителей в течение нескольких недель или месяцев.
В конце 2022 года AWS объявила об общедоступности Инстансы Amazon EC2 Trn1 питание от AWS Трениум— специально созданный ускоритель машинного обучения (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 и подключаются к высокоскоростной сети Elastic Fabric Adapter (EFA) с малой задержкой, которая обеспечивает неблокируемую пропускную способность сети 800 Гбит/с на экземпляр для коллективных вычислительных операций. . Инстанс типа trn1n.32xlarge, который будет запущен в начале 2023 года, увеличит эту пропускную способность до 1600 Гбит/с на инстанс.
Многие корпоративные клиенты предпочитают развертывать свои рабочие нагрузки глубокого обучения с помощью Kubernetes — стандарта де-факто для оркестровки контейнеров в облаке. Клиенты AWS часто развертывают эти рабочие нагрузки, используя Амазон Эластик Кубернетес Сервис (Амазон ЭКС). Amazon EKS — это управляемый сервис Kubernetes, который упрощает создание, настройку, жизненный цикл и мониторинг кластеров Kubernetes, сохраняя при этом полную гибкость вышестоящего Kubernetes.
Сегодня мы рады объявить об официальной поддержке распределенных учебных заданий с использованием инстансов Amazon EKS и EC2 Trn1. Благодаря этому объявлению вы теперь можете легко запускать крупномасштабные контейнерные задания по обучению в Amazon EKS, используя все преимущества соотношения цены и качества, масштабируемости и простоты использования, предлагаемые инстансами Trn1.
Наряду с этим объявлением мы также публикуем подробное руководство, которое поможет вам выполнить действия, необходимые для выполнения задания распределенного обучения с несколькими экземплярами (предварительное обучение BERT, фаза 1) с использованием инстансов Amazon EKS и Trn1. В этом посте вы узнаете об архитектуре решения и рассмотрите несколько ключевых шагов из руководства. Обратитесь к официальный репозиторий учебников для полного сквозного рабочего процесса.
Чтобы продолжить, необходимо хорошо познакомиться с основными сервисами AWS, такими как Эластичное вычислительное облако Amazon (Amazon EC2) и Amazon EKS подразумевается, и базовое знакомство с глубоким обучением и PyTorch было бы полезно.
Архитектура решения
Следующая диаграмма иллюстрирует архитектуру решения.
Решение состоит из следующих основных компонентов:
- Кластер EKS
- Группа узлов EKS, состоящая из экземпляров trn1.32xlarge.
- Ассоциация АВС Нейрон SDK
- Плагины EKS для Neuron и EFA
- An Реестр Amazon Elastic Container (Amazon ECR) Репозиторий
- Образ учебного контейнера
- An Amazon FSx для блеска Файловая система
- Пакетный планировщик 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 for Lustre, которая существует в той же зоне доступности, что и экземпляры trn1.32xlarge. Создание и подключение файловой системы FSx for Lustre к кластеру EKS осуществляется с помощью Драйвер Amazon FSx для Lustre CSI. В этом решении общее хранилище используется для хранения набора обучающих данных и любых журналов или артефактов, созданных в процессе обучения.
Решение использует Универсальный лаунчер заданий TorchX для запуска распределенных заданий по обучению в Amazon EKS. TorchX имеет две важные зависимости: пакетный планировщик Volcano и сервер etcd. Volcano занимается планированием и постановкой в очередь обучающих заданий, а сервер etcd представляет собой хранилище ключей и значений, используемое TorchElastic для синхронизации и обнаружения одноранговых узлов во время запуска задания.
Когда задание обучения запускается с помощью TorchX, команда запуска использует предоставленный распределенный модуль DDP TorchX для Trainium для настройки общего задания обучения, а затем запускает соответствующие команды torchrun на каждом из рабочих модулей PyTorch. Когда задание выполняется, его можно отслеживать с помощью стандартных инструментов Kubernetes (например, kubectl) или стандартных наборов инструментов машинного обучения, таких как TensorBoard.
Обзор решения
Давайте рассмотрим важные шаги этого решения. На протяжении всего обзора мы ссылаемся на Запуск многоузлового задания PyTorch Neuron Training на 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
инструмент управления, вы можете создать группу узлов EKS с поддержкой Trainium, выполнив следующий код:
Установите плагины Kubernetes для устройств Trainium и EFA.
После создания группы узлов следующим шагом будет установка подключаемых модулей Kubernetes, обеспечивающих поддержку ускорителей Trainium (через подключаемый модуль Neuron) и устройств EFA (через подключаемый модуль EFA). Эти плагины можно легко установить на кластер с помощью стандартного kubectl
инструмент управления, как показано в руководстве.
Чтобы использовать универсальную программу запуска PyTorch TorchX для запуска распределенных учебных заданий, необходимы два предварительных условия: пакетный планировщик Volcano и сервер etcd. Подобно плагинам Neuron и EFA, мы можем использовать kubectl
инструмент для установки Volcano и сервера etcd в кластере EKS.
Подключить общее хранилище к кластеру EKS
В этом руководстве FSx for Lustre используется для предоставления высокопроизводительной общей файловой системы, к которой могут обращаться различные рабочие модули EKS. Это общее хранилище используется для размещения набора обучающих данных, а также любых артефактов и журналов, создаваемых в процессе обучения. В руководстве описывается, как создать и подключить общее хранилище к кластеру с помощью Драйвер Amazon FSx для Lustre CSI.
Создание образа обучающего контейнера
Затем нам нужно создать образ обучающего контейнера, который включает обучающий скрипт PyTorch вместе со всеми зависимостями. В руководство включен пример файла Dockerfile, который включает сценарий предварительной подготовки BERT вместе с его программными зависимостями. Файл Dockerfile используется для создания образа обучающего контейнера, а затем образ передается в репозиторий ECR, из которого рабочие процессы PyTorch могут извлечь образ при запуске задания обучения в кластере.
Настройте тренировочные данные
Перед запуском задания обучения данные обучения сначала копируются в общий том хранилища в FSx for Lustre. В руководстве рассказывается, как создать временный модуль Kubernetes, который имеет доступ к общему тому хранилища, и показано, как войти в модуль, чтобы загрузить и извлечь набор обучающих данных с помощью стандартных команд оболочки Linux.
Имея различные предпосылки для инфраструктуры и программного обеспечения, мы можем теперь сосредоточиться на аспектах решения Trainium.
Предварительно скомпилируйте вашу модель
Neuron SDK поддерживает PyTorch через уровень интеграции, называемый ПиТорч Нейрон. По умолчанию PyTorch Neuron работает с своевременной компиляцией, когда различные графы вычислений нейронной сети в рамках задания обучения компилируются по мере их появления в процессе обучения. Для более крупных моделей может быть удобнее использовать предоставленный neuron_parallel_compile
инструмент для предварительной компиляции и кэширования различных графов вычислений заранее, чтобы избежать компиляции графов во время обучения. Перед запуском обучающего задания в кластере EKS в руководстве показано, как сначала запустить задание предварительной компиляции через TorchX с помощью neuron_parallel_compile
орудие труда. По завершении задания предварительной компиляции компилятор Neuron идентифицирует и скомпилирует все графы вычислений нейронной сети и кэширует их в общем томе хранилища для последующего использования во время фактического задания предварительного обучения BERT.
Запустите задание распределенного обучения
После завершения предварительной компиляции TorchX затем используется для запуска распределенного учебного задания с 64 работниками в двух экземплярах trn1.32xlarge, по 32 исполнителя на экземпляр. Мы используем 32 воркера на инстанс, потому что каждый инстанс trn1.32xlarge содержит 16 ускорителей Trainium, причем каждый ускоритель предоставляет 2 Нейронные ядра. Доступ к каждому NeuronCore можно получить как к уникальному XLA-устройство PyTorch в сценарии обучения. Пример команды запуска TorchX из руководства выглядит следующим образом:
Различные аргументы командной строки в предыдущей команде TorchX подробно описаны в руководстве. Однако следующие аргументы наиболее важны при настройке задания обучения:
- -cfg очередь=тест – Указывает очередь Volcano, которая будет использоваться для задания обучения.
- -cfg изображение_репо – Указывает репозиторий ECR, который будет использоваться для образов контейнеров TorchX.
- --script_args – Указывает любые аргументы, которые должны быть переданы обучающему сценарию PyTorch.
- –nnodes и –nproc_per_node – Количество экземпляров и рабочих на экземпляр, которые можно использовать для обучения.
- –Script – Имя обучающего скрипта 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 в AWS. Находясь в Канаде, он помогает клиентам развертывать и оптимизировать рабочие нагрузки по обучению глубокому обучению и логическим выводам с помощью AWS Inferentia и AWS Trainium. Его интересы включают большие языковые модели, глубокое обучение с подкреплением, Интернет вещей и геномику.
Лореа Аррисабалага — архитектор решений, связанный с государственным сектором Великобритании, где она помогает клиентам разрабатывать решения машинного обучения с помощью Amazon SageMaker. Она также является частью технического сообщества, занимающегося аппаратным ускорением, и помогает с тестированием и сравнительным анализом рабочих нагрузок AWS Inferentia и AWS Trainium.
- SEO-контент и PR-распределение. Получите усиление сегодня.
- Платоблокчейн. Интеллект метавселенной Web3. Расширение знаний. Доступ здесь.
- Источник: 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
- Создатель мудреца Амазонки
- и
- анонсировать
- объявило
- Объявление
- прикладной
- соответствующий
- архитектура
- Аргументы
- аспекты
- связанный
- прикреплять
- Атрибуты
- свободных мест
- доступен
- AWS
- AWS CloudFormation
- Вывод AWS
- Пропускная способность
- основанный
- основной
- , так как:
- до
- бенчмаркинг
- Преимущества
- миллиард
- Цвести
- широкий
- строить
- Кэш
- под названием
- Канада
- чипсы
- Выберите
- выбранный
- облако
- Кластер
- код
- собирательный
- приход
- Скоро
- Общий
- сообщество
- полный
- завершение
- компоненты
- комплексный
- Вычисление
- Конфигурация
- подключенный
- Состоящий из
- Container
- Контейнеры
- содержит
- содержание
- контроль
- Удобно
- Основные
- рентабельным
- Создайте
- создали
- Создающий
- создание
- CSI
- В настоящее время
- Клиенты
- данным
- DDP
- преданный
- глубоко
- глубокое обучение
- По умолчанию
- развертывание
- развернуть
- описано
- Проект
- подробность
- подробный
- события
- устройство
- Устройства
- непосредственно
- открытие
- распределенный
- распределенное обучение
- распределительный
- скачать
- водитель
- в течение
- каждый
- Ранее
- Рано
- простота в использовании
- легко
- или
- включить
- впритык
- Конечная точка
- обеспечивает
- Предприятие
- Даже
- пример
- возбужденный
- без учета
- существует
- Разведанный
- извлечение
- ткань
- фамильярность
- поле
- Файл
- Во-первых,
- Трансформируемость
- Фокус
- следовать
- после
- Рамки
- от
- полный
- функциональность
- Общие
- геномика
- получить
- GitHub
- данный
- график
- Графики
- группы
- Гиды
- Ручки
- Аппаратные средства
- Сердце
- полезный
- помогает
- High
- высокая производительность
- Выделенные
- очень
- кашель
- Как
- How To
- Однако
- HTML
- HTTPS
- Сотни
- ID
- идентифицированный
- изображение
- изображений
- подразумеваемый
- важную
- in
- включают
- включены
- включает в себя
- Увеличение
- все больше и больше
- Инфраструктура
- устанавливать
- установлен
- пример
- интеграции.
- интересы
- КАТО
- IT
- работа
- Джобс
- Основные
- Вид
- язык
- большой
- крупномасштабный
- больше
- Поздно
- запуск
- запустили
- запуск
- слой
- УЧИТЬСЯ
- изучение
- привело
- библиотеки
- линия
- Linux
- загрузка
- дольше
- посмотреть
- ВЗГЛЯДЫ
- машина
- обучение с помощью машины
- Главная
- управляемого
- управление
- массивно
- Память
- Метаданные
- Метрика
- ML
- Модели
- модифицировало
- Модули
- монитор
- контролируемый
- Мониторинг
- Мониторы
- месяцев
- БОЛЕЕ
- самых
- с разными
- имя
- Необходимость
- сеть
- сетей
- нейронной сети
- следующий
- узел
- узлы
- номер
- предложенный
- предлагающий
- Официальный представитель в Грузии
- ONE
- работает
- Операционный отдел
- Оптимизировать
- оптимизированный
- оркестровка
- заказ
- Другое
- изложенные
- контуры
- общий
- обзор
- параметры
- часть
- Прошло
- путь
- вглядываться
- производительность
- фаза
- Часть
- Платформа
- Платон
- Платон Интеллектуальные данные
- ПлатонДанные
- плагин
- плагины
- пунктов
- После
- Питание
- мощный
- предпосылки
- процесс
- Прогресс
- обеспечивать
- при условии
- приводит
- обеспечение
- что такое варган?
- Издательство
- толкнул
- pytorch
- быстро
- случайный
- реальный мир
- Рекомендации
- область
- районы
- Связанный
- удаление
- хранилище
- требовать
- обязательный
- требуется
- Полезные ресурсы
- обзоре
- Run
- Бег
- sagemaker
- то же
- Масштабируемость
- масштабируемые
- Весы
- масштабирование
- SDK
- сектор
- обслуживание
- Услуги
- набор
- несколько
- общие
- Оболочка
- должен
- показанный
- Шоу
- значительный
- Аналогичным образом
- Размеры
- меньше
- So
- Software
- Решение
- Решения
- некоторые
- указанный
- стек
- автономные
- стандарт
- и политические лидеры
- ввод в эксплуатацию
- Шаг
- Шаги
- По-прежнему
- диск
- магазин
- такие
- поддержка
- Поддержанный
- Поддержка
- синхронизация
- система
- ТАБЛИЦЫ
- с
- команда
- Технический
- шаблон
- временный
- Тестирование
- Ассоциация
- Великобритании
- их
- тысячи
- Через
- по всему
- время
- в
- инструментом
- инструменты
- Обучение
- правда
- учебник
- Uk
- созданного
- Universal
- использование
- Информация о пользователе
- различный
- версия
- с помощью
- объем
- способы
- Недели
- будь то
- , которые
- в то время как
- будете
- в
- работник
- рабочие
- бы
- YAML
- Ты
- ВАШЕ
- зефирнет
- зоны