DeepSpeed: инструмент обучения гипермасштабируемой модели для всех

глубокое обучение

DeepSpeed: инструмент обучения гипермасштабируемой модели для всех

Мы были в феврале этого года.Выпущен DeepSpeed. Это библиотека оптимизации обучения глубокому обучению с открытым исходным кодом, которая содержит новую технологию оптимизации памяти — ZeRO (Zero Redundancy Optimizer), которая значительно способствует обучению больших моделей за счет расширения масштаба, повышения скорости, контроля затрат и повышения удобства использования. DeepSpeed ​​помог исследователям разработать модели генерации естественного языка Тьюринга (Turing-NLG), которая на момент публикации была самой большой языковой моделью в мире (с 17 миллиардами параметров) и обладала наилучшей точностью. мы в маеВыпущен ЗеРО-2- Поддерживает обучение моделей с 200 миллиардами параметров, что до 10 раз быстрее, чем самые современные, а также ряд оптимизаций вычислений, ввода-вывода и конвергенции для обеспечения самого быстрого обучения BERT. С тех пор мы продолжаем внедрять инновации с высокой скоростью, раздвигая границы скорости и масштаба обучения моделей глубокого обучения.

Сегодня мы очень рады поделиться с вами некоторыми новыми разработками, которые не только доведут обучение глубокому обучению до крайности, но и сделают технологию более широко используемой — от обучения специалистов по данным на суперкомпьютерах до обучения на низкоуровневых кластерах. или даже только один графический процессор. В частности, DeepSpeed ​​добавила 4 новых систематических новых технологии для дальнейшего расширения нашегоAI at Scaleинициатива. Они также способствуют инновациям в продуктах и ​​платформах искусственного интеллекта Microsoft. Эти методы обеспечивают чрезвычайно эффективное использование вычислений, памяти и связи и позволяют нам обучать модели с параметрами порядка миллиардов или триллионов. Эти методы также поддерживают очень длинные входные последовательности и могут использоваться в высокопроизводительных кластерах с однокарточными графическими процессорами, графическими процессорами с килограммами или недорогих кластерах с медленным Ethernet.

  • Обучение модели с триллионом параметров с 3D-параллелизацией:DeepSpeed ​​реализует гибкую комбинацию трех параллельных методов: параллелизм данных с поддержкой ZeRO, конвейерный параллелизм и параллелизм моделей тензорных срезов. 3D-параллелизм адаптируется к потребностям различных рабочих нагрузок для поддержкитриллионпараметрическийнегабаритная модель, достигая почти идеальной масштабируемости памяти и эффективности расширения пропускной способности. Кроме того, улучшенная эффективность связи позволяет пользователям обучать модели с миллиардами параметров в 2-7 раз быстрее на обычных кластерах с ограниченной пропускной способностью сети.
  • ZeRO-Offload позволяет одному графическому процессору обучать модели в 10 раз больше:Для обучения больших моделей с использованием памяти ЦП и ГП мы расширяем ZeRO-2. Наши пользователи используютОдин графический процессор Nvidia V100, может работать без исчерпания видеопамятиМодели с 13 миллиардами параметров, модель масштабируется до 10 раз по сравнению с существующими методами и поддерживает конкурентоспособную пропускную способность. Эта возможность демократизировала обучение моделей с миллиардами параметров и открыла окно для многих специалистов по глубокому обучению для изучения более крупных и лучших моделей.
  • Выполняйте в 10 раз более длинные последовательности с 6-кратной скоростью с помощью DeepSpeed ​​Sparse Внимание:DeepSpeed ​​предоставляет разреженные ядра внимания — инструментальный метод, который поддерживает длинные последовательности входных данных модели, включая ввод текста, ввод изображения и ввод речи. По сравнению с классическим плотным Трансформером он поддерживаетВходная последовательность на порядок длиннееи получить 6-кратное ускорение при сохранении сопоставимой точности. Это также в 1,5–3 раза быстрее, чем последняя разреженная реализация. Кроме того, наше разреженное ядро ​​гибко поддерживает разреженные форматы, позволяя пользователям вводить новшества с помощью пользовательских разреженных структур.
  • 1 бит Адам уменьшает трафик в 5 раз:Адам — эффективный (возможно, наиболее широко используемый) оптимизатор для крупномасштабных сценариев обучения моделей глубокого обучения. Однако он часто несовместим с алгоритмами оптимизации эффективности связи. Поэтому накладные расходы на связь могут стать узким местом при распределенном масштабировании между устройствами. Мы представляем новый 1-битный алгоритм Адама и его эффективную реализацию. алгоритмДо 5 раз меньше трафика, достигая при этом скорости сходимости, аналогичной Адаму. В сценариях с ограниченной связью мы наблюдаем 3,5-кратное ускорение при распределенном обучении, что позволяет алгоритму масштабироваться для различных типов кластеров графических процессоров и сетевых сред.

a screenshot of a cell phone

В этом сообщении блога мы углубимся в эти 4 технологии. Мы опубликовали эти захватывающие методы оптимизации вПроект с открытым исходным кодом DeepSpeedсередина.

Трехмерный параллелизм: масштабирование до моделей с триллионом параметров

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

Понимание проблем с памятью и вычислительной эффективностью для обучения огромных моделей

Эффективность памяти:Память, необходимая для обучения модели с триллионом параметров, намного превышает объем памяти одного графического процессора. При использовании оптимизатора Adam для обучения смешанной точности требуется около 16 ТБ видеопамяти для хранения состояния модели (параметров, градиентов и состояния оптимизатора). Для сравнения, современный графический процессор Nvidia A100 имеет всего 40 ГБ видеопамяти. 400 таких графических процессоров нужны только для хранения состояния модели.

