Mixture of Experts

mixture of experts (moe) — архитектура из множества «специалистов»

Раздел
Обучение
Сокращ.
MoE
Обновлено
05.09.26

В разреженной Mixture of Experts (MoE) часть слоёв содержит несколько экспертных модулей. Маршрутизатор выбирает для каждого токена часть из них. Это позволяет увеличить общую ёмкость модели, не используя все её параметры при каждом вычислении, но усложняет обучение, распределённый запуск и работу с памятью.

Коротко

Коротко. Mixture of Experts (MoE), или «смесь экспертов», — способ устроить нейросеть так, чтобы для обработки одного токена работала только часть экспертных модулей. У модели может быть много параметров, но не все они участвуют в каждом вычислении. Это позволяет наращивать её ёмкость, не увеличивая вычисления в той же пропорции.

Почему их называют экспертами

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

Но аналогия со специалистами легко вводит в заблуждение. Эксперт внутри языковой модели — не отдельный чат-бот и не обязательно «математик» или «переводчик». Это небольшая относительно всей модели подсеть, которая преобразует числовое представление токена. Её работа может зависеть от языка, структуры фразы или других признаков, которым трудно дать человеческое название.

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

Как проходит вычисление

В распространённой схеме MoE заменяет обычный блок преобразования признаков — FFN — внутри трансформера. Механизм внимания и другие части слоя при этом остаются общими.

Условный пример для слоя с восемью экспертами:

  1. В слой приходит числовое представление токена.
  2. Маршрутизатор выбирает экспертов № 2 и № 6.
  3. Оба обрабатывают это представление.
  4. Их результаты складываются с весами, которые назначил маршрутизатор.
  5. Полученное представление идёт дальше по сети.

Следующий токен может попасть к другим экспертам. На следующем слое выбор тоже может измениться. Это не распределение целого запроса между двумя готовыми моделями.

Число экспертов и правило выбора задаёт архитектура. Возможны один выбранный эксперт, несколько, общие эксперты для всех токенов и другие варианты. Одна схема не описывает все MoE-модели.

Всего параметров и активных параметров

У MoE обычно указывают два числа:

  • общее число параметров — сколько параметров содержит вся модель;
  • активные параметры на токен — сколько участвует в обработке одного токена при принятом способе подсчёта.

Считать их простым умножением размера плотной модели на число экспертов нельзя: внимание, эмбеддинги и другие компоненты могут быть общими. Например, в описании Mixtral 8×7B указаны примерно 47 миллиардов параметров всего и 13 миллиардов активных. Название 8×7B не означает восемь полностью независимых семимиллиардных моделей.

Активные параметры помогают понять объём вычислений, но не дают готовую оценку скорости. На неё также влияют память, размер группы запросов, обмен данными между устройствами и реализация вычислений.

Почему маленькая активная часть не означает маленький файл

Не выбранные для одного токена эксперты могут понадобиться следующему. Их веса всё равно нужно где-то хранить: в видеопамяти, оперативной памяти или на накопителе с подгрузкой.

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

Кластер нужен не любой MoE. Небольшая или квантованная модель может работать на одном устройстве, если хватает памяти и среда запуска её поддерживает. Требования зависят от конкретного файла модели, а не от самой аббревиатуры.

Что усложняет обучение

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

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

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

Пример: выбираем модель для помощника

Допустим, команда сравнивает плотную модель и MoE с похожим числом активных параметров. Помощник должен отвечать по документам и возвращать данные в заданном формате.

Одна цифра параметров не решает, какой вариант удобнее. Команда проверяет:

  • насколько точны ответы на своих документах;
  • соблюдается ли формат;
  • сколько проходит до начала и до конца ответа;
  • что меняется при длинном контексте и нескольких запросах одновременно;
  • сколько памяти нужно для весов и промежуточных данных.

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

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

С чем часто путают

Ансамбль моделей. В ансамбле объединяют результаты нескольких моделей. В рассматриваемой MoE эксперты встроены в одну сеть и работают с её внутренними представлениями. Они не получают каждый свой полный промпт.

Многозадачное обучение. Оно означает обучение на нескольких задачах. Так можно обучать и плотную модель, и MoE.

Grouped Query Attention, или GQA. Этот приём меняет устройство внимания. MoE обычно меняет FFN-блоки. Два подхода могут использоваться вместе.

Дообучение по предметной области. Наличие экспертов не означает, что один из них заранее назначен юристом, а другой программистом. Дообучение и маршрутизация — разные вещи.

Частые вопросы

MoE всегда лучше плотной модели?

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

Можно ли вынуть одного эксперта и общаться с ним?

Обычный FFN-эксперт — не самостоятельная языковая модель. Ему нужны остальные слои и внутренние представления сети. Исследования по удалению или объединению экспертов существуют, но это изменение модели, а не извлечение готового маленького ассистента.

Можно ли превратить плотную модель в MoE?

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

MoE можно дообучать и квантовать?

Да, если выбранные инструменты поддерживают её архитектуру. Для дообучения нужно решить, какие параметры менять; для квантизации — какие части и в каком формате хранить.

Можно ли угадать MoE по ответам?

Надёжно — нет. Необычное поведение или высокая скорость не раскрывают устройство модели. Для этого нужны сведения разработчика.

Главное

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

Источники