Введение в смесь экспертов

Знакомство с миром экспертов в красоте и моде

С выпуском Mixtral 8x7B (объявление, модель карты), класс трансформера стал самой горячей темой в сообществе открытого искусственного интеллекта: смесь экспертов, или MoEs в краткой форме. В этом блоговом посте мы рассмотрим строительные блоки MoEs, как они обучаются и какие компромиссы нужно учитывать при использовании их для вывода.

Давайте погрузимся!

Содержание

Кратко

MoEs:

  • Обучаются намного быстрее чем плотные модели
  • Имеют быстрый вывод по сравнению с моделью с тем же количеством параметров
  • Требуют большого объема VRAM, так как все эксперты загружены в память
  • Сталкиваются с множеством вызовов при точной настройке, но последние работы с настройкой инструкций MoE обнадеживают

Давайте погрузимся в это!

Что такое Mixture of Experts (MoE)?

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

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

Итак, что же такое MoE? В контексте моделей-трансформеров MoE состоит из двух основных элементов:

  • Узлы Sparse MoE используются вместо плотных слоев прямого распространения (FFN). В слоях MoE есть определенное количество “экспертов” (например, 8), где каждый эксперт является нейронной сетью. На практике эксперты являются FFN, но они также могут быть более сложными сетями или даже MoE самим по себе, что приводит к иерархическим MoE!
  • Сеть-маршрутизатор или роутер, который определяет, какие токены отправляются на какого эксперта. Например, на изображении ниже токен “Больше” отправляется на второго эксперта, а токен “Параметры” отправляется на первую сеть. Как маршрутизировать токен к эксперту – это одно из важных решений при работе с MoE. Роутер состоит из обучаемых параметров и предварительно обучается одновременно с остальной частью сети.
