Как Latent Space использовала библиотеку параллелизма моделей Amazon SageMaker для расширения границ крупномасштабных преобразователей

Исходный узел: 1204406

Соавторами этого блога являются руководитель службы безопасности Сара Джейн Хонг, технический директор Дэррил Барнхарт и генеральный директор Latent Space Ян Томпсон и Прем Ранга из AWS.

Скрытое пространство - это скрытое представление абстрактных идей, изучаемых моделями машинного обучения (ML). Например, «собака», «цветок» или «дверь» - это понятия или места в скрытом пространстве. В Скрытое пространство, мы работаем над движком, который позволяет вам управлять этим пространством и исследовать его с помощью языковых и визуальных подсказок. Команда Latent Space работает в двух областях, которые долгое время мало пересекались: графика и обработка естественного языка (NLP). Традиционно модальности изображений и текста обрабатывались отдельно, каждый со своей историей сложной, дорогостоящей и хрупкой разработки функций. Задачи НЛП, такие как понимание документа или ответы на вопросы, обычно имели мало общего с задачами видения, такими как понимание сцены или рендеринг, и обычно мы используем очень разные подходы и модели для каждой задачи. Но это быстро меняется.

Это слияние модальностей в едином общем скрытом пространстве открывает новое поколение творческих и коммерческих приложений, от игр до понимания документов. Но открытие этих новых приложений в единой модели открывает новые проблемы масштабирования, как подчеркивается в «Горьком уроке» Ричарда Саттона и захватывающей работе последних нескольких лет над законами масштабирования. Чтобы сделать это возможным, Latent Space работает над передовыми исследованиями, чтобы объединить эти модальности в единой модели, а также масштабировать и делать это эффективно. Вот тут-то и появляется модельный параллелизм.

Создатель мудреца АмазонкиУникальный автоматизированный подход к разделению моделей и эффективный конвейерный подход позволил нам принять параллелизм моделей с небольшими инженерными усилиями, и мы расширили наше обучение моделей за пределы 1 миллиарда параметров (мы используем p4d.24xlarge экземпляры A100), что является для нас важным требованием. Кроме того, мы заметили, что при обучении с использованием 16 узлов и восьми настроек обучения графических процессоров с помощью библиотеки параллелизма модели SageMaker мы зафиксировали повышение эффективности на 38% по сравнению с нашими предыдущими запусками обучения.

Проблемы с обучением крупномасштабных трансформаторов

В Latent Space мы объединяем язык и видение в моделях трансформаторов с миллиардами параметров, чтобы поддерживать варианты использования «вне распределения» из воображения пользователя или которые могут иметь место в реальном мире, но не в наших обучающих данных. Мы решаем проблемы, связанные с масштабированием до миллиардов параметров и выше, двумя разными способами:

Методы поиска информации уже давно являются ключевым компонентом поисковых систем и задач контроля качества. В последнее время был достигнут впечатляющий прогресс в сочетании классических ИК-методов с современными преобразователями, особенно для задач с ответами на вопросы, когда модель обучается вместе с нейронным ретранслятором, который учится извлекать соответствующие документы, чтобы помогать отвечать на вопросы. Для обзора см. Недавнюю работу FAIR в Получение расширенного поколения: упрощение создания интеллектуальных моделей обработки естественного языка и Слияние в декодере, Google Brain's REALM, и Nvidia Нейронный ретривер для ответа на вопрос.

Хотя методы расширенного поиска помогают сократить расходы и повысить эффективность, мы все еще не можем подогнать модель на одном графическом процессоре для нашей самой большой модели. Это означает, что нам нужно использовать параллелизм моделей для ее обучения. Однако из-за природы нашей архитектуры поиска проектирование разделения модели было сложной задачей из-за взаимозависимостей между извлекаемыми контекстами в обучающих входных данных. Более того, даже если мы определим, как мы разбиваем нашу модель, внедрение параллелизма моделей было важной инженерной задачей, которую нам пришлось решать вручную на протяжении всего жизненного цикла исследований и разработок.

Библиотека параллелизма моделей SageMaker

Параллелизм моделей - это процесс разделения модели между несколькими устройствами или узлами (например, экземпляры с графическим процессором) и создание эффективного конвейера для обучения модели на этих устройствах с целью максимального использования графического процессора. В библиотека параллелизма моделей в SageMaker делает параллелизм моделей более доступным, обеспечивая автоматическое разбиение модели, также называемое автоматическое разбиение модели и сложное планирование работы трубопровода. Алгоритмы разделения модели можно оптимизировать по скорости или потреблению памяти. Библиотека использует алгоритм разделения, который балансирует память, минимизирует обмен данными между устройствами и оптимизирует производительность.

Автоматическое разбиение модели

Для нашего варианта использования PyTorch параллельная библиотека модели внутри выполняет этап трассировки (на первом этапе обучения), который создает граф модели и определяет форму тензора и параметров. Затем он строит дерево, состоящее из вложенных nn.Module объекты в модели, а также дополнительные данные, собранные в результате трассировки, такие как объем сохраненных nn.Parameters, и время выполнения для каждого nn.Module.