Дополнительная память, используемая функцией активации, увеличивается с размером пакета. Если для пакета задано значение 1, обучение модели с триллионом параметров создаст более 1 ТБ видеопамяти для функций активации (далее именуемой видеопамятью активации). использоватьcheckpointОбработка активации видеопамяти, обмен вычислений на видеопамять, может уменьшить эту память примерно до 20 ГБ, но это все еще слишком много для обучения.

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

**Эффективность вычислений:** Подсчитано, что сквозное обучение модели с одним триллионом параметров займет примерно 5000 Zflops (т. е. 5, за которыми следуют24 нуля; эта оценка основана на исследовании OpenAIlaw of scaling). Это означает, что для обучения такой модели требуется 4000 A100 для работы с 50% вычислительной эффективностью в течение примерно 100 дней.

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

На самом деле одна из самых больших моделей,GPT-3Размер обучающей партии составляет около 1500. Если используется около 4000 графических процессоров, даже если мы можем установить размер пакета равным 4000, размер пакета на каждой карте будет только 1, что повлияет на масштабируемость.

Понимать компромиссы между параллелизмом данных, параллелизмом моделей и параллелизмом конвейера.

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

  • **Эффективность использования памяти. **Параллелизм данных реплицирует модель и оптимизатор среди всех рабочих процессов, поэтому он неэффективен с точки зрения использования памяти. DeepSpeed ​​разработанZeRO, который представляет собой серию оптимизаторов, используемых для повышения эффективности использования памяти при параллелизме данных. Эта работа основана на фазе 1 ZeRO, которая делит объем состояния оптимизатора между рабочими процессами для уменьшения избыточности.

  • **Вычислительная эффективность: **По мере увеличения степени параллелизма объем вычислений, выполняемых каждым работником, остается постоянным. Параллелизм данных может масштабироваться почти линейно в небольшом масштабе. Однако накладные расходы на связь, связанные с уменьшением градиентов между рабочими, положительно связаны с размером модели, поэтому, когда модель велика или пропускная способность связи низка, эффективность вычислений ограничена. .Накопление градиентаЭто распространенная стратегия, используемая для амортизации затрат на связь. Это еще больше увеличит размер партии, используйте локальноmicro-batchПосле многократного прямого и обратного распространения для накопления градиентов выполняется уменьшение градиента и обновления оптимизатора.

модельный параллелизмЭто широкая категория технологий. Он делит слои модели между несколькими рабочими. По самой своей природе вычисление и передача информации о параллелизме модели зависит от структуры модели, поэтому при реализации требуется много усилий. DeepSpeed ​​заимствует у NvidiaMegatron-LMдля обеспечения массового параллелизма моделей для языковых моделей на основе Transformer. Модельный параллелизм сокращает использование памяти пропорционально количеству рабочих процессов и является наиболее эффективным с точки зрения использования памяти из трех параллелизмов. Но цена наименее вычислительно эффективна.

  • **Эффективность использования памяти. **Параллелизм модели сокращает использование памяти пропорционально количеству рабочих процессов. Важно отметить, что это единственный способ уменьшить активную память одного сетевого уровня. DeepSpeed ​​еще больше повышает эффективность использования памяти, разделяя активную память между параллельными рабочими моделями.

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

конвейерный параллелизмУчебный движок также включен в этот выпуск DeepSpeed! Конвейерный параллелизм делит слои модели на слои, которые можно обрабатывать параллельносцена. Когда этап завершает прямой проход микропакета, активационная память передается на следующий этап конвейера. Точно так же, когда следующий этап завершает обратное распространение, градиенты передаются обратно через конвейер. Несколько микропакетов должны быть рассчитаны одновременно, чтобы обеспечить параллельное вычисление различных этапов конвейера. Было разработано несколько подходов для компромисса между памятью, вычислительной эффективностью и поведением сходимости, например:PipeDream. Подход, принятый DeepSpeed, заключается в достижении параллелизма за счет накопления градиентов и сохранении той же конвергенции, что и при традиционном параллельном обучении данных и модели для того же общего размера пакета.

  • **Эффективность использования памяти.** Сокращение памяти при параллелизме конвейера пропорционально количеству этапов конвейера, поэтому размер модели можно масштабировать линейно с количеством рабочих процессов. Однако конвейерный параллелизм не уменьшает объем памяти, занимаемой функциями активации на каждом уровне. Кроме того, каждый рабочий процесс должен хранить активацию для каждого микропакета, работающего одновременно. Это приводит к тому, что память активации для первой стадии конвейера примерно такая же, как общая память активации для одной партии mirco. Для модели с триллионом параметров потребуется около 19 ГБ активной памяти для микропакета, что составляет почти половину общей видеопамяти нового графического процессора Nvidia A100.

  • ** Вычислительная эффективность: ** Конвейерный параллелизм имеет самый низкий трафик, потому что его трафик пропорционален только размеру значений активации каждого слоя на каждой границе этапа. Однако он не может расширяться бесконечно. Как и параллелизм модели, увеличение размера конвейера снижает объем вычислений на каждом этапе конвейера, что снижает соотношение вычислений к обмену данными. Для достижения хорошей вычислительной эффективности конвейерный параллелизм также требует, чтобы вычислительная нагрузка каждого этапа была идеально сбалансирована.

Кроме того, параллелизм конвейера создает пузыри в начале и в конце каждой партии из-за необходимости пополнения или опорожнения трубопровода. Обучение с 4-кратным или 8-кратным увеличением количества этапов конвейера (и размера пакета) для шагов накопления градиента обеспечивает масштабируемость 81% и 90% соответственно по сравнению с одним этапом конвейера.

Одновременная эффективность использования памяти и высокая вычислительная эффективность благодаря трехмерному параллелизму.

Параллелизм данных, моделей и конвейеров играет определенную роль в улучшении памяти и вычислительной эффективности. Рисунок 1 иллюстрирует нашу 3D-стратегию.

