Слияние 5 основных измерений, мощный автоматический параллелизм
Автоматический параллелизм MindSpore обеспечивает 5-мерный параллелизм: параллелизм данных, параллелизм модели на уровне оператора, параллелизм модели конвейера, параллелизм модели оптимизатора и пересчет, а также органично интегрирует 5-мерный параллелизм на этапе компиляции графа. Комбинация этих 5-мерных параллельных методов составляет параллельную стратегию Пангу.
а. Параллелизм данных
Параллелизм данных — самый простой и широко используемый метод параллелизма, он разделяет обучающие данные (мини-пакеты), и каждое устройство получает одно из них, каждое устройство имеет полную модель. Во время обучения, после того как каждое устройство подверглось вычислению градиента, оно должно пройти синхронизацию градиента между устройствами перед обновлением параметров модели.
Б. Параллелизм модели на уровне оператора
Параллелизм модели на уровне оператора разделяет тензоры, задействованные в каждом операторе в модельной сети. MindSpore моделирует каждого оператора независимо, и у каждого оператора могут быть разные стратегии сегментации.
Возьмем в качестве примера оператор матричного умножения MatMul(x, w), где x — обучающие данные, а w — параметр модели, оба из которых являются двумерными матрицами. Параллельная стратегия ((4, 1), (1, 1)) означает разрезать x на 4 части по строке, оставляя w неразрезанным, если всего 4 устройства, то каждое устройство имеет срез x, а полное ж.
c. Параллелизм модели конвейера
Конвейерная модель делит модель на несколько параллельных этапов, а затем сопоставляет каждый мудрец с несколькими устройствами. Чтобы улучшить использование ресурсов устройства, мини-пакет делится на несколько микропакетов, чтобы разные устройства могли одновременно обрабатывать данные разных микропакетов.
Метод параллельного конвейера (Gpipe) требует, чтобы обратный расчет не начинался до тех пор, пока не будет завершен прямой расчет всех устройств, а обратный расчет может зависеть от прямого вывода, что приводит к накоплению памяти активации во время прямого расчета каждой карты. , Он пропорционален количеству микропакетов, что ограничивает количество микропакетов. В пайплайн-параллелизме MindSpore обратная сторона продвигается вперед.После завершения каждого микропакетного вычисления вычисляется обратная сторона, что эффективно сокращает время хранения активации и повышает общую эффективность параллелизма.
г. Параллелизм модели оптимизатора
Модель оптимизатора разделяет параметры и градиенты, задействованные в оптимизаторе, параллельно на нескольких устройствах. Взяв в качестве примера оптимизатор Адама, может быть несколько копий «импульса» того же размера, что и вес, которые необходимо использовать в расчетах. В случае параллелизма данных каждая карта имеет полный «импульс», и они пересчитываются на каждой карте, что приводит к пустой трате памяти и вычислений. Внедряя параллелизм оптимизатора, каждая карта сохраняет только части веса и «импульса», что может уменьшить статическую память каждой карты и повысить эффективность вычислений.
д. Перерасчет
Рематериализация Направленная на проблему накопления в памяти вывода форвард-оператора, что приводит к проблеме, что пик памяти слишком велик, вывод некоторых форвард-операторов отбрасывается и пересчитывается при использовании в обратная фаза. Это эффективно снижает пиковое использование памяти во время тренировки. Как показано на рисунке ниже, первый всплеск памяти устраняется путем пересчета, а второй всплеск памяти может быть устранен параллельно упомянутым ранее оптимизатором.
С этим 5-мерным параллельным измерением, как объединить их, чтобы воздействовать на Pangu, и как распределить сегментированную модель на каждое устройство, по-прежнему остается сложной проблемой. MindSpore автоматически распараллеливает и органично сочетает эти 5 измерений параллельно, что может обеспечить очень эффективные возможности распределенного обучения больших моделей.
На рисунке (b) ниже показана типичная древовидная аппаратная топология, где пропускная способность уменьшается по мере увеличения глубины дерева и возникают некоторые коллизии трафика. Чтобы воспользоваться этой функцией, цель MindSpore состоит в том, чтобы максимизировать коэффициент вычислительной связи, размещая параллельный режим (параллелизм на уровне оператора) с большим объемом связи между несколькими картами внутри сервера; между серверами в одной стойке; размещать часть, параллельная данным (параллельная с оптимизатором), между разными стойками, потому что связь может перекрываться с вычислениями, для которых требуется меньшая полоса пропускания.
В модели Pangu 200 миллиардов MindSpore делит 64 слоя на 16 этапов, и каждый этап содержит 4 слоя. В каждом слое тензоры сегментируются параллельно на уровне оператора.
Как показано на рисунке ниже, параметры Q, K и V фактически разделены на 8 частей (по столбцам), входной тензор (по строке) разделен на 16 частей, а выходной тензор разделен на 128 частей ( 8*16). Конфигурация пересчета настраивается на каждом уровне, то есть избыточная сумма вычислений, введенная пересчетом, не будет превышать сумму вычислений одного слоя. Всего MindSpore использовала 2048 процессоров Ascend для обучения Pangu.
MindSpore скрывает детали сложной параллельной реализации извне, делая ее такой же простой, как написание сценария модели для одной машины. На основе автономных сценариев пользователи могут реализовать многомерный гибридный параллелизм с меньшими затратами на настройку. На рисунке ниже представлена упрощенная версия сценария Pangu, в котором жирный красный шрифт представляет параллельную стратегию в MindSpore. Если красный полужирный шрифт удален, это автономный сценарий.
Межуровневая совместная оптимизация вычислений графа для полного использования экстремальной производительности оборудования.
В дополнение к крупномасштабной автоматизации между узлами, в узле с одной картой MindSpore дополнительно использует свою вычислительную мощность за счет межуровневой совместной оптимизации уровней и уровней операторов.
В традиционных сетях NN объем и сложность вычислений, выполняемых разными операторами, также различаются. Например, LayerNorm состоит из 11 основных операторов, а Add имеет только 1 базовый оператор. Это определение оператора, основанное на точке зрения пользователя, обычно не может полностью использовать вычислительную мощность аппаратных ресурсов. Из-за чрезмерно больших и сложных операторов обычно трудно создавать высокопроизводительные операторы с лучшей сегментацией. Таким образом, коэффициент использования оборудования снижается; для операторов со слишком небольшим объемом вычислений, поскольку вычисление не может эффективно скрыть служебные данные, перемещаемые, это также может вызвать задержку простоя в вычислении, тем самым снижая коэффициент использования оборудования.
Чтобы повысить коэффициент использования оборудования, MindSpore использует технологию оптимизации слияния графовых вычислений для совместной оптимизации уровня и уровня оператора, а также реорганизует и объединяет «операторы простоты использования с точки зрения использования пользователем», а затем преобразует их в «операторы с точки зрения аппаратного исполнения». Высокопроизводительные операторы», тем самым полностью улучшая использование аппаратных ресурсов, тем самым повышая производительность всей сети. Конкретный процесс оптимизации показан на следующем рисунке:
Взяв в качестве примера оператор LayerNorm, путем разделения и реорганизации операторов 11 небольших операторов образуют одного оператора и 2 оператора слияния. Эти реорганизованные операторы могут генерировать более производительных операторов, что значительно сокращает общее время работы сети.
В модели Пангу слияние графов и вычислений помогло сократить общее время обучения более чем на 20 %. Кроме того, для других NLP, CV и других задач слияние графов имеет хорошие показатели оптимизации производительности.