Затем библиотека проходит это дерево от корня и запускает алгоритм разделения, который уравновешивает вычислительную нагрузку и использование памяти и минимизирует обмен данными между экземплярами. Если несколько модулей nn.Modules используют один и тот же параметр nn.Parameter, эти модули размещаются на одном устройстве, чтобы избежать поддержки нескольких версий одного и того же параметра. После принятия решения о разделении назначенные модули и веса загружаются в свои устройства.

Планирование прогона трубопровода

Еще одна ключевая особенность параллельной библиотеки распределенных моделей SageMaker: трубопроводные трассы, которые определяют порядок выполнения вычислений и обработки данных на разных устройствах во время обучения модели. Конвейерная обработка основана на разделении мини-пакета на микропакеты, которые по одному передаются в конвейер обучения и следуют расписанию выполнения, определенному средой выполнения библиотеки.

Конвейер микропакетов гарантирует, что все графические процессоры полностью используются, что нам пришлось бы создать самостоятельно, но с библиотекой параллелизма моделей это происходит незаметно за кулисами. Наконец, мы можем использовать Амазон ФСх, что важно для обеспечения высокой скорости чтения с учетом количества файлов, читаемых во время обучения мультимодальной модели с извлечением.

Архитектура обучения

На следующей диаграмме показано, как мы настраиваем нашу архитектуру обучения. Нашей основной целью было повышение скорости обучения и снижение затрат. Обучаемые нами преобразователи изображений и языка очень сложны, со значительно большим количеством уровней и весов внутри, работающими до миллиардов параметров, что не позволяет им уместиться в памяти одного узла. Каждый узел несет в себе подмножество модели, через которую потоки данных и преобразования распределяются и компилируются. Настраиваем 16 p4d.24xlarge экземпляры, каждый с восемью графическими процессорами, используя следующее представление архитектуры:

По мере того, как мы масштабируем наши модели, общая тенденция заключается в том, что все хранится в весах сети. Однако в практических целях мы хотим расширить наши модели, чтобы научиться искать соответствующие контексты, чтобы помочь с задачей рендеринга. Это позволяет нам снизить расходы на обслуживание без ущерба для качества изображения. Мы используем большую модель NLP на основе трансформатора и, как упоминалось ранее, мы наблюдали 38% -ное увеличение эффективности обучения с помощью библиотеки параллелизма модели SageMaker, как показано ниже:

  • В случае параллелизма тензорного уровня для каждого вычисления требуется полное сокращение. Это занимает O (log_2 n) параллельных шагов. Это n машин, выполняющих O (n) шагов за O (n log_2 n) операций.
  • Для конвейерного параллелизма нам требуется O (1) параллельных шагов для передачи данных по конвейеру.
  • Учитывая 16 машин с восемью графическими процессорами, у нас есть стоимость O (1) для конвейерной параллели и O (log_2 (8)) = O (3) стоимости для параллельной модели по глубине.
  • В этом случае мы видим, что стоимость сети снижается до 1/3 за счет перехода на конвейерный параллелизм, который мы используем с параллелизмом модели SageMaker, а общая стоимость обучения снижается до 1/2 + 1/2 * 1 / log_2 (16 ) = 0.625 первоначальной стоимости, что приводит к соответствующему повышению эффективности.

В общем, когда необходимость требует распределенного обучения (проблемы с размером модели масштабирования или данными обучения), мы можем следовать набору передовых практик, чтобы определить, какой подход работает лучше всего.

Лучшие практики для распределенного обучения

Основываясь на нашем опыте, мы предлагаем начать с параллельного подхода к распределенным данным. Распределенный параллелизм данных, такой как Распределенная параллельная библиотека данных SageMaker решает большинство сетевых проблем с репликами моделей, поэтому вы должны уместить модели в наименьшее количество узлов, а затем реплицировать для масштабирования размера пакета по мере необходимости.

Если во время обучения у вас заканчивается память, как это было в этом сценарии, вы можете переключиться на параллельный подход к модели. Однако рассмотрите эти альтернативы, прежде чем пробовать моделировать параллельное обучение:

  • На оборудовании с NVIDIA Tensor Core используйте обучение со смешанной точностью для ускорения работы и уменьшения потребления памяти.
  • Уменьшите размер пакета (или уменьшите разрешение изображения или длину последовательности NLP, если возможно).

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

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

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

При оптимизации производительности сделайте следующее:

  • Используйте конвейерную обработку для межузловой связи, чтобы минимизировать задержку и увеличить пропускную способность.
  • Трубопроводы должны быть как можно короче, чтобы минимизировать образование пузырей. Количество микропакетов должно быть настроено так, чтобы уравновесить вычислительную эффективность и размер пузырьков, и должно быть не меньше длины конвейера. При необходимости вы можете формировать микропакеты на уровне токенов, как описано в TeraPipe: Token Level Pipeline Parallelism для обучения крупномасштабных языковых моделей