МоE-слои из статьи [Switch Transformers](https://arxiv.org/abs/2101.03961)

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

Хотя MoE позволяют осуществлять эффективное предварительное обучение и более быструю инференцию по сравнению с плотными моделями, они также имеют свои сложности:

  • Обучение: MoE значительно улучшают эффективность предварительного обучения, но исторически они испытывали проблемы с обобщением во время настройки, что приводило к переобучению.
  • Инференция: Хотя MoE могут иметь много параметров, только некоторые из них используются во время инференции. Это позволяет значительно ускорить инференцию по сравнению с плотной моделью с тем же количеством параметров. Однако все параметры должны быть загружены в ОЗУ, поэтому требования к памяти высоки. Например, для MoE, такого как Mixtral 8x7B, нам понадобится достаточно VRAM для хранения плотной модели с 47B параметрами. Почему 47B параметров, а не 8 x 7B = 56B? Это связано с тем, что в моделях MoE только слои FFN рассматриваются как отдельные эксперты, а остальные параметры модели являются общими. В то же время предположим, что на каждый токен используется только два эксперта, скорость инференции (FLOPs) будет как в случае с использованием модели 12B (в отличие от модели 14B), потому что вычисляет 2x7B умножений матриц, но с некоторыми общими слоями (подробнее об этом в скором времени).

Теперь, когда у нас есть примерное представление о том, что такое MoE, давайте посмотрим на исследования, которые привели к их созданию.

Краткая история MoE

Корни MoE уходят в 1991 год с статьи Adaptive Mixture of Local Experts. Идея, подобная методам ансамблирования, заключалась в наличии надзорной процедуры для системы, состоящей из отдельных сетей, каждая из которых обрабатывает разные подмножества обучающих случаев. Каждая отдельная сеть или эксперт специализируетс

  • Эксперты как компоненты: В традиционной модели MoE весь система состоит из сети управления и нескольких экспертов. Модели MoE в целом были исследованы в методах SVM, гауссовых процессах и других методах. Работа Е. Айген, Ю. Ранзато и Ильи исследовала MoE как компоненты более глубоких сетей. Это позволяет использовать MoE в качестве слоев в многослойной сети, делая модель одновременно большой и эффективной.
  • Условные вычисления: Традиционные сети обрабатывают все входные данные через каждый слой. В этот период Йошуа Бенджио исследовал подходы к динамической активации или деактивации компонентов на основе входного токена.

Эти работы привели к исследованию смеси экспертов в контексте NLP. Конкретно, Шазир и др. (2017 г., с участием Джеффри Хинтона и Джеффа Дина, Чака Норриса из Google) расширили эту идею до 137-миллиардного LSTM (тогдашняя де-факто NLP архитектура, созданная Шмидхубером) путем введения разреженности, что позволяет выполнять очень быстрые выводы даже при высоком масштабе. Эта работа сосредоточилась на переводе, но столкнулась с множеством проблем, таких как высокие затраты на коммуникацию и нестабильность обучения.

Слой MoE из статьи о чрезвычайно большой нейронной сети

MoE позволили тренировать модели с многотриллионным числом параметров, такие как свободно доступная модель Switch Transformers с 1,6 трлн параметров, среди других. MoE также были исследованы в компьютерном зрении, но в этом блог-посте мы сосредоточимся на области NLP.

Что такое разреженность?

Разреженность использует идею условных вычислений. В плотных моделях все параметры используются для всех входных данных, разреженность позволяет выполнять только некоторые части всей системы.

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

В этой настройке возникают некоторые проблемы. Например, хотя большие размеры батча обычно лучше влияют на производительность, размеры батча в MOE фактически уменьшаются по мере прохождения данных через активные эксперты. Например, если наш входной батч состоит из 10 токенов, пять токенов могут попасть в одного эксперта, а остальные пять токенов могут попасть в пять разных экспертов, что приводит к неравномерным размерам батчей и недоиспользованию. В следующем разделе “Разъезжают МоE” будет обсуждаться другие проблемы и решения.

Как мы можем решить эту проблему? Обучаемая сеть управления (G) решает, каким экспертам (E) отправлять часть входа:

y=∑i=1nG(x)iEi(x)y = \sum_{i=1}^{n} G(x)_i E_i(x)y=i=1∑n​G(x)i​Ei​(x)

В этой настройке все эксперты запускаются для всех входных данных – это взвешенное умножение. Но что происходит, если G равно 0? В этом случае нет необходимости вычислять соответствующие операции эксперта, и мы экономим ресурсы. Какая типичная функция управления? В самой традиционной настройке мы просто используем простую сеть с функцией softmax. Сеть будет учиться, какому эксперту отправить входные данные.

Gσ(x)=softmax(x⋅Wg)G_\sigma(x) = \text{softmax}(x \cdot W_g)Gσ​(x)=softmax(x⋅Wg​)

В работе Шазира также исследовались другие механизмы управления, такие как грязные Топ-K. Этот метод управления вводит некоторый (настраиваемый) шум и затем сохраняет топ-k значений. То есть:

  1. Мы добавляем некоторый шум

Н(i)кс=Wg и̇ii+StandardNormal()и̇Softplus((x и̇Wэ_шумаи̇)иH(x)_i = (x \cdot W_{\text{г}})_и + \text{СтандартноеНормальное()} \cdot \text{Мягкийплюс}((x \cdot W_{шума})_и)H(x)i​=(xи̇Wg)i​+StandardNormal()и̇Softplus((xи̇Wэ_шумаи̇)и)

  1. Мы выбираем только топ k

KeepTopK(v,k)i={viесли viвходит в топовые k элементы v,−∞иначе.KeepTopK(v, k)_и = \begin{cases}v_и & \text{если } v_и \text{ входит в топовые } k \text{ элементы } v, \\-\infty & \text{иначе.}\end{cases}KeepTopK(v,k)i​={vi​−∞если viвходит в топовые k элементы v,иначе.​

  1. Мы применяем softmax.

G(x)=Softmax(KeepTopK(H(x),k))G(x) = \text{Софтмакс}(\text{KeepTopK}(H(x), k))G(x)=Softmax(KeepTopK(H(x),k))

Этот разрежение вносит некоторые интересные свойства. Используя достаточно малое k (например, одно или два), мы можем обучать и выполнять вывод гораздо быстрее, чем если бы было активировано много экспертов. Почему бы просто не выбрать топового эксперта? Начальная догадка заключалась в том, что для того, чтобы узел научился направлять на разных экспертов, необходимо было, чтобы срабатывало более одного эксперта, поэтому требовалось выбирать по крайней мере двух экспертов. Раздел “Переключающиеся трансформаторы” пересматривает это решение.

Зачем мы добавляем шум? Для балансировки нагрузки!

Балансировка нагрузки для MoE

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

MoE и Трансформеры

Трансформеры – это ясный случай, когда увеличение количества параметров повышает производительность, поэтому неудивительно, что Google исследовал эту тему с использованием GShard, который исследует масштабирование трансформеров более чем до 600 миллиардов параметров.

GShard заменяет чередующийся FFN слой на слой MoE с использованием механизма маршрутизации с вероятностью выбора двух экспертов на основе их веса и в энкодере, и в декодере. На следующем изображении показано, как это выглядит для части энкодера. Эта конфигурация очень выгодна для крупномасштабных вычислений: при использовании нескольких устройств слой MoE общий для всех устройств, в то время как остальные слои реплицируются. Это дальше рассматривается в разделе “Делаем MoE работающими”.

Энкодер MoE Трансформера из документации GShard

Для поддержания сбалансированной нагрузки и эффективности при масштабировании авторы GShard внесли несколько изменений, в дополнение к вспомогательной функции потерь, подобной обсуждаемой в предыдущем разделе:

  • Случайная маршрутизация: в конфигурации с двумя топовыми экспертами мы всегда выбираем топового эксперта, но второй эксперт выбирается с вероятностью, пропорциональной его весу.
  • Экспертная способность: мы можем установить порог, который определяет количество токенов, которые может обработать один эксперт. Если оба эксперта достигают максимальной способности, токен считается переполненным и отправляется на следующий слой через остаточные соединения (или полностью отбрасывается в других проектах). Эта концепция становится одной из самых важных концепций для MoE. Зачем нужна экспертная способность? Поскольку все формы тензоров определяются статически во время компиляции, а заранее неизвестно, сколько токенов пойдет к каждому эксперту, необходимо задать фактор пропускной способности.

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

Примечание: при выполнении вывода активируются только некоторые эксперты. В то же время есть общие вычисления, такие как само-внимание, которое применяется ко всем токенам. Поэтому, когда мы говорим о модели размером 47 миллиардов с параметрами 8 экспертов, мы можем работать с вычислительной мощностью модели плотности 12 миллиардов. Если мы используем top-2, то будет использоваться 14 миллиардов параметров. Но учитывая, что операции внимания являются общими (среди прочих), фактическое количество используемых параметров составляет 12 миллиардов.

Переключение трансформеров

Хотя MoEs обещали многое, они сталкиваются с проблемами нестабильности во время обучения и настройки. Переключение трансформеров – это очень интересная работа, которая подробно рассматривает эти вопросы. Авторы даже выпустили модель MoE с 1,6 триллионом параметров на Hugging Face с 2048 экспертами, которую можно запустить с помощью библиотеки transformers. Переключающие трансформеры достигли в 4 раза более быстрой предварительной тренировки по сравнению с моделью T5-XXL.

Переключающий слой трансформера Switch

Как и в GShard, авторы заменили слои FFN слоем MoE. В статье Switch Transformers предлагается слой переключающего трансформера, который принимает два входа (два разных токена) и имеет четыре эксперта.

В отличие от исходной идеи использования как минимум двух экспертов, Switch Transformers используют упрощенную стратегию с одним экспертом. Это приводит к следующим результатам:

  • Снижение вычислительной сложности маршрутизации
  • Позволяет использовать меньший размер пакета для каждого эксперта
  • Снижение затрат на коммуникацию
  • Сохранение качества

Switch Transformers также исследуют концепцию мощности экспертов.

Мощность эксперта = (Токены в пакете / число экспертов) × фактор мощности

Предлагаемая мощность равномерно делит количество токенов в пакете на количество экспертов. Если мы используем фактор мощности больше 1, мы создаем буфер для токенов, которые не являются идеально сбалансированными. Увеличение мощности приведет к увеличению затрат на коммуникацию между устройствами, поэтому это компромисс, который нужно иметь в виду. В частности, Switch Transformers проявляют хорошие результаты при низких значениях фактора мощности (1-1,25).

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

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

Использование выборочной точности не ухудшает качество и позволяет создавать более быстрые модели

Этот блокнот показывает, как проводится настройка переключающих трансформеров для суммирования, но мы предлагаем сначала ознакомиться с разделом по настройке.

Switch Transformers используют кодировщик-декодер, в котором они создали аналог MoE для T5. В статье GLaM исследуется увеличение масштаба этих моделей путем обучения модели, соответствующей качеству GPT-3, используя только 1/3 энергии (да, благодаря меньшему количеству вычислений, необходимых для обучения MoE, удается снизить выброс углеродного следа на порядок). Авторы сосредоточились на моделях только с декодером и оценке с небольшим и однократным количеством примеров, а не на донастройке. Они использовали Top-2 маршрутизацию и значительно более крупные коэффициенты вместимости. Кроме того, они исследовали коэффициент вместимости как метрику, которую можно изменять во время обучения и оценки в зависимости от того, сколько вычислений требуется.

Стабилизация обучения с помощью функции потерь router Z

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

Функция потерь router Z, представленная в статье ST-MoE, значительно повышает стабильность обучения без потери качества путем штрафования больших логитов, поступающих в сеть маршрутизации. Поскольку эта функция потерь способствует уменьшению абсолютной величины значений, ошибки округления сокращаются, что может иметь значительное значение для экспоненциальных функций, таких как маршрутизация. Рекомендуется ознакомиться со статьей для получения дополнительных подробностей.

Что изучает эксперт?

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

Таблица из статьи ST-MoE, показывающая, какие группы токенов отправляются к какому эксперту.

Как влияет увеличение числа экспертов на предварительное обучение?

Большее количество экспертов приводит к повышению эффективности выборки и ускорению процесса, но эти приросты уменьшаются (особенно после 256 или 512), и для вывода потребуется больше памяти VRAM. Свойства, изученные в Switch Transformers на большом масштабе, остаются согласованными на малом масштабе, даже с 2, 4 или 8 экспертами на каждом слое.

Донастройка MoEs

Версия 4.36.0 библиотеки transformers поддерживает Mixtral. Вы можете установить ее с помощью pip install "transformers==4.36.0 --upgrade

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

Одним из вопросов является использование вспомогательной функции потерь для донастройки. Авторы ST-MoE экспериментировали с отключением вспомогательной функции потерь, и качество практически не пострадало, даже когда было удалено до 11% токенов. Удаление токенов может быть формой регуляризации, которая помогает предотвратить переобучение.

Switch Transformers заметили, что при фиксированной перплексии предобучения разреженная модель показывает худшие результаты по сравнению с плотной моделью на вычислительно сложных задачах, особенно на задачах, связанных с рассуждением, таких как SuperGLUE. С другой стороны, для задач с большим объемом знаний, таких как TriviaQA, разреженная модель показывает диспропорционально хорошие результаты. Авторы также заметили, что меньшее количество экспертов помогает при донастройке. Другое наблюдение, которое подтверждает проблему обобщения, заключается в том, что модель показывает худшие результаты на меньших задачах, но хорошие результаты на более крупных задачах.

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

Можно попробовать экспериментировать с замораживанием всех весов, кроме экспертных. Это привело к значительному падению производительности, что было ожидаемо, так как слои MoE соответствуют большей части сети. Мы можем попробовать противоположный подход: заморозить только параметры в слоях MoE, что оказалось практически так же эффективным, как обновление всех параметров. Это может помочь ускорить и сократить использование памяти при настройке.

Замораживая только слои MoE, мы можем ускорить обучение, сохраняя при этом качество. Изображение из статьи ST-MoE.

При настройке разреженных MoE следует также учесть, что они имеют различные настройки гиперпараметров для настройки – например, разреженные модели обычно больше выгоды получают от меньших размеров пакетов и более высоких скоростей обучения.

Качество разреженных моделей при настройке улучшается с использованием более низких скоростей обучения и больших размеров пакетов. Изображение из статьи ST-MoE.

На этом этапе вы, возможно, немного огорчены тем, что люди сталкиваются с проблемами настройки MoE. К счастью, недавняя статья «MoEs Meets Instruction Tuning» (июль 2023 года) выполняет эксперименты, включающие:

  • Настройку для одной задачи
  • Многозадачную настройку по инструкции
  • Многозадачную настройку по инструкции, за которой следует настройка для одной задачи

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

Разреженные модели получают больше выгоды от настройки по инструкции по сравнению с плотными моделями. Изображение из статьи MoEs Meets Instruction Tuning

Когда использовать разреженные MoE вместо плотных моделей?

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

Примечание: нельзя прямо сравнивать количество параметров между разреженными и плотными моделями, так как оба представляют существенно разные вещи.

Сделаем MoE мощнее

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

Параллелизм

Давайте кратко рассмотрим виды параллелизма:

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

С экспертным параллелизмом эксперты размещаются на разных рабочих узлах, и каждый узел берет разные группы обучающих выборок. Для не-MoE слоев, экспертный параллелизм работает так же, как и данные параллелизма. Для MoE слоев, токены в последовательности отправляются на узлы, где находятся нужные эксперты.

Иллюстрация из статьи о Switch Transformers, показывающая, как данные и модели разделены по ядрам с использованием разных параллелизмов.

Коэффициент ёмкости и коммуникационные затраты

Увеличение коэффициента ёмкости (CF) повышает качество, но увеличивает коммуникационные затраты и объем активаций в памяти. Если связи всех-с-всем медленные, лучше использовать меньший коэффициент ёмкости. Хорошей отправной точкой является использование маршрутизации топ-2 с коэффициентом ёмкости 1.25 и по одному эксперту на ядро. Во время оценки коэффициент ёмкости можно изменить, чтобы снизить вычислительную сложность.

Техники внедрения

Вы можете развернуть mistralai/Mixtral-8x7B-Instruct-v0.1 в конечные точки вывода.

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

  • Авторы модели Switch Transformers провели ранние эксперименты по дистилляции. Путем дистилляции MoE обратно в его плотное аналогичное представление они смогли сохранить 30-40% выгод от разреженности. Дистилляция, следовательно, обеспечивает преимущества более быстрого предварительного обучения и использования более компактной модели в производстве.
  • Недавние подходы изменяют маршрутизацию для направления полных предложений или задач на эксперта, позволяя извлекать подсети для обслуживания.
  • Объединение экспертов (MoE): эта техника объединяет веса экспертов, тем самым уменьшая количество параметров во время вывода.

Более эффективное обучение

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

Мегаблоки (ноябрь 2022) исследуют эффективное разреженное предварительное обучение, предлагая новые ядра GPU, которые могут обрабатывать присущую MoE динамику. Их предложение не удаляет токены и эффективно отображается на современное оборудование, что приводит к значительному ускорению. В чем секрет? Традиционные MoE используют пакетное умножение матриц, которое предполагает, что все эксперты имеют одинаковую форму и одинаковое количество токенов. В отличие от этого, Мегаблоки выражают слои MoE как блочно-разреженные операции, которые могут учитывать несбалансированное назначение.

Блочно-разреженное умножение матриц для экспертов с разными размерами и количеством токенов (из Мегаблоки).

Открытые исходные коды MoE

В настоящее время существует несколько проектов с открытым исходным кодом для обучения MoE:

В отношении доступных открытых MoE, вы можете проверить:

  • Switch Transformers (Google): Коллекция моделей MoE, основанных на T5, от 8 до 2048 экспертов. Самая большая модель имеет 1,6 трлн параметров.
  • NLLB MoE (Meta): Вариант модели перевода NLLB на основе MoE.
  • OpenMoE: Стремление сообщества, которое выпустило модели MoE на основе Llama.
  • Mixtral 8x7B (Mistral): Высококачественная MoE, превосходящая Llama 2 70B и имеющая более быстрое выполнение. Также доступна и инструкционно настроенная модель. Узнайте больше об этом в посте в блоге с анонсом.

Захватывающие направления работы

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

Еще одна область – квантование MoE. QMoE (окт. 2023) является хорошим шагом в этом направлении, квантуя MoE на менее чем 1 бит на параметр и сжимая модель Switch Transformer, использующую 3,2 ТБ акселератора, до 160 ГБ.

Итак, вкратце, интересные области для исследования:

  • Дестилляция Mixtral в плотную модель
  • Исследование методов объединения моделей экспертов и их влияние на время выполнения
  • Применение экстремальных методов квантования Mixtral

Некоторые ресурсы

Цитата

@misc {sanseviero2023moe,    author       = { Омар Сансевьеро и                     Льюис Танстолл и                     Филипп Шмид и                     Соураб Мангрулкар и                     Юнес Белкада и                     Педро Куенка                   },    title        = { Пояснение смеси экспертов },    year         = 2023,    url          = { https://huggingface.co/blog/moe },    publisher    = { Блог Hugging Face }}

Сансевьеро и др., "Пояснение смеси экспертов", Блог Hugging Face, 2023.