Увеличение размера языковых моделей было одной из самых больших тенденций в обработке естественного языка (NLP) в последние годы. С 2018 года мы наблюдаем беспрецедентную разработку и развертывание все более крупных языковых моделей, включая BERT и его варианты, GPT-2, T-NLG и GPT-3 (175 миллиардов параметров).
Эти модели раздвинули границы возможных архитектурных инноваций. Мы сталкиваемся с рядом проблем при обучении крупномасштабных моделей глубокого обучения, особенно новой волны генеративных предварительно обученных преобразователей. Эти проблемы включают аппаратные ограничения и компромиссы с вычислениями и эффективностью. Чтобы преодолеть эти проблемы, связанные с параллелизмом моделей и данных, AWS предлагает широкий спектр возможностей.
В этом посте мы представляем два основных подхода: распараллеливание данных и распараллеливание моделей с использованием Создатель мудреца Амазонки, и обсудить их плюсы и минусы.
Модель
Для языковой модели мы используем трансформеры, представленные в статье Внимание это все, что вам нужно. Преобразователи — это модели глубокого обучения, предназначенные для того, чтобы сознательно избегать ловушек RNN, полагаясь на механизм самоконтроля для построения глобальных зависимостей между вводом и выводом. Архитектура модели Transformer обеспечивает значительно лучшую распараллеливание и позволяет достичь высокой производительности за относительно короткое время обучения. Основанный на успехе «Трансформеров», BERT представлен в газете. BERT: предварительная подготовка глубинных двунаправленных трансформаторов для понимания языка, добавлено двунаправленное предварительное обучение для языкового представления. Вдохновленный задачей Cloze, BERT предварительно обучен моделированию маскированного языка (MLM), в котором модель учится восстанавливать исходные слова для случайно замаскированных токенов. Модель BERT также предварительно обучена задаче прогнозирования следующего предложения (NSP), чтобы предсказать, находятся ли два предложения в правильном порядке чтения. С момента своего появления в 2018 году BERT и его варианты широко используются в языковых моделях.
Мы начнем с создания двух слоев внедрения для токена и позиционного внедрения. Входные вложения представляют собой сумму вложений токенов и вложений позиции.
Затем мы определяем блок преобразователя декодера с двумя подуровнями: уровень самоконтроля с несколькими головками и простая полносвязная сеть прямой связи с последующей нормализацией и отсевом уровня:
Наконец, мы создаем нашу языковую модель с предыдущим слоем внедрения и блоками преобразования:
В зависимости от ваших гиперпараметров вы можете масштабировать эту модель от тысяч параметров до миллиардов параметров. Основная проблема с моделями с миллиардами параметров заключается в том, что вы не можете разместить модель в одном экземпляре и должны распределить модель по нескольким узлам для обучения и вывода.
Набор данных
В наших экспериментах мы использовали Набор данных сваи. The Pile — это текстовый набор данных на английском языке объемом 800 ГиБ, предназначенный для обучения крупномасштабных языковых моделей. Он создан из 22 разнообразных и высококачественных наборов данных, включая как устоявшиеся наборы данных НЛП, так и новые.
Набор данных создается из различных источников данных, включая книги; репозитории GitHub; интернет страницы; журналы чата; и статьи по медицине, физике, математике, информатике и философии. В частности, он использует следующие источники: Pile-CC, PubMed Central, ArXiv, GitHub, проект FreeLaw, Stack Exchange, Управление по патентам и товарным знакам США, PubMed, Ubuntu, IRC, HackerNews, YouTube, PhilPapers, Books3, Project Gutenberg ( PG-19), OpenSubtitles, английская Википедия, DM Mathematics, EuroParl, корпус электронной почты Enron и NIH ExPorter. Он также включает OpenWebText2 и BookCorpus2, которые являются расширениями исходных наборов данных OpenWebText и BookCorpus соответственно. Разнообразие источников данных может улучшить общие междисциплинарные знания и, следовательно, улучшить возможности последующего обобщения.
Основная проблема с этим набором данных — его размер; набор данных содержит 825 ГиБ текста, что соответствует 4.2 ТиБ предварительно обработанных и сжатых точек данных. Подобно проблемам, с которыми мы сталкиваемся при обучении и размещении моделей, обучение модели с этим набором данных на одном экземпляре займет много времени и непрактично.
Наше решение состоит в том, чтобы разбить набор данных на фрагменты размером примерно 1 ГиБ, загрузить и предварительно обработать функции в Набор данных TensorFlow объекты и хранить их в Эластичный файловый сервис Amazon (Амазон ЭФС). Наборы данных TensorFlow обеспечивают простой в использовании и высокопроизводительный конвейер данных, который хорошо интегрируется с нашими моделями. Amazon EFS — это простой в использовании сервис, который позволяет нам создать общую файловую систему, которая автоматически масштабируется по мере добавления и удаления файлов. Кроме того, Amazon EFS может при необходимости резко увеличить пропускную способность, что очень важно для нашего конвейера обучения данных и моделей.
Далее мы рассмотрим стратегии распределенного обучения для решения этих задач.
Распределенное обучение
В этом проекте мы столкнулись с двумя проблемами: масштабирование размера модели и объема данных. Увеличение размера модели и количества обучаемых параметров может привести к повышению точности, но существует ограничение на модель, которую можно поместить в память одного графического процессора или даже в несколько графических процессоров в одном экземпляре. Кроме того, модели большего размера требуют больше времени для обучения.
Вы можете решить эти проблемы двумя разными способами: параллелизм данных и параллелизм моделей. При параллелизме данных мы выполняем стохастический градиентный спуск (SGD), распределяя записи мини-пакета по разным устройствам для ускорения обучения. Однако параллельное обучение данных сопряжено с дополнительной сложностью вычисления мини-пакетного среднего градиента с градиентами со всех устройств, шаг называется AllReduce
, что усложняется по мере роста обучающего кластера. При использовании параллелизма данных мы должны иметь возможность разместить модель и одну точку данных в устройстве (ЦП или ГП), что является ограничивающим фактором в наших экспериментах, поскольку размер такой большой модели намного больше, чем память одного ГП. размер.
Другим решением является использование параллелизма моделей, который разделяет модель на несколько устройств. Параллелизм модели — это процесс разделения модели между несколькими устройствами или узлами (например, экземплярами с графическим процессором) и создания эффективного конвейера для обучения модели на этих устройствах для максимального использования графического процессора.
Распараллеливание данных
Распараллеливание данных является наиболее распространенным подходом к нескольким графическим процессорам или распределенному обучению. Вы можете группировать свои данные, отправлять их на несколько устройств (каждое из которых содержит реплицированную модель), а затем объединять результаты. Мы экспериментировали с двумя пакетами для распараллеливания данных: Horovod и the Распределенная параллельная библиотека данных SageMaker.
Horovod — это распределенная обучающая среда глубокого обучения для TensorFlow, Keras, PyTorch и Apache MXNet. Чтобы использовать Horovod, мы прошли следующий процесс:
- Инициализировать, запустив
hvd.init()
. - Свяжите каждое устройство с одним процессом. Первый процесс или рабочий процесс связан с первым устройством, второй процесс связан со вторым устройством и так далее.
- Отрегулируйте скорость обучения в зависимости от количества устройств.
- Оберните оптимизатор в
hvd.DistributedOptimizer
. - Передайте начальные состояния переменных от первого рабочего с рангом 0 всем остальным процессам. Это необходимо для обеспечения последовательной инициализации всех воркеров при запуске обучения со случайными весами или восстановлении из контрольной точки.
- Убедитесь, что только устройство 0 может сохранять контрольные точки, чтобы предотвратить их повреждение другими рабочими процессами.
Ниже приведен сценарий обучения:
Библиотека параллельных данных SageMaker позволяет нам масштабировать наше обучение с почти линейной эффективностью, ускоряя наше обучение с минимальными изменениями кода. Библиотека выполняет пользовательский AllReduce
работу и оптимизирует обмен данными между устройствами, полностью используя сетевую инфраструктуру AWS и Эластичное вычислительное облако Amazon Топология инстанса (Amazon EC2). Чтобы использовать параллельную библиотеку данных SageMaker, мы прошли следующий процесс:
- Импортировать и инициализировать
sdp.init()
. - Свяжите каждое устройство с одним
smdistributed.dataparallel
процесс сlocal_rank
.sdp.tensorflow.local_rank()
дает нам локальный ранг устройств. Лидер имеет ранг 0, а рабочие — ранг 1, 2, 3 и так далее. - Отрегулируйте скорость обучения в зависимости от количества устройств.
- Оберните
tf.GradientTape
DistributedGradientTape
для выполненияAllReduce
. - Передайте начальные переменные модели от ведущего узла всем рабочим узлам.
- Убедитесь, что только устройство 0 может сохранять контрольные точки.
Распараллеливание модели
Мы можем настроить гиперпараметры, чтобы модель оставалась достаточно маленькой для обучения с использованием одного графического процессора, или мы можем использовать параллелизм модели, чтобы разделить модель между несколькими графическими процессорами в нескольких экземплярах. Увеличение количества обучаемых параметров модели может привести к повышению точности, но существует ограничение на максимальный размер модели, который можно поместить в одну память графического процессора. Мы использовали параллельную библиотеку распределенных моделей SageMaker для обучения наших более крупных моделей. Шаги следующие:
- Импортируйте и инициализируйте библиотеку с помощью
smp.init()
. - Модель Keras должна наследоваться от smp.DistributedModel вместо класса Keras Model.
- Поставьте
drop_remainder=True
вtf.Dataset.batch()
метод, обеспечивающий, чтобы размер партии всегда делился на количество микропартий. - Все случайные операции в конвейере данных должны использовать одно и то же начальное число:
smp.dp_rank()
Например,shuffle(ds, seed=smp.dp_rank())
. Это обеспечивает согласованность выборок данных на устройствах, содержащих разные разделы модели. - Прямая и обратная логика должна быть в ступенчатой функции с
smp.step
украшение. - Выполните постобработку выходных данных микропакетов, используя методы StepOutput, такие как
reduce_mean
,smp.step
функция должна иметь возвращаемое значение, которое зависит от выводаsmp.DistributedModel
.
Сценарий обучения следующий:
Подробное руководство по включению сценария обучения TensorFlow для параллельной библиотеки распределенных моделей SageMaker см. Изменение сценария обучения TensorFlow. Для PyTorch см. Изменить сценарий обучения PyTorch.
Отладчик SageMaker
В предыдущих разделах мы обсуждали, как оптимизировать обучение, используя методы распараллеливания моделей и данных. С Amazon SageMaker Отладчик, теперь мы можем собирать информацию о профилировании производительности из наших тренировочных прогонов, чтобы определить, насколько обучение улучшилось. По умолчанию отладчик фиксирует системные показатели для каждого обучающего задания SageMaker, такие как загрузка графического процессора, процессора, памяти, сети и операций ввода-вывода, с интервалом выборки 500 миллисекунд. Мы можем получить доступ к данным следующим образом:
Отладчик предоставляет утилиты для визуализации данные профилирования по-разному. В следующем примере мы видим общее использование GPU и CPU, а также время ожидания ввода-вывода для задания обучения с несколькими GPU с использованием Horovod. Чтобы сгенерировать эти графики, мы запускаем следующий код:
Использование графического процессора часто колеблется в пределах от 0 до 100 %, а высокое время ожидания ввода-вывода при низкой загрузке графического процессора является индикатором узкого места ввода-вывода. Кроме того, общая загрузка ЦП никогда не превышает 70%, а это означает, что мы можем улучшить предварительную обработку данных, увеличив количество рабочих процессов.
Мы можем повысить производительность, переключившись с Horovod на параллельную библиотеку распределенных данных SageMaker. На следующих графиках мы видим, что графические процессоры используются более эффективно и снижаются до низкого уровня использования только в течение коротких периодов времени.
Учебная инфраструктура
Для обучения моделей мы использовали 10 экземпляров ml.p3.16xlarge с помощью обучающего задания SageMaker. SageMaker сокращает время и затраты на обучение и настройку моделей машинного обучения (ML) без необходимости управления инфраструктурой. С помощью SageMaker вы можете легко обучать и настраивать модели машинного обучения с помощью встроенных инструментов для управления и отслеживания обучающих экспериментов, автоматического выбора оптимальных гиперпараметров, отладки учебных заданий и мониторинга использования системных ресурсов, таких как графические и центральные процессоры, и пропускной способности сети. Данные размещались в Amazon EFS, что позволяло нам увеличивать и уменьшать размер по мере добавления и удаления файлов без необходимости управления или выделения ресурсов. Нашей основной целью было повысить скорость обучения и снизить затраты.
Масштабируемость модели
Хотя эта инфраструктура в основном используется для генерации языка, с архитектурой GPT и набором данных Pile вы можете использовать эти методы для обучения крупномасштабных моделей преобразователей, что полезно во многих областях помимо NLP. В самом машинном обучении многие задачи компьютерного зрения в настоящее время решаются с помощью архитектур с большими параметрами (преобразователями), где было показано, что они превосходят традиционные CNN (сверточные нейронные сети) в таких задачах, как обучение представлению (см. Продвижение современного уровня в области компьютерного зрения с самоконтролируемыми трансформерами и в 10 раз более эффективным обучением) и крупномасштабное преобразование изображений в текст (например, CLIP). Модели с большими параметрами также открывают новые горизонты в науках о жизни в таких областях, как анализ структуры белка и анализ данных медицинских изображений.
Решения, которые мы подробно описываем в этом посте для распределенного обучения и управления большими моделями, также должны применяться к моделям в любой из этих областей.
Компромиссы
В исследовательском сообществе продолжается дискуссия о рисках обучения крупномасштабных языковых моделей, а также о том, достаточно ли продуманы потенциальные риски, связанные с их разработкой, и стратегии снижения этих рисков, некоторые из которых включают финансовые и экологические затраты. Согласно бумаги опубликовано в ACM, обучение одной базовой модели BERT (без настройки гиперпараметров) на графических процессорах, по оценкам, требует столько же энергии, сколько трансамериканский полет. Воздействие на окружающую среду зависит от размера модели, и возможность эффективной тонкой настройки таких моделей может потенциально значительно сократить выбросы. AWS недавно запустил новый Инструмент углеродного следа клиента, доступный для всех клиентов AWS бесплатно, в рамках усилий Amazon по повышению устойчивости и сокращению выбросов углерода. Запуск приложений в облаке AWS потенциально может уменьшить углеродный след (по сравнению с корпоративными центрами обработки данных, которые были исследованы в отчет 2019).
Заключение
В этом посте продемонстрировано решение, упрощающее тонкую настройку языковых моделей с миллиардом параметров в облаке AWS с помощью SageMaker.
Дополнительные сведения о параллелизме моделей с помощью SageMaker см. Обучайте модели NLP с более чем 175 миллиардами параметров с помощью параллельных дополнений моделей и Hugging Face на Amazon SageMaker. и Как Latent Space использовала библиотеку параллелизма моделей Amazon SageMaker для расширения границ крупномасштабных преобразователей.
Если вам нужна помощь в ускорении использования машинного обучения в ваших продуктах и процессах, обратитесь в Лаборатория решений Amazon ML.
Об авторах
Сиа Голами — старший специалист по данным в лаборатории решений Amazon ML, где он создает решения AI/ML для клиентов из различных отраслей. Он увлечен обработкой естественного языка (NLP) и глубоким обучением. Вне работы Сия любит проводить время на природе и играть в теннис.
Мехди Нуриявляется менеджером и старшим научным сотрудником в лаборатории Amazon ML Solutions Lab, где он работает с клиентами из различных отраслей и помогает им ускорить миграцию в облако, а также решить свои проблемы с машинным обучением, используя самые современные решения и технологии.
Мухён Ким Специалист по анализу данных в Amazon Machine Learning Solutions Lab. Он решает различные бизнес-задачи клиентов, применяя машинное обучение и глубокое обучение, а также помогает им получить навыки.
Дэнни Берд является прикладным ученым в лаборатории решений Amazon ML. В лаборатории он помогал клиентам разрабатывать передовые решения машинного обучения по специальностям машинного обучения, от компьютерного зрения до обучения с подкреплением. Он увлечен продвижением технологий и раскрытием нового потенциала продуктов AWS.
Франсиско Кальдерон Родригес работает специалистом по данным в лаборатории решений Amazon ML. В качестве члена лаборатории ML Solutions Lab он помогает клиентам AWS решать важные бизнес-задачи с помощью глубокого обучения. В свободное время Франсиско любит заниматься музыкой и гитарой, играть в футбол со своими дочерьми и проводить время со своей семьей.
Йохей Накаяма является архитектором глубокого обучения в лаборатории решений Amazon ML. Он работает с клиентами из разных вертикалей, чтобы ускорить использование ими искусственного интеллекта и облачных сервисов AWS для решения своих бизнес-задач. Он заинтересован в применении технологий ML/AI в космической отрасли.
Натали Раушмайр — старший научный сотрудник AWS, где она помогает клиентам разрабатывать приложения для глубокого обучения.
- Коинсмарт. Лучшая в Европе биржа биткойнов и криптовалют.
- Платоблокчейн. Интеллект метавселенной Web3. Расширение знаний. БЕСПЛАТНЫЙ ДОСТУП.
- КриптоХок. Альткоин Радар. Бесплатная пробная версия.
- Источник: https://aws.amazon.com/blogs/machine-learning/create-train-and-deploy-a-billion-parameter-language-model-on-terabytes-of-data-with-tensorflow-and- амазонка-мудрец /
- "
- 10
- 100
- 2019
- a
- О нас
- ускорять
- ускоряющий
- доступ
- По
- Достигать
- через
- добавленный
- дополнение
- продвинутый
- Все
- позволяет
- всегда
- Amazon
- анализ
- API
- Приложения
- прикладной
- Применить
- Применение
- подхода
- подходы
- примерно
- архитектурный
- архитектура
- Искусство
- искусственный
- искусственный интеллект
- связанный
- внимание
- автоматически
- доступен
- в среднем
- AWS
- , так как:
- не являетесь
- между
- Beyond
- больший
- Крупнейшая
- миллиард
- миллиарды
- Заблокировать
- Книги
- строить
- строит
- встроенный
- бизнес
- возможности
- способный
- захватить
- перехватывает
- углерод
- выбросы углекислого газа
- центральный
- вызов
- проблемы
- Выберите
- класс
- облако
- облачные сервисы
- код
- Общий
- Связь
- сообщество
- сравненный
- вычисление
- Вычисление
- компьютер
- Информатика
- вычисление
- подключенный
- Минусы
- последовательный
- обращайтесь
- Расходы
- Создайте
- создали
- создает
- Создающий
- критической
- изготовленный на заказ
- Клиенты
- данным
- центров обработки данных
- ученый данных
- глубоко
- убивают
- зависит
- развертывание
- развертывание
- предназначенный
- подробность
- подробный
- Определять
- развивать
- развивающийся
- Развитие
- устройство
- Устройства
- различный
- обсуждать
- распределенный
- распределительный
- Разнообразие
- DM
- доменов
- вниз
- легко
- Простой в использовании
- затрат
- эффективный
- эффективно
- усилия
- Выбросы
- включить
- позволяет
- энергетика
- Английский
- Предприятие
- окружающий
- особенно
- установленный
- По оценкам,
- пример
- превышает
- обмена
- расширения
- Face
- что его цель
- сталкиваются
- семья
- Особенности
- Поля
- финансовый
- First
- соответствовать
- полет
- после
- следующим образом
- след
- вперед
- Рамки
- Франциско
- от
- функция
- Более того
- Общие
- порождать
- поколение
- генеративный
- получающий
- GitHub
- Глобальный
- GPU / ГРАФИЧЕСКИЙ ПРОЦЕССОР
- Графические процессоры
- Расти
- инструкция
- Аппаратные средства
- помощь
- помогает
- High
- высококачественный
- высший
- держать
- состоялся
- хостинг
- Как
- How To
- Однако
- HTTPS
- изображение
- изображений
- улучшать
- улучшенный
- включают
- включает в себя
- В том числе
- Увеличение
- повышение
- индекс
- промышленности
- промышленность
- информация
- Инфраструктура
- инновации
- вход
- вдохновленный
- пример
- Интеллекта
- заинтересованный
- IT
- саму трезвость
- работа
- Джобс
- путешествие
- Сохранить
- знания
- лаборатория
- этикетка
- Этикетки
- язык
- большой
- больше
- запустили
- слой
- лидер
- изучение
- уровни
- Библиотека
- Медико-биологическая промышленность
- загрузка
- локальным
- посмотреть
- машина
- обучение с помощью машины
- управлять
- управление
- менеджер
- управления
- отображение
- маска
- математике
- математика
- означает
- основным медицинским
- член
- Память
- методы
- Метрика
- ML
- модель
- Модели
- монитор
- БОЛЕЕ
- самых
- с разными
- Музыка
- натуральный
- природа
- необходимо
- потребности
- сеть
- NIH
- узлы
- номер
- целей
- Предложения
- Офис
- постоянный
- операция
- Операционный отдел
- Оптимизировать
- заказ
- Другое
- бумага & картон
- часть
- страстный
- патент
- производительность
- периодов
- философия
- Физика
- Играть
- игры
- должность
- возможное
- потенциал
- предсказывать
- прогноз
- Predictions
- предыдущий
- первичный
- проблемам
- процесс
- Процессы
- обработка
- Продукция
- профилирование
- Проект
- PROS
- обеспечивать
- приводит
- толкнул
- ассортимент
- Reading
- последний
- недавно
- учет
- Recover
- уменьшить
- по
- представление
- представленный
- требовать
- исследованиям
- Полезные ресурсы
- Итоги
- возвращают
- рисках,
- Run
- Бег
- то же
- Шкала
- масштабирование
- Наука
- НАУКА
- Ученый
- семя
- обслуживание
- Услуги
- несколько
- SGD
- Форма
- общие
- Короткое
- показанный
- аналогичный
- просто
- с
- одинарной
- Размер
- небольшой
- So
- Футбольный
- Решение
- Решения
- РЕШАТЬ
- Решает
- некоторые
- Space
- конкретно
- скорость
- Расходы
- раскол
- расколы
- стек
- и политические лидеры
- Область
- современное состояние
- Области
- магазин
- стратегий
- успех
- Стабильность
- система
- задачи
- снижения вреда
- технологии
- Технологии
- Ассоциация
- тысячи
- Через
- пропускная способность
- время
- раз
- знак
- Лексемы
- инструменты
- трек
- товарный знак
- традиционный
- Обучение
- Тенденции
- Ubuntu
- беспрецедентный
- us
- использование
- коммунальные услуги
- Использующий
- ценностное
- разнообразие
- различный
- вертикалей
- видение
- объем
- ждать
- Wave
- способы
- будь то
- в то время как
- Википедия.
- без
- слова
- Работа
- работник
- рабочие
- работает
- X
- лет
- ВАШЕ
- YouTube