Запустите PyTorch Lightning и встроенный PyTorch DDP на тренинге Amazon SageMaker с функцией анализа данных Amazon Search PlatoBlockchain. Вертикальный поиск. Ай.

Запустите PyTorch Lightning и собственный PyTorch DDP на Amazon SageMaker Training с использованием Amazon Search

Так много данных, так мало времени. Специалисты по машинному обучению (ML), специалисты по данным, инженеры и энтузиасты сталкиваются с этой проблемой во всем мире. От обработки естественного языка до компьютерного зрения, от табличных до временных рядов и всего, что между ними, извечная проблема оптимизации скорости при обработке данных на как можно большем количестве графических процессоров вдохновила на создание бесчисленных решений. Сегодня мы рады объявить о функциях для разработчиков PyTorch, использующих собственные платформы с открытым исходным кодом, такие как Молния PyTorch и PyTorch DDP, что упростит их путь к облаку.

Создатель мудреца Амазонки — это полностью управляемая служба машинного обучения, а обучение модели SageMaker — это оптимизированная вычислительная среда для высокопроизводительного обучения в масштабе. Обучение модели SageMaker предлагает дистанционное обучение с бесшовной плоскостью управления, позволяющей легко обучать и воспроизводить модели машинного обучения с высокой производительностью и низкой стоимостью. Мы рады объявить о новых функциях в обучающем портфеле SageMaker, которые делают работу с PyTorch в масштабе еще проще и доступнее:

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

В этом посте мы обсудим эти новые функции, а также узнаем, как Amazon Search запустил PyTorch Lightning с оптимизированным сервером распределенного обучения в SageMaker, чтобы ускорить время обучения модели.

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

В центре внимания клиентов: PyTorch Lightning на оптимизированной серверной части SageMaker с Amazon Search

Amazon Search отвечает за возможности поиска и обнаружения на Amazon.com. Это расширяет возможности поиска для клиентов, которые ищут товары для покупки на Amazon. На высоком уровне Amazon Search создает индекс для всех продуктов, продаваемых на Amazon.com. Когда клиент вводит запрос, Amazon Search использует различные методы машинного обучения, включая модели глубокого обучения, чтобы сопоставить релевантные и интересные продукты с запросом клиента. Затем он ранжирует продукты, прежде чем показывать результаты покупателю.

Ученые 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 не знали, как легко перенести свой обучающий код на высокопроизводительные кластеры графических процессоров SageMaker. Кроме того, у них не было возможности воспользоваться преимуществами повышения эффективности, обеспечиваемыми SageMaker Data Parallel.

Вообще говоря, для PyTorch Lightning не требуется практически никаких изменений кода, чтобы просто запускать эти API в SageMaker Training. В примерах блокнотов мы используем DDPСтратегия и DPPплагин методы.

Чтобы использовать PyTorch Lightning с SageMaker Data Parallel в качестве оптимизированной серверной части, нужно выполнить три шага:

  1. Используйте поддерживаемый Контейнер глубокого обучения AWS (DLC) в качестве базового образа или, при желании, создать свой собственный контейнер и установить серверную часть SageMaker Data Parallel самостоятельно. Убедитесь, что у вас есть PyTorch Lightning, включенный в ваши необходимые пакеты, например, с 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. Независимо от того, запускаете ли вы эту команду с локального терминала, AWS Lambda функция, Студия Amazon SageMaker ноутбук, конвейер KubeFlow или любая другая вычислительная среда полностью зависит от вас.

Обратите внимание, что интеграция между PyTorch Lightning и SageMaker Data Parallel в настоящее время поддерживается только для более новых версий PyTorch, начиная с 1.11. Кроме того, этот выпуск доступен только в DLC AWS для 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 в SageMaker

Большая проблема Распределенная параллельная передача данных PyTorch (DDP) решает обманчиво просто: скорость. Хорошая распределенная среда обучения должна обеспечивать стабильность, надежность и, самое главное, отличную производительность в масштабе. PyTorch DDP обеспечивает это, предоставляя разработчикам факелов API-интерфейсы для репликации своих моделей на нескольких устройствах GPU как в одноузловых, так и в многоузловых настройках. Затем платформа управляет сегментированием различных объектов из обучающего набора данных для каждой копии модели, усредняя градиенты для каждой из копий модели, чтобы синхронизировать их на каждом этапе. Это дает одну модель при полном завершении полного тренировочного прогона. Следующая диаграмма иллюстрирует этот процесс.

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, знакомых с популярным бег с факелом framework полезно знать, что в учебной среде 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 при использовании молнии. Это может привести к 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 с функцией анализа данных Amazon Search PlatoBlockchain. Вертикальный поиск. Ай.Эмили Уэббер присоединился к AWS сразу после запуска SageMaker и с тех пор пытается рассказать об этом миру! Помимо создания новых возможностей машинного обучения для клиентов, Эмили любит медитировать и изучать тибетский буддизм.

Запустите PyTorch Lightning и встроенный PyTorch DDP на тренинге Amazon SageMaker с функцией анализа данных Amazon Search PlatoBlockchain. Вертикальный поиск. Ай. Каран Диман работает инженером-разработчиком программного обеспечения в AWS в Торонто, Канада. Он очень увлечен пространством машинного обучения и созданием решений для ускорения распределенных вычислительных рабочих нагрузок.

Запустите PyTorch Lightning и встроенный PyTorch DDP на тренинге Amazon SageMaker с функцией анализа данных Amazon Search PlatoBlockchain. Вертикальный поиск. Ай.Вишва Кария является инженером-разработчиком программного обеспечения в AWS Deep Engine. Ее интересы лежат на пересечении машинного обучения и распределенных систем, и она также увлечена расширением прав и возможностей женщин в области технологий и искусственного интеллекта.

Запустите PyTorch Lightning и встроенный PyTorch DDP на тренинге Amazon SageMaker с функцией анализа данных Amazon Search PlatoBlockchain. Вертикальный поиск. Ай.Эйман Эльнахрави — ведущий инженер-программист в Amazon Search, возглавляющий усилия по ускорению, масштабированию и автоматизации машинного обучения. Ее опыт охватывает несколько областей, включая машинное обучение, распределенные системы и персонализацию.

Отметка времени:

Больше от Машинное обучение AWS