**Эффективность использования памяти: **Сначала разделите слои модели на разные этапы конвейера, а затем параллельно разделите слои каждого этапа по модели. Эта 2D-композиция одновременно уменьшает объем памяти, потребляемой моделью, оптимизатором и функцией активации. Однако мы не можем разбивать модель бесконечно, не вводя накладные расходы на связь, что ограничивало бы вычислительную эффективность.

**Эффективность вычислений.** Чтобы масштабировать число рабочих сверх того, что может поддерживать параллелизм модели и конвейера без ущерба для эффективности вычислений, мы использовали параллелизм данных с поддержкой ZeroRO (ZeRO-DP). ZeRO-DP может не только еще больше повысить эффективность использования памяти за счет разделения количества состояний оптимизатора, но и масштабироваться до любого количества графических процессоров с минимальными затратами на связь, используя отношения сопоставления на основе топологии связи.

Трехмерное картографирование на основе топологии связи(фигура 2):: Используя два ключевых архитектурных свойства, мы тщательно отображаем каждое измерение в трехмерном параллелизме на рабочие процессы для максимальной вычислительной эффективности.

  1. Оптимизация пропускной способности внутриузловой и межузловой связи: модельный параллелизм имеет наибольшую коммуникационную нагрузку из трех стратегий, поэтому мы отдаем приоритет размещению модельных параллельных рабочих групп внутри узлов, чтобы воспользоваться преимуществами большей пропускной способности внутри узла. Здесь мы выполняем параллелизм моделей с тензорными срезами на базе NVIDIA Megatron-LM. Когда модельная параллельная группа не заполняет всех рабочих в узле, мы выбираем размещение параллельной группы данных внутри узла. В противном случае параллелизм данных выполняется между узлами. Конвейерный параллелизм имеет минимальный трафик, поэтому мы можем планировать этапы конвейера между узлами, не ограничиваясь пропускной способностью канала связи.
  2. ** Увеличьте пропускную способность за счет параллельного обмена данными. ** Количество градиентов, которые должны передаваться каждой параллельной группе данных, уменьшается линейно с масштабом конвейера и параллелизма модели, поэтому общий объем обмена меньше, чем при использовании только параллелизма данных. Кроме того, каждая группа параллельных данных обменивается данными независимо внутри небольшого подмножества рабочих локально, а межгрупповое взаимодействие может быть распараллелено друг с другом. В результате эффективная пропускная способность параллельной передачи данных увеличивается за счет сокращения трафика и повышения локальности и параллелизма.

该图显示了一个有 32 个 worker 进行 3D 并行的例子。神经网络的各层分为四个流水线阶段。每个流水线阶段中的层在四个模型并行 worker 之间进一步划分。最后,每个流水线阶段有两个数据并行实例,且 ZeRO 在这 2 个副本之间划分优化器状态量。

Рисунок 1: Пример 3D-параллелизма с 32 рабочими процессами. Слои нейронной сети разделены на четыре этапа конвейера. Уровни на каждом этапе конвейера далее делятся между четырьмя параллельными рабочими моделями. Наконец, на каждом этапе конвейера есть два экземпляра с параллельными данными, и ZeRO делит объем состояния оптимизатора между этими двумя репликами.

彩色块显示图 1 中的 worker 到八个节点(每个节点有四个 GPU)的系统上的 GPU 的映射。同一颜色的 GPU 在同一节点上。

Рисунок 2: Сопоставление рабочих процессов на рисунке 1 с графическими процессорами в системе из восьми узлов с четырьмя графическими процессорами в каждом. GPU одного цвета находятся на одном узле.

Узнайте больше о параллельном обучении моделей с триллионами параметров в 3D

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

Сочетая параллелизм моделей и параллелизм конвейеров, трехмерный параллелизм обеспечивает превосходную эффективность использования памяти и эффективность вычислений на нескольких узлах. Параллелизм моделей повышает эффективность хранения памяти активации и величин состояния модели в узлах, а параллелизм конвейера обеспечивает эффективное хранение состояния модели между узлами без ущерба для вычислительной эффективности по сравнению с использованием только параллелизма модели. В примере из триллиона параметров с размером микропакета 1 после использования контрольной точки активации и описанного выше 3D-параллелизма состояние модели потребляет 30 ГБ видеопамяти, а разделенное значение активации — 2,5 ГБ памяти. В результате общий объем памяти составляет 32,5 ГБ, что позволяет использовать графический процессор Nvidia A100 с 40 ГБ памяти для размещения и обучения такой модели.

В сочетании с модельным параллелизмом и конвейерным параллелизмом конвейерный параллелизм может обеспечить высокую вычислительную эффективность с минимальными издержками при работе с очень маленькими партиями. При 8-процессорном параллелизме моделей использование микропакета из 1 микропакета на модель приведет к эффективному размеру микропакета 1/8 на GPU. Следовательно, использование шага накопления градиента с 8-кратным параллелизмом конвейера сделает общий совокупный размер пакета равным 1 на каждый GPU, а параллельная обработка конвейера может обеспечить вычислительную эффективность 90%. В сочетании с параллелизмом данных это дает общий эффективный размер пакета 4096 на 4096 графических процессорах и по-прежнему обеспечивает эффективность конвейера 90%.

Но как параллелизм данных влияет на эффективность вычислений? Разве параллелизм данных не требует для эффективности больших пакетов данных на GPU?