При оптимизации затрат используйте для обучения управляемые спотовые инстансы SageMaker. Это может оптимизировать стоимость обучения моделей до 90% по сравнению с инстансами по требованию. SageMaker управляет прерываниями работы Spot от вашего имени.

Другие факторы, которые следует учитывать:

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

В следующей таблице представлены некоторые распространенные сценарии масштабирования обучения и способы их настройки на AWS.

Сценарий Когда это применимо? Решения
Масштабирование от одного графического процессора до множества графических процессоров Когда объем обучающих данных или размер модели слишком велик Перейдите на экземпляр с несколькими графическими процессорами, например p3.16xlarge, который имеет восемь графических процессоров, при этом данные и обработка разделены между восемью графическими процессорами и обеспечивают почти линейное ускорение во времени, необходимом для обучения вашей модели.
Масштабирование от одного экземпляра до нескольких экземпляров Когда масштабирование выходит за рамки изменения размера экземпляра Масштабируйте количество экземпляров с помощью функции оценки SageMaker Python SDK, задав для instance_type значение p3.16xlarge и instance_count равным 2. Вместо восьми графических процессоров на одном p3.16xlarge у вас есть 16 графических процессоров в двух идентичных экземплярах. Рассмотрите возможность использования Распределенная параллельная библиотека данных SageMaker.
Выбор модельного параллельного подхода для обучения При возникновении ошибок памяти во время тренировки Переключитесь на параллельный подход к модели, используя Параллельная библиотека распределенных моделей SageMaker.
Производительность сети для межузловой связи Для распределенного обучения с несколькими экземплярами (например, связь между узлами в кластере при выполнении операции AllReduce) Ваши экземпляры должны находиться в одном регионе и в одной зоне доступности. Когда вы используете SageMaker Python SDK, это делается за вас. Ваши данные обучения также должны находиться в той же зоне доступности. Рассмотрите возможность использования Распределенная параллельная библиотека данных SageMaker.
Оптимизированный графический процессор, сеть и хранилище Для крупномасштабного распределенного обучения Тип инстанса p4d.24xlarge был разработан для быстрого локального хранилища и быстрой сетевой объединительной платы с пропускной способностью до 400 гигабит, и мы настоятельно рекомендуем его как наиболее эффективный вариант для распределенного обучения.

Заключение

Используя параллельную библиотеку моделей в SageMaker, мы получаем сразу несколько преимуществ, таких как автоматическое разбиение модели на разделы и эффективная конвейерная обработка. В этом посте мы поделились своими проблемами, связанными с нашим вариантом использования машинного обучения, нашими соображениями о различных подходах к обучению и тем, как мы использовали библиотеку параллелизма моделей Amazon SageMaker для ускорения обучения. Лучше всего то, что теперь может потребоваться всего несколько часов, чтобы внедрить передовые методы параллелизма моделей и улучшения производительности, описанные здесь. Если этот пост поможет вам или вдохновит на решение проблемы, мы будем рады услышать об этом! Пожалуйста, поделитесь своими комментариями и отзывами.

Рекомендации

Для получения дополнительной информации см. Следующее:


Об авторах

Прем Ранга является архитектором корпоративных решений из Атланты, штат Джорджия. Он является частью сообщества технических специалистов по машинному обучению и любит работать с клиентами на их пути к машинному обучению и искусственному интеллекту. Прем увлечен робототехникой, занимается исследованием автономных транспортных средств, а также построил контролируемые Alexa Beer Pours в Хьюстоне и других местах.

Сара Джейн Хонг является соучредителем и главным научным сотрудником компании Latent Space. Ее опыт лежит на пересечении взаимодействия человека с компьютером и машинного обучения. Ранее она руководила исследованиями НЛП в компании Sonar (приобретенной Marchex), которая обслуживает предприятия в области разговорного ИИ. Она также является уважаемым разработчиком AR / VR, получившим награды и стипендии от Oculus, Mozilla Mixed Reality и Microsoft Hololens.

Дэррил Барнхарт соучредитель и технический директор Latent Space. Он опытный разработчик с опытом в области ускорения графического процессора, компьютерной графики, крупномасштабных данных и машинного обучения. Другие увлечения включают математику, разработку игр и изучение информации.

Ян Томпсон является основателем и генеральным директором Latent Space. Ян - инженер и исследователь, вдохновленный «смежным возможным» - технологиями, которые вот-вот окажут большое влияние на нашу жизнь. В настоящее время основное внимание уделяется упрощению и масштабированию обучения мультимодальному представлению, чтобы помочь создать безопасный и творческий ИИ. Ранее он помогал создавать компании в области графики / виртуальной реальности (AltspaceVR, приобретенная Microsoft) и образования / НЛП (HSE).

Источник: https://aws.amazon.com/blogs/machine-learning/how-latent-space-used-the-amazon-sagemaker-model-parallelism-library-to-push-the-frontiers-of-large- масштабные трансформеры /

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

Больше от Блог машинного обучения AWS