Повысьте экономическую эффективность обучения модели с помощью гетерогенных кластеров Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Улучшите соотношение цены и качества обучения модели с помощью гетерогенных кластеров Amazon SageMaker.

Этот пост написан в соавторстве с Хаимом Рэндом из Mobileye.

Определенные рабочие нагрузки машинного обучения (ML), такие как обучение моделей компьютерного зрения или обучение с подкреплением, часто включают в себя объединение задачи обучения модели нейронной сети с интенсивным использованием графического процессора или ускорителя с задачей предварительной обработки данных с интенсивным использованием ЦП, такой как увеличение изображения. Когда оба типа задач выполняются на одном и том же типе экземпляра, предварительная обработка данных становится узким местом ЦП, что приводит к снижению загрузки графического процессора. Эта проблема со временем усугубляется, поскольку пропускная способность новых поколений графических процессоров растет более быстрыми темпами, чем пропускная способность центральных процессоров.

Для решения этой проблемы в июле 2022 года мы запустили гетерогенные кластеры для Создатель мудреца Амазонки обучение модели, которое позволяет запускать задания обучения, в которых используются разные типы экземпляров в одном задании. Это позволяет разгрузить части конвейера предварительной обработки данных для оптимизированный для вычислений типы экземпляров, тогда как задача глубокой нейронной сети (DNN) продолжает выполняться GPU или ускоренные вычисления типы экземпляров. Наши тесты показывают выигрыш в производительности до 46% после включения гетерогенных кластеров в обучении модели компьютерного зрения TensorFlow с привязкой к ЦП.

Для аналогичного варианта использования Mobileye, компания по разработке технологий автономного транспорта, поделилась следующим:

«Перемещая обучение модели компьютерного зрения глубокого обучения с привязкой к ЦП для работы с несколькими типами экземпляров (ЦП и ускорители графического процессора / машинного обучения), используя tf.data.service На основе созданного нами решения нам удалось сократить время обучения на 40 %, одновременно снизив стоимость обучения на 30 %. Мы очень рады появлению гетерогенных кластеров, которые позволяют нам запускать это решение на Amazon SageMaker».

— ИИ-инжиниринг, Mobileye

В этом посте мы обсудим следующие темы:

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

AWS экземпляр ускоренных вычислений семейство включает ускорители из пользовательских чипов AWS (Вывод AWS, AWS Трениум), NVIDIA (Графические процессоры), а также расширение Ускорители Гауди от Habana Labs (компания Intel). Обратите внимание, что в этом посте мы используем термины «графический процессор» и «ускоритель» как взаимозаменяемые.

Как гетерогенные кластеры устраняют узкие места в обработке данных

Ученые, работающие с данными, которые обучают модели глубокого обучения, стремятся максимизировать экономическую эффективность обучения и минимизировать время обучения. Чтобы достичь этого, одной из основных целей оптимизации является высокая загрузка графического процессора, самого дорогого и дефицитного ресурса в мире. Эластичное вычислительное облако Amazon (Amazon EC2). Это может оказаться более сложной задачей при работе с рабочими нагрузками машинного обучения, которые сочетают прямое и обратное распространение классической модели нейронной сети с интенсивным использованием графического процессора с задачами, интенсивно использующими процессор, такими как обработка и увеличение данных в компьютерном зрении или запуск моделирования среды в обучении с подкреплением. Эти рабочие нагрузки могут в конечном итоге быть привязаны к ЦП, а наличие большего количества ЦП приведет к более высокой пропускной способности, а также к более быстрому и дешевому обучению, поскольку существующие ускорители частично простаивают. В некоторых случаях узкие места ЦП можно устранить, переключившись на другой тип инстанса с более высоким соотношением ЦП:ГП. Однако бывают ситуации, когда переключение на другой тип экземпляра может оказаться невозможным из-за зависимостей архитектуры, хранилища или сети семейства экземпляров.

В таких ситуациях вам придется увеличить мощность ЦП, смешивая типы инстансов: инстансы с графическими процессорами и ЦП. В сумме это приводит к общему более высокому соотношению ЦП:ГП. До недавнего времени задания по обучению SageMaker ограничивались экземплярами одного выбранного типа. С помощью гетерогенных кластеров SageMaker ученые, работающие с данными, могут легко выполнить задание по обучению с несколькими типами экземпляров, что позволяет переместить некоторые существующие задачи ЦП с экземпляров ЦП на выделенные экземпляры ЦП, оптимизированные для вычислений, что приводит к более высокой загрузке графического процессора, а также к более быстрому и более затратному процессу. эффективное обучение. Более того, благодаря дополнительной мощности ЦП вы можете сделать задачи предварительной обработки, которые традиционно выполнялись в автономном режиме в качестве предварительного этапа обучения, стать частью вашей работы по обучению. Это позволяет быстрее выполнять итерации и экспериментировать как с предварительной обработкой данных, так и с предположениями и гиперпараметрами обучения DNN.

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

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

Когда использовать гетерогенные кластеры и другие альтернативы

В этом разделе мы объясним, как выявить узкое место ЦП, и обсудим его решение с использованием масштабирования типа экземпляра по сравнению с гетерогенными кластерами.

Быстрый способ определить узкое место процессора — это отслеживать процессор и графический процессор. показатели использования на вакансии по обучению SageMaker в Amazon CloudWatch. Вы можете получить доступ к этим представлениям из Консоль управления AWS в гиперссылке показателей экземпляра на странице задания обучения. Выберите соответствующие показатели и переключитесь с 5-минутного на 1-минутное разрешение. Обратите внимание, что масштаб составляет 100 % для каждого виртуального ЦП или графического процессора, поэтому коэффициент использования для инстанса с 4 виртуальными ЦП или графическими процессорами может достигать 400 %. Следующий рисунок представляет собой один из таких примеров показателей CloudWatch, где ЦП загружен примерно на 100 %, что указывает на узкое место ЦП, тогда как графический процессор используется недостаточно.

Повысьте экономическую эффективность обучения модели с помощью гетерогенных кластеров Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

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

Если вы пришли к выводу, что ваша работа может выиграть от более высокого соотношения вычислительных ресурсов ЦП:ГП, сначала рассмотрите возможность масштабирования до другого типа инстанса в том же семействе инстансов, если таковой имеется. Например, если вы обучаете свою модель на ml.g5.8xlarge (32 виртуальных ЦП, 1 графический процессор), рассмотрите возможность масштабирования до ml.g5.16xlarge (64 виртуальных ЦП, 1 графический процессор). Или, если вы обучаете свою модель с использованием экземпляра ml.g5.12xlarge с несколькими графическими процессорами (48 виртуальных ЦП, 4 графических процессора), рассмотрите возможность масштабирования до ml.g5.24xlarge (96 виртуальных ЦП, 4 графических процессора). Обратитесь к G5 в спецификации семейства экземпляров для получения более подробной информации.

Иногда масштабирование невозможно, поскольку в том же семействе экземпляров нет типа инстанса с более высоким соотношением виртуальных ЦП:ГП. Например, если вы обучаете модель на ml.trn1.32xlarge, ml.p4d.24xlarge или ml.g5.48xlarge, вам следует рассмотреть гетерогенные кластеры для обучения модели SageMaker.

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

Чтобы упростить принятие решений, обратитесь к следующей блок-схеме.

Повысьте экономическую эффективность обучения модели с помощью гетерогенных кластеров Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Как использовать гетерогенные кластеры SageMaker

Чтобы быстро начать работу, вы можете сразу перейти к примерам TensorFlow или PyTorch, представленным в этом посте.

В этом разделе мы покажем вам, как использовать гетерогенный кластер SageMaker, на простом примере. Мы предполагаем, что вы уже знаете, как обучать модель с помощью SageMaker Python SDK и класса Estimator. Если нет, обратитесь к Использование SDK SageMaker для Python прежде чем продолжить.

До появления этой функции вы инициализировали класс Estimator задания обучения с помощью InstanceCount и параметры InstanceType, что неявно предполагает, что у вас есть только один тип экземпляра (однородный кластер). С выпуском гетерогенных кластеров мы представили новый sagemaker.instance_group.InstanceGroup сорт. Он представляет собой группу из одного или нескольких экземпляров определенного типа экземпляров, предназначенных для выполнения логической роли (например, обработки данных или оптимизации нейронной сети). Вы можете иметь две или более группы и указать собственное имя для каждой группы экземпляров, экземпляр тип и количество экземпляров для каждой группы экземпляров. Использование SDK SageMaker для Python и Использование низкоуровневых 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 ожидает завершения обработки всех экземпляров, прежде чем пометить задание как выполненное и прекратить выставление счетов. launcher.py Сценарий в примерах записных книжек TensorFlow и PyTorch предоставляет эталонную реализацию экземпляров группы данных, сигнализирующих о выходе, когда экземпляры группы DNN завершают свою работу.

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

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

Обратите внимание, что в обоих примерах не следует ожидать значимой сходимости модели. Наша цель состоит только в том, чтобы измерить пропускную способность конвейера данных и оптимизации нейронной сети, выраженную во времени эпохи/шага. Вы должны провести сравнение с вашей собственной моделью и набором данных, чтобы получить преимущества по цене и производительности, соответствующие вашей рабочей нагрузке.

Гетерогенный кластер с использованием распределенного загрузчика данных на основе tf.data.service (TensorFlow)

Эта ноутбук демонстрирует, как реализовать гетерогенный кластер для обучения SageMaker с использованием TensorFlow. tf.data.service на основе распределенного конвейера данных. Обучаем модель компьютерного зрения с глубоким обучением Реснет50 это требует увеличения объема данных с интенсивным использованием ЦП. Оно использует Хорвод для параллелизма распределенных данных с несколькими графическими процессорами.

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

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

Пример 1 (ТФ) ml.p4d.24xl ml.c5.18xl Цена за час* Среднее время шага Стоимость за шаг Улучшение ценовой производительности
гомогенный 1 0 $37.688 192 мс $0.201 .
гетерогенный 1 2 $45.032 86 мс $0.108 46%

* Цена за час указана для нас-восток-1. Цены на SageMaker по требованию

Такое ускорение стало возможным за счет использования дополнительного виртуального ЦП, предоставляемого группой данных, и более быстрой предварительной обработки. См. ноутбук для более подробной информации и графиков.

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

Эта ноутбук демонстрирует пример рабочей нагрузки с использованием гетерогенного кластера для обучения SageMaker с использованием распределенного загрузчика данных на основе клиент-сервера gRPC. В этом примере используется один графический процессор. Мы используем модель PyTorch, основанную на следующем: официальный пример MNIST. Код обучения был изменен, чтобы усложнить предварительную обработку данных. Мы обучаем эту модель как в однородном, так и в гетерогенном кластерном режиме и сравниваем ценовую производительность.

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

Пример 2 (ПТ) мл.п3.2xl ml.c5.9xl Цена за час* Среднее время шага Стоимость за шаг Улучшение ценовой производительности
гомогенный 1 0 $3.825 1193 мс $0.127 .
гетерогенный 1 1 $5.661 184 мс $0.029 77%

* Цена за час указана для нас-восток-1. Цены на SageMaker по требованию

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

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

Mobileye, компания Intel, разрабатывает усовершенствованные системы помощи водителю (ADAS) и технологии автономных транспортных средств с целью совершить революцию в транспортной отрасли, сделать дороги безопаснее и спасти жизни. Эти технологии реализуются с помощью сложных моделей компьютерного зрения (CV), которые обучаются с помощью SageMaker на больших объемах данных, хранящихся в Простой сервис хранения Amazon (Амазонка S3). В этих моделях используются самые современные методы нейронных сетей глубокого обучения.

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

Соображения

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

  • Функция гетерогенного кластера доступна через SageMaker. PyTorch и TensorFlow классы оценщиков структуры. Поддерживаемые платформы: PyTorch v1.10 или новее и TensorFlow v2.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. Вертикальный поиск. Ай.Хрушикеш Гангур — главный архитектор решений для стартапов в области искусственного интеллекта и машинного обучения, обладающий опытом как в обучении машинному обучению, так и в сетевых технологиях AWS. Он помогает стартапам в области технологий автономного транспорта, робототехники, CV, NLP, MLOps, платформы машинного обучения и автоматизации процессов робототехники эффективно и результативно вести свой бизнес на AWS. До прихода в AWS Хрушикеш имел более чем 20-летний опыт работы в отрасли, в основном в сфере облачных платформ и платформ данных.

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

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

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

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