Параллелизм моделей может уменьшить эффективный размер пакета на GPU до уровня менее 1. Это позволяет параллелизму конвейера скрыть накладные расходы конвейера даже при небольших пакетах. Обратите внимание, что, используя конвейерный параллелизм между узлами, мы можем иметь узлы, параллельные данным, на каждом этапе конвейера, независимо друг от друга взаимодействующие между узлами и параллельно с другими этапами конвейера. Фактически, в полностью подключенной сетевой топологии, распространенной в высокопроизводительных кластерах графических процессоров, это имеет важные последствия для эффективной пропускной способности связи, доступной для параллельного обучения данных. Поскольку каждый узел на этапе конвейера может обмениваться данными параллельно с соответствующим ему узлом, работающим параллельно с данными, эффективная пропускная способность связи пропорциональна количеству этапов конвейера. При настройке 64 параллельных этапов конвейера эффективная пропускная способность становится в 64 раза больше, чем пропускная способность к одному узлу и от него. Конвейерный параллелизм обеспечивает параллелизму данных такую ​​большую эффективную полосу пропускания, которая позволяет эффективно масштабировать параллелизм данных даже в небольших пакетах с очень низким соотношением вычислений и обмена данными.

Обучение моделей с триллионами параметров при линейной масштабируемости

DeepSpeed ​​можно обучить только на 800 графических процессорах Nvidia V100 стриллионПараметрическая языковая модель (рис. 3). Мы показываем размер модели и пропускную способность обучения, а также наблюдаем, что и память, и вычислительная эффективность растут линейно с масштабированием размера модели. В различных конфигурациях мы можем обучить около 1,4 миллиарда параметров на каждый GPU, что является максимальным размером модели, который один GPU может поддерживать без нехватки памяти, что указывает на идеальную масштабируемость памяти. Мы также добились почти идеального линейного масштабирования вычислительной эффективности с пропускной способностью 47 Тфлопс на GPU V100. Это впечатляющая масштабируемость и пропускная способность для вышеупомянутого оборудования.

Рисунок 3: График размера модели (в миллиардах параметров) и пропускной способности обучения (в Пфлопс) в зависимости от количества графических процессоров. DeepSpeed ​​может обучать модели с 1 триллионом параметров, используя 800 графических процессоров NVIDIA V100 с тензорными ядрами и 32 ГБ памяти. Каждая конфигурация используетNVIDIA Megatron-LMОбеспечивается 16-канальный параллелизм моделей, а остальные GPU отвечают за конвейерный параллелизм. Модель с триллионами параметров имеет 298-слойный преобразователь с размером скрытого слоя 17408, длиной обученной последовательности 2048 и размером пакета 2048. Для небольших моделей мы уменьшили количество слоев Transformer и размер партии в соответствии с количеством графических процессоров.

Подробное изучение того, как 3D-параллелизм ускоряет обучение масштабных моделей GPT-3.

Рисунок 4: Производительность системы для обучения масштабной модели GPT-3 со 180 миллиардами параметров с использованием 800 графических процессоров параллельно с использованием 2D и 3D. Модель имеет 100 слоев Transformer с размером скрытого слоя 12288 и 96 головок внимания. Размер партии, используемый для обучения, составляет 2048, а длина последовательности — 2048. ZeRO-1 также можно использовать в сочетании с параллелизмом данных. P, M и D обозначают параллельные измерения конвейера, модели и данных соответственно.

На рисунке 4 мы используем последнюю модель с более чем 175 миллиардами параметров.GPT-3Архитектура модели как эталон трехмерного параллелизма:

  • Сначала мы оценили2D конфигурация(С1-С3). Настройте C1 и C2 для использования только конвейерной обработки и параллелизма моделей — они могут обучать модель, но приводят к снижению пропускной способности и снижению использования графического процессора из-за избыточного факторинга модели. C3 пытается использовать только конвейерную обработку и параллелизм данных, но не может решить проблему нехватки памяти без уменьшения количества активаций за счет параллелизма моделей Мегатрона.
  • 3D-конфигурация(C4-C10) последовательно увеличивают параллелизм конвейера; конфигурация в середине, которая уравновешивает параллелизм, может достичь наилучшей производительности, реализовать три самых высоких показателя эффективности видеопамяти, вычислений и связи.
  • Лучший 3D-метод достигает 49 Тфлопс на GPU, что на 40% больше, чем теоретический пик аппаратного обеспечения.
Посмотрите, как гибридный параллелизм ускоряет обучение GPT-2 в 7 раз на кластерах с низкой пропускной способностью.

Мы обучаем модель GPT-2 с 1,5 миллиардами параметров и демонстрируем коммуникационные преимущества гибридного параллелизма на рис. 5. Чтобы выделить коммуникационную фазу обучения, обучение выполняется на кластере из четырех узлов с низкой пропускной способностью между узлами:

  • модельный параллелизмВ этом случае нет преимущества, поскольку модель меньше, а полоса пропускания внутри узла ниже.
  • конвейерный параллелизмОбъем связи на порядок меньше, чем в случае конфигурационных данных и параллелизма модели. При небольшом размере партии скорость обучения увеличивается в 7 раз.
  • параллелизм данныхНакладные расходы на связь амортизируются за счет увеличения размера пакета за счет накопления градиента, но при больших размерах пакета конвейерный параллелизм по-прежнему настроен на работу в два раза быстрее, чем параллелизм данных.
  • Гибридный конвейер и параллельная конфигурация данныхУзких мест градиентной связи можно избежать, ограничивая группы параллельных данных графическими процессорами внутри узлов, поэтому градиентная связь выигрывает от более высокой пропускной способности внутри узла.

Рисунок 5: Пропускная способность в зависимости от размера пакета при обучении GPT-2 с длиной последовательности 1024 (параметры 1,5 млрд). Обучение проводилось на четырех узлах, каждый из которых имел четыре графических процессора V100 с 16 ГБ памяти. Графические процессоры связаны с пропускной способностью внутри узла 50 Гбит/с и пропускной способностью между узлами 4 Гбит/с. DP означает параллелизм данных с поддержкой ZeRO-1. Все методы масштабируют размер пакета за счет увеличения количества шагов для накопления градиента.

ZeRO-Offload: обучение моделей в 10 раз большего размера на одном графическом процессоре

ZeRO-Offload увеличивает максимальный размер модели, которая может быть эффективно обучена с меньшим количеством ресурсов графического процессора за счет использования вычислительных ресурсов и ресурсов хранения как графического процессора, так и центрального процессора. Это позволяет нам обучать модели со 130 миллиардами параметров на одном V100, что в 10 раз превышает текущий уровень техники, сохраняя при этом высокую пропускную способность обучения 30 Тфлопс на GPU.

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

在单 GPU 上使用默认的 PyTorch 和 ZeRO-Offload 能训练的最大模型规模的柱状图。

Рис. 6. Максимальный размер модели, которую можно обучить на одном графическом процессоре с PyTorch и ZeRO-Offload по умолчанию.

Основная технология, лежащая в основе ZeRO-Offload,ZeRO-2Состояние оптимизатора и градиенты выгружаются в память ЦП на основе . Этот метод позволяет ZeRO-Offload минимизировать потерю вычислительной эффективности, вызванную копированием в ЦП, при этом достигая той же эффективности, что и ZeRO-2, а иногда даже превосходя ее. На следующей диаграмме показана архитектура Zero-OffLoad:

Рисунок 7: Обзор ZeRO-Offload.

Посмотрите, как ZeRO-Offload обучает модели с миллиардами параметров на одном графическом процессоре

Для моделей обучения с миллиардами параметров, таких как GPT и T5, требуется несколько графических процессоров для хранения модели и состояния. Обучение больших моделей в основном устраняет ограничения памяти за счет параллелизма моделей между графическими процессорами. Недавно мы выпустили ZeRO, оптимизатор с эффективным использованием памяти, который распределяет состояние модели (состояние оптимизатора, градиенты и параметры модели) между несколькими параллельными графическими процессорами, позволяя модели с несколькими миллиардами параметров обучаться параллельно. Тем не менее, ZeRO по-прежнему требует большого количества графических процессоров с параллельными данными для сохранения состояния разделенной модели, поэтому только несколько человек имеют право на такое обучение моделей.

ZeRO-Offload упрощает обучение больших моделей с помощью одного графического процессора. Чтобы обучать модели с миллиардами параметров без использования нескольких графических процессоров, ZeRO-Offload наследует метод разделения состояний и градиентов оптимизатора ZeRO-2. В отличие от ZeRO-2, ZeRO-Offload не сохраняет часть состояния оптимизатора и градиентов на каждом графическом процессоре, а перемещает их в собственную память. Состояние оптимизатора сохраняется в памяти на протяжении всего процесса обучения. Градиент вычисляется на GPU в обратном процессе расчета и усредняется через reduce-scatter, после чего каждый параллельный процесс данных выгружает свой собственный усредненный градиент в CPU (g offload на рисунке 7) и выбрасываете те части, за которые вы не отвечаете за.

Как только градиент находится на ЦП, состояние оптимизации секционирования обновляется на ЦП параллельно (рис. 7).p update). После завершения обновления разделенные параметры возвращаются в графический процессор и обновляются с помощью операции сбора всех данных (рис. 7).g swap). Zero-Offload также перекрывает связь, используя разные потоки CUDA (например,g offloadиg swap) и вычислений (таких как обратное распространение иp update) для повышения эффективности обучения.

Преимущества ZeRO-Offload с точки зрения размера модели, скорости обучения и масштабируемости

** 10-кратное масштабирование модели: ** На одном графическом процессоре V100 объемом 32 ГБ на рис. 6 показано, что PyTorch может обучать модель с 1,3 миллиардами параметров, а ZeRO-Offload может обучать модель с 13 миллиардами параметров, что в 10 раз больше, чем у ПиТорч. Это связано с тем, что ZeRO-Offload сохраняет состояние оптимизатора, которое потребляет большую часть памяти графического процессора, в собственной памяти на протяжении всего процесса обучения, а также перемещает вычисленные градиенты в ЦП во время обратного распространения. Таким образом, сэкономленную память графического процессора можно использовать для обучения более крупных моделей.

**Эффективная производительность обучения:** Как показано на рисунке 8, при обучении модели с 10 миллиардами параметров использование ZeRO-Offload по-прежнему обеспечивает пропускную способность более 30 Тфлопс на каждый графический процессор, даже при использовании для обучения только одного графического процессора. И его пропускная способность растет. почти идеально линейно зависит от количества графических процессоров.

ZeRO-Offload — идеальное дополнение к ZeRO-2, позволяющее эффективно обучать большие модели на небольшом количестве графических процессоров. Используя память ЦП для уменьшения объема памяти ГП, необходимой для модели, ZeRO-Offload позволяет обучать большие модели на 1–16 ГП. На 32 графических процессорах производительность ZeRO-Offload немного выше, чем у ZeRO-2; улучшение производительности происходит за счет памяти графического процессора, сохраненной ZeRO-Offload, что позволяет нам обучать модель большими партиями, поэтому, несмотря на существование скопировать в CPU Overhead, эффективность вычислений на GPU все же можно повысить. При большем количестве графических процессоров (например, 64 и 128) ZeRO-2 превосходит ZeRO-Offload, потому что оба теперь могут запускать пакеты одинакового размера, а ZeRO-2 не требует дополнительных затрат на перемещение данных в ЦП, а обновления оптимизатора на графическом процессоре выполняются намного быстрее, чем на ПРОЦЕССОР. В целом, ZeRO-Offload дополняет ZeRO-2 и расширяет семейство оптимизаций ZeRO от одного устройства до тысяч устройств с оптимизацией для обучения больших моделей.

使用 ZeRO-Offload 和 ZeRO-2 在 128 张 GPU 上训练有 100 亿参数的 GPT-2 模型的的吞吐量的柱状图。

Рисунок 8: Сравнение пропускной способности обучения ZeRO-Offload и ZeRO-2 для обучения модели GPT-2 с 10 миллиардами параметров с использованием 128 графических процессоров.

DeepSpeed ​​Редкое внимание: выполнение 10-кратных длинных последовательностей в 6 раз быстрее

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

Чтобы обойти это ограничение,DeepSpeed ​​предоставляет набор разреженных ядер внимания— Это инструментальный метод, который снижает требования к вычислениям и памяти для вычисления внимания на порядки за счет разреженных вычислений блоков. Этот набор инструментов не только устраняет узкое место в памяти при вычислении внимания, но и делает разреженные вычисления очень эффективными. Его API можно легко интегрировать в любую модель на базе Transformer. В дополнение к предоставлению различных разреженных структур, он также обладает гибкостью для обработки любых определяемых пользователем блочных разреженных структур.

Более конкретно, разреженное внимание (SA) может быть разработано для вычисления локального внимания между соседними токенами или для получения глобального внимания путем вычисления суммарных токенов с использованием локального внимания. Кроме того, SA поддерживает как стохастическое внимание, так и любую комбинацию локального, глобального и стохастического внимания, как показано в синих, оранжевых и зеленых блоках на рисунке 10. Это позволяет SA уменьшить объем памяти до \(O(wn)\), где 1\(

彩色小方块显示可变的稀疏度结构

Рисунок 10: Переменная разреженная структура

**Эффективная реализация на графическом процессоре**. Хотя базовая реализация разреженного внимания экономит память, в вычислительном отношении она может уступать плотным вычислениям. В основном это связано с разрозненным характером доступа к памяти из-за разреженных данных. Разработка эффективных разреженных ядер часто бывает сложной задачей, особенно на графических процессорах. DeepSpeed ​​обеспечиваетTritonЭффективное ядро ​​разреженного внимания, разработанное в . Эти ядра структурированы по блочной разреженной парадигме, что обеспечивает выровненный доступ к памяти, уменьшает разветвление потоков графического процессора и балансирует рабочую нагрузку на процессор.

Производительность системы:Как показано на рисунке 11, SA поддерживаетпоследовательность в 10 раз длиннееиВычисления до 6,3 раз быстрее. График слева показывает максимальную длину последовательности, которую можно запустить в BERT-Base и BERT-Large. Наши эксперименты имеют следующие три настройки: плотный режим, плотный режим с контрольными точками активации и разреженный (SA) режим с контрольными точками активации. По сравнению с плотным режимом BERT-Base и BERT-Large последовательности SA длиннее в 10 и 16 раз соответственно. Кроме того, SA уменьшает общий объем вычислений и повышает скорость обучения по сравнению с плотным режимом: улучшенная эффективность увеличивается с длиной последовательности до 6,3x для BERT-Base и до 6,3x для BERT-Base Large, до 5,3 раз.

Рисунок 11: Максимальная поддерживаемая длина последовательности для модели BERT (слева); время обучения BERT-Base (в центре) и BERT-Large (справа) с различной длиной последовательности на одном графическом процессоре NVIDIA V100.

Посмотрите, как SA делает свою точность сравнимой или лучше, чем полная концентрация внимания

Связанная работа, требующая рассеянного внимания (Sparse Transformer,Longformer,BigBird) оба показывают более высокую точность, чем полное внимание, что согласуется с нашим опытом. В дополнение к меньшим затратам памяти и более быстрым вычислениям мы также наблюдали более высокую точность и более быструю сходимость SA в производственных моделях. На рисунке ниже показано обучение на основе BERT.понимание длинного текста(длина последовательности 2048) Точность производственной модели. Эксперименты выполняются в следующих трех условиях: плотное обучение с нуля, обучение SA с нуля и обучение SA продолжается с плотных контрольных точек с длиной последовательности 512. Мы заметили, что для предварительной подготовки с нуля SA сходится быстрее и с большей точностью, чем плотная настройка. Кроме того, продолжение обучения предварительно обученной контрольной точки с SA работает еще лучше с точки зрения времени и точности.

Рисунок 12: Точность приложений для понимания длинных текстов

Посмотрите, как SA сравнивается с последней версией LongFormer

Мы сравниваем SA с Longformer, современной разреженной структурой и ее реализацией. В наших экспериментах SA использует "Fixed«Разреженность. Обе реализации сопоставимы по точности. С точки зрения производительности системы SA превосходит Longformer как в обучении, так и в логическом выводе:

  • В 1,5 раза быстрее работает предварительно обученный MLM на Wikitext103
  • Вывод в 3 раза быстрее на BERT-Base (размер пакета 1, длина последовательности 2048)

Гибкость для обработки любой блочной разреженной структуры:Пакет разреженного внимания DeepSpeed ​​не нацелен на какую-либо конкретную разреженную структуру, поэтому он может эффективно помочь исследователям моделей исследовать любую блочную разреженную структуру. В настоящее время мы добавляем популярные разреженные структуры, такие какFixed(из OpenAI Sparse Transformer), [BigBird](АР Вест V.org/PDF/2007.14….pdf) (от Google) и BSLongformer (AI2Longformerблочная разреженная реализация). Мы также определяем шаблон с «переменной» структурой, показанный на рис. 10, который можно использовать для простой настройки блочной разреженной структуры любого случайного, локального или глобального шаблона внимания.

1 бит Адам: в 5 раз меньше трафика и в 3,4 раза быстрее обучение

Масштабируемое обучение больших моделей, таких как BERT и GPT-3, требует тщательной оптимизации на основе дизайна модели, архитектуры и функциональности системы. С системной точки зрения эффективность связи стала основным узким местом, особенно в коммерческих системах, использующих стандартный протокол TCP и имеющих ограниченную пропускную способность сети.

Компрессия связи — важный метод сокращения времени обучения в таких системах. Одним из наиболее эффективных способов сжатия сообщений является сжатие с компенсацией ошибок, которое обеспечивает стабильную скорость сходимости даже при 1-битном сжатии. Однако новейшие методы компенсации ошибок подходят только для некоторых простых оптимизаторов, линейно связанных с градиентами, таких как стохастический градиентный спуск (SGD) и импульсный SGD. Эти методы нельзя интегрировать с нелинейными оптимизаторами, такими как Адам, которые обеспечивают наилучшую скорость сходимости и точность во многих задачах, включая обучение моделей, подобных BERT.

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

Понимать основы классических методов сжатия

Одним из методов сжатия связи является 1-битное сжатие, которое можно выразить следующим образом:

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

Идею компенсации ошибок можно резюмировать так: 1) выполнить сжатие, 2) запомнить ошибку сжатия, а затем 3) добавить ошибку сжатия обратно на следующей итерации. Для SGD сжатие ошибок эквивалентно:

где \(C(⋅)\) — 1-битный оператор сжатия. Преимущество этого сжатия ошибок заключается в том, что исторические значения ошибок сжатия \(e_t\) и \(e_t-1\) в конечном итоге компенсируют друг друга, что делает:

Было показано, что эта стратегия работает для всех алгоритмов оптимизации, зависящих от линейного градиента, таких как SGD и Momentum SGD.

Узнайте о проблемах применения компенсации ошибок к Адаму

Мы предоставляем обзор алгоритма Адама ниже. Правила обновления следующие:

Термин дисперсии \(v_t\) и градиент \(g_t\) не связаны между собой, как показано в формуле на рисунке выше. Если мы выполним обычную компенсацию ошибок для Адама, мы обнаружим (см. рис. 13), что Адам не сможет сходиться.

Рисунок 13: Сжатие с компенсацией ошибок не работает с Adam из-за нелинейной зависимости от градиентов

Сжатие связи с 1-битным Адамом

Чтобы сжать общение при использовании оптимизатора Adam, мы разработали1 бит Адам, который устраняет нелинейные зависимости в градиентах посредством предварительной обработки. Мы наблюдаем, что величина изменения дисперсии нелинейного члена (\(v_t\)) значительно уменьшается после нескольких эпох обучения, после чего установка \(v_t\) на константу не меняет скорость сходимости. Таким образом, предлагаемый 1-битный оптимизатор Адама состоит из двух частей (как показано на рис. 14): фазы прогрева, которая по существу представляет собой исходный алгоритм Адама. Стадия сжатия, которая поддерживает постоянный член дисперсии и сжимает оставшийся линейный член (т.е. импульс) в 1-битное представление.

Стадия сжатия алгоритма управляется пороговым параметром (показан на рисунке 14). Когда мы обнаруживаем изменение «дисперсии» ниже определенного порога, мы переключаемся на стадию сжатия. Наши исследования показывают, что фаза разминки занимает всего 15-20% от общего количества тренировочных шагов.

Узнайте больше о базовом механизме 1-bit Adam

Вес 1-битного Адама обновляется в соответствии со следующей формулой. во-первыхiрабочие на этапе уплотнения:

a screenshot of text

a screenshot of a cell phone

Рисунок 14: Сравнение процессов распределенного обучения с использованием классического алгоритма Адама и алгоритма Адама с использованием 1-битного сжатия

Решение системной проблемы 1-битного Адама

В дополнение к алгоритмическим проблемам есть две системные проблемы при применении 1-битного Адама в системе обучения. Во-первых, нам нужно эффективное ядро ​​с возможностью преобразования импульса в 1-битное представление. Во-вторых, нам нужны эффективные схемы связи для передачи сжатого импульса между разными графическими процессорами. Целью сжатия является сокращение общего времени обучения, чтобы можно было использовать стандартные системы с ограниченной пропускной способностью для обучения больших моделей. Мы решаем эти сложные проблемы в DeepSpeed ​​и полностью оптимизируем реализацию 1-bit Adam для сценариев, в которых проводится обучение на системах с ограниченной эффективностью связи.

Преимущества 1-битного Адама в системах с ограниченной связью

1-битный Адам обеспечивает ту же способность сходимости, что и Адам, и может уменьшать дов 5 раз больше трафика, при использовании для предтренировочной задачи BERT-Large, доУвеличение пропускной способности до 3,5 раз, при использовании для задач тонкой настройки SQuAD, дов 2,7 раза выше пропускная способность. Улучшение сквозной пропускной способности обусловлено увеличением скорости в 6,6 раз (рис. 15 слева) и 6,2 раза (рис. 15 справа), наблюдаемым на этапе сжатия. Стоит отметить, что наш 1-битный оптимизатор Adam очень хорошо масштабируется в системах Ethernet 40 Гбит/с, а его производительность сравнима с масштабируемостью Adam в системах InfiniBand QDR 40 Гбит/с. Мы отмечаем, что на основе эталонного теста iPerf эффективная пропускная способность Ethernet 40 Гбит/с составляет 4,1 Гбит/с, в то время как на основе микротеста производительности InfiniBand InfiniBand обеспечивает почти пиковую пропускную способность 32 Гбит/с.

Рисунок 15: 1-битная масштабируемость Adam для предварительной тренировки BERT-Large (слева) и тонкой настройки SQuAD (справа) на графических процессорах NVIDIA V100. Размер пакета для предварительной подготовки BERT составляет 16/GPU, а для точной настройки SQuAD — 3/GPU.

Погрузитесь в результаты оценки 1-битного Адама

Та же конвергенция, что и у Адама: основной проблемой при использовании 1-битного Адама является скорость сходимости. Мы обнаружили, что 1-битный Адам может достичь той же скорости сходимости и сравнимой производительности при использовании того же количества обучающих выборок, см. рис. 16.

Рисунок 16: Используя то же количество обучающих выборок, 1-битный Адам может сходиться, как Адам.

В таблице 1 показаны подробные результаты BERT-Base и BERT-Large. Мы видим, что производительность 1-битного Адама сравнима с исходной моделью как для несжатого, так и для сжатого случаев, а некоторые даже лучше исходной модели.

Таблица 1: Проверка корректности 1-битного Адама на различных тестовых заданиях

До 5 раз меньше трафика:1-битный Адам обеспечивает ту же способность сходимости, что и Адам, и уменьшает трафик в 16 раз на этапе сжатия (для 16-битного (FP16) обучения). Для предварительно обученной модели BERT общая коммуникация сокращается в 5 раз, поскольку мы наблюдаем, что фаза разогрева составляет всего 15% от сквозного времени обучения.

Формула соотношения трафика между оригинальным Адамом и 1-битным Адамом выглядит следующим образом:

1 / (разминка + (1 – разминка)/16)

1-bit Adam ускоряет обучение BERT-Large в 3,5 раза:Мы представляем результаты обучения BERT-Large на двух системах с ограниченными ограничениями пропускной способности: 1) 40 Гбит/с Ethernet (рис. 17 слева) и 2) 40 Гбит/с InfiniBand QDR (рис. 17 справа). На этапе сжатия мы обнаружили увеличение пропускной способности системы в 6,6 раз при использовании Ethernet, увеличение пропускной способности системы в 2 раза при использовании InfiniBand и увеличение сквозной скорости в 3,5 и 2,7 раза (включая этапы прогрева и сжатия). ), соответственно. 1-битный Адам в основном выигрывает от сокращения трафика (из-за сжатой реализации импульсной связи) и нашего пользовательскогоallreduceоперация, которая проходит эффективную 1-битную неблокирующую сборку иallgatherОперация реализована.

Примечательно, что также можно использовать LAMB вместо оптимизатора Adam для предварительного обучения BERT, уменьшая количество сообщений за счет увеличения общего размера пакета. Однако 1-битный Адам избегает этой сложной настройки гиперпараметров. По нашему опыту, настройка часто бывает более сложной при больших партиях. Кроме того, 1-битный Адам также очень подходит для работы с небольшими критическими размерами пакетов (не может хорошо сходиться при больших пакетах, таких как многие задачи тонкой настройки).

Рис. 17. Производительность обучения BERT-Large на Ethernet 40 Гбит/с (слева) и InfiniBand (справа) с 1-битным Адамом на этапе сжатия

1-битный Адам ускоряет задачи тонкой настройки SQuAD в 2,7 раза:1-bit Adam обеспечивает масштабируемость не только для крупномасштабных учебных задач, но и для таких задач, как тонкая настройка SQuAD. Как показано на рис. 18, 1-разрядная версия Adam хорошо масштабируется в системах на основе Ethernet и InfiniBand и обеспечивает до 6,2 раз более высокую пропускную способность (на этапе сжатия) в системах на основе Ethernet, обеспечивая ускорение в 2,7 раза от начала до конца. конец (25% в фазе прогрева и 75% в фазе сжатия). Для тонкой настройки SQuAD мы наблюдаем самый высокий балл F1 с общим размером партии 96. Большие размеры пакетов уменьшат скорость сходимости и потребуют дополнительной настройки гиперпараметров. Поэтому для масштабирования до 32 GPU мы запускаем небольшие партии значений 3-4 на каждом GPU. Это делает коммуникацию задач тонкой настройки трудоемкой и трудно масштабируемой. 1-битный Adam хорошо решает проблему масштабируемости, сокращая трафик в 3,4 раза без увеличения пакета, тем самым достигая сквозного ускорения в 2,7 раза.

Рис. 18. Производительность этапа сжатия при использовании 1-bit Adam в задаче тонкой настройки SQuAD по Ethernet 40 Гбит/с (слева) и InfiniBand (справа).


Пожалуйста, посетитеВеб-сайт DeepSpeedа такжеРепозиторий на гитхабедля кода, учебных пособий и документации по этим новым технологиям! Мы также интегрировали некоторые технологии вONNX Runtime.

О наших замечательных соавторах:

  • Мы благодарим нашего научного сотрудника Филиппа Тилле из Гарвардского университета. он прошелTritonКомпилятор работал с нами над ядром алгоритма разреженного внимания.
  • ZeRO-Offload был разработан с Джи Реном, стажером из UC Merced. Мы также благодарим Донг Ли из Калифорнийского университета в Мерседе, а также Бхарадваджа Пудипедди и Марал Месмахурошахи из Microsoft.L2L work, спасибо за обсуждение этой темы.
  • 1-битный Адам был разработан совместно со стажером Ханлином Тангом из Университета Рочестера.
  • Мы также ценим тесное сотрудничество с NVIDIA, особенно с командой Megatron-LM.

О команде DeepSpeed:

Мы группа исследователей и инженеров, увлеченных оптимизацией производительности крупномасштабных систем. Аммар Ахмад Аван, Конглонг Ли, Юсюн Хэ (руководитель группы). Недавно мы сосредоточились на системах глубокого обучения, оптимизируя скорость обучения, скорость конвергенции и скорость разработки систем глубокого обучения!

Если вы обнаружите ошибки в переводе или в других областях, требующих доработки, добро пожаловать наПрограмма перевода самородковВы также можете получить соответствующие бонусные баллы за доработку перевода и PR. начало статьиПостоянная ссылка на эту статьюЭто ссылка MarkDown этой статьи на GitHub.


Программа перевода самородковэто сообщество, которое переводит высококачественные технические статьи из ИнтернетаНаггетсДелитесь статьями на английском языке на . Охват контентаAndroid,iOS,внешний интерфейс,задняя часть,блокчейн,продукт,дизайн,искусственный интеллектЕсли вы хотите видеть более качественные переводы, пожалуйста, продолжайте обращать вниманиеПрограмма перевода самородков,официальный Вейбо,Знай колонку.