Mixture of Experts (MoE) — архитектурный паттерн, при котором слой нейросети разбивается на несколько подсетей-«экспертов», а для каждого входного токена активируется только их подмножество. Это позволяет нарастить ёмкость модели без пропорционального роста вычислительных затрат: параметров больше, но на каждый токен тратится меньше FLOPs.
В классическом трансформере каждый блок содержит MLP (Multi-Layer Perceptron), который обрабатывает все токены одинаково. В MoE-варианте этот MLP заменяется набором из E экспертных подсетей. Каждая подсеть выполняет собственное вычисление независимо, а результаты комбинируются — через усреднение или взвешенную сумму.
MoE бывает двух типов:
В большинстве опубликованных работ MoE применяется к MLP-слоям внутри трансформерных блоков. Однако исследования показывают, что концепцию можно распространить и на другие части архитектуры. Работа SwitchHead предлагает применять MoE к проекционным слоям, которые формируют матрицы Q, K и V для операции внимания. Другие работы рассматривают условное выполнение на уровне самих голов внимания.
Ключевое преимущество sparse MoE — более высокая flop-эффективность на параметр. Модель содержит больше весов и, следовательно, большую ёмкость, но на каждый токен в forward pass активируется лишь часть из них.
Конкретный пример — Mixtral 8x7B. Модель содержит 32 трансформерных блока, в каждом из которых MLP заменён на MoE-блок с восемью экспертами. Для каждого токена активируются только два эксперта из восьми. В результате:
Название «8x7B» может ввести в заблуждение: кажется, что это восемь отдельных сетей по 7 миллиардов параметров, и каждый токен полностью обрабатывается одной из них. На практике это не так. Каждый токен проходит через 7 миллиардов параметров на слой, а общая сеть содержит 47 миллиардов, а не 56, потому что слои внимания и нормализации общие для всех токенов.
Для сравнения: полностью плотная модель сопоставимого размера потребовала бы активации всех параметров на каждый токен. Обучение Llama 2 (плотная архитектура) заняло, по сообщениям, 3,3 миллиона GPU-часов на NVIDIA A100. На 1024 GPU при полной загрузке это примерно 134 дня непрерывной работы — без учёта экспериментов, подбора гиперпараметров и прерываний.
Sparse MoE позволяет при фиксированном бюджете вычислений обработать больше токенов и сильнее дообучить модель. Поскольку модели с большим числом параметров требуют больше данных для сходимости, на том же бюджете MoE-модель может оказаться качественнее плотной.
При инференсе на больших промптах и батчах, где узким местом являются вычисления, MoE снижает задержку первого токена. Это особенно важно для сценариев вроде RAG и автономных агентов, где модель вызывается многократно и задержки накапливаются.
Маршрутизатор (routing network) определяет, какие эксперты обработают конкретный токен. Это второй ключевой компонент MoE после самих экспертных подсетей.
Два основных фактора при выборе алгоритма маршрутизации:
Идеально сбалансированный маршрутизатор может снизить точность на токен, а максимально точный — создать неравномерную загрузку и узкие места. Выбор алгоритма — это компромисс между этими двумя факторами.
Mixtral 8x7B использует алгоритм Top-K: для каждого токена выбираются K экспертов с наивысшими оценками маршрутизатора. Альтернативный подход — Expert Choice Routing, при котором сами эксперты «выбирают» токены, что предотвращает перегрузку отдельных экспертов и формирование узких мест.
В некоторых формулировках MoE включает механизм взвешивания: выходы экспертов комбинируются не простой суммой, а взвешенным средним, где веса определяются маршрутизатором.
NVIDIA провела эксперимент на Mixtral 8x7B, прогнав все задания бенчмарка MMLU (57 тем — от абстрактной алгебры до профессионального права) и записав назначения «токен → эксперт» на слоях 1, 16 и 32. Результаты дают представление о том, как эксперты специализируются.
Балансировка нагрузки в целом работает. Эксперты получают примерно равную загрузку на разнообразных данных. Однако самый загруженный эксперт всё равно получает на 40–60% больше токенов, чем наименее загруженный.
Домены активируют разных экспертов. На слое 32:
Отдельные токены имеют устойчивые предпочтения. Например, все токены «:» на слое 1 обрабатываются экспертами 1 и 7, а на слое 32 — экспертами 3 и 8. Аналогичные паттерны наблюдаются для вопросительных слов и знаков препинания: один и тот же токен последовательно маршрутизируется к определённым экспертам на разных слоях.
Комбинаторное пространство огромно. На каждом слое из 8 экспертов выбираются 2, что даёт C(8,2) = 28 комбинаций. При 32 слоях общее число возможных «сквозных» конфигураций сети — 28³² ≈ 2×10⁴⁶. Это на порядки превышает объём обучающих данных большинства LLM (3–10 триллионов токенов), поэтому два токена практически никогда не проходят через одинаковую комбинацию экспертов от начала до конца.
Несмотря на механизмы балансировки, тематически однородные нагрузки создают значительный перекос. Если все запросы в батче относятся к одной области — например, юридические документы, — одни эксперты перегружаются, а другие простаивают. Это снижает эффективность инференса: часть вычислительных ресурсов ожидает, пока перегруженный эксперт завершит обработку.
Это активная область исследований. Среди подходов к решению:
Универсального решения пока нет, и проблема остаётся открытой для тематически сконцентрированных рабочих нагрузок.
MoE-модели предъявляют специфические требования к инфраструктуре инференса:
Среди MoE-моделей, поддерживаемых vLLM: Mixtral, DeepSeek-V3, Qwen-MoE и другие. Полный список архитектур доступен в документации vLLM.
Как устроен MoE-слой
В классическом трансформере каждый блок содержит MLP (Multi-Layer Perceptron), который обрабатывает все токены одинаково. В MoE-варианте этот MLP заменяется набором из E экспертных подсетей. Каждая подсеть выполняет собственное вычисление независимо, а результаты комбинируются — через усреднение или взвешенную сумму.
MoE бывает двух типов:
- Dense MoE — все эксперты активируются для каждого входа. Ёмкость растёт, но и вычисления растут пропорционально.
- Sparse MoE — для каждого токена выбирается только подмножество экспертов (обычно K из E). Именно этот вариант даёт выигрыш в эффективности.
В большинстве опубликованных работ MoE применяется к MLP-слоям внутри трансформерных блоков. Однако исследования показывают, что концепцию можно распространить и на другие части архитектуры. Работа SwitchHead предлагает применять MoE к проекционным слоям, которые формируют матрицы Q, K и V для операции внимания. Другие работы рассматривают условное выполнение на уровне самих голов внимания.
Почему sparse MoE экономит вычисления
Ключевое преимущество sparse MoE — более высокая flop-эффективность на параметр. Модель содержит больше весов и, следовательно, большую ёмкость, но на каждый токен в forward pass активируется лишь часть из них.
Конкретный пример — Mixtral 8x7B. Модель содержит 32 трансформерных блока, в каждом из которых MLP заменён на MoE-блок с восемью экспертами. Для каждого токена активируются только два эксперта из восьми. В результате:
- Общее число параметров модели — около 47 миллиардов.
- Активных параметров на один токен — примерно 12,9 миллиарда.
- Разница между 47B и 12,9B — это и есть экономия вычислений при сохранении ёмкости.
Название «8x7B» может ввести в заблуждение: кажется, что это восемь отдельных сетей по 7 миллиардов параметров, и каждый токен полностью обрабатывается одной из них. На практике это не так. Каждый токен проходит через 7 миллиардов параметров на слой, а общая сеть содержит 47 миллиардов, а не 56, потому что слои внимания и нормализации общие для всех токенов.
Для сравнения: полностью плотная модель сопоставимого размера потребовала бы активации всех параметров на каждый токен. Обучение Llama 2 (плотная архитектура) заняло, по сообщениям, 3,3 миллиона GPU-часов на NVIDIA A100. На 1024 GPU при полной загрузке это примерно 134 дня непрерывной работы — без учёта экспериментов, подбора гиперпараметров и прерываний.
Sparse MoE позволяет при фиксированном бюджете вычислений обработать больше токенов и сильнее дообучить модель. Поскольку модели с большим числом параметров требуют больше данных для сходимости, на том же бюджете MoE-модель может оказаться качественнее плотной.
При инференсе на больших промптах и батчах, где узким местом являются вычисления, MoE снижает задержку первого токена. Это особенно важно для сценариев вроде RAG и автономных агентов, где модель вызывается многократно и задержки накапливаются.
Маршрутизация: как выбираются эксперты
Маршрутизатор (routing network) определяет, какие эксперты обработают конкретный токен. Это второй ключевой компонент MoE после самих экспертных подсетей.
Два основных фактора при выборе алгоритма маршрутизации:
- Точность модели — насколько хорошо выбранные эксперты обрабатывают токен.
- Балансировка нагрузки — насколько равномерно токены распределены между экспертами.
Идеально сбалансированный маршрутизатор может снизить точность на токен, а максимально точный — создать неравномерную загрузку и узкие места. Выбор алгоритма — это компромисс между этими двумя факторами.
Mixtral 8x7B использует алгоритм Top-K: для каждого токена выбираются K экспертов с наивысшими оценками маршрутизатора. Альтернативный подход — Expert Choice Routing, при котором сами эксперты «выбирают» токены, что предотвращает перегрузку отдельных экспертов и формирование узких мест.
В некоторых формулировках MoE включает механизм взвешивания: выходы экспертов комбинируются не простой суммой, а взвешенным средним, где веса определяются маршрутизатором.
Что эксперты учат на практике
NVIDIA провела эксперимент на Mixtral 8x7B, прогнав все задания бенчмарка MMLU (57 тем — от абстрактной алгебры до профессионального права) и записав назначения «токен → эксперт» на слоях 1, 16 и 32. Результаты дают представление о том, как эксперты специализируются.
Балансировка нагрузки в целом работает. Эксперты получают примерно равную загрузку на разнообразных данных. Однако самый загруженный эксперт всё равно получает на 40–60% больше токенов, чем наименее загруженный.
Домены активируют разных экспертов. На слое 32:
- Абстрактная алгебра преимущественно использует экспертов 3 и 8.
- Профессиональное право активирует эксперта 4 и относительно «глушит» экспертов 3 и 8.
- Мировые религии: эксперт 7 получает более чем в 5 раз меньше токенов, чем эксперт 8.
Отдельные токены имеют устойчивые предпочтения. Например, все токены «:» на слое 1 обрабатываются экспертами 1 и 7, а на слое 32 — экспертами 3 и 8. Аналогичные паттерны наблюдаются для вопросительных слов и знаков препинания: один и тот же токен последовательно маршрутизируется к определённым экспертам на разных слоях.
Комбинаторное пространство огромно. На каждом слое из 8 экспертов выбираются 2, что даёт C(8,2) = 28 комбинаций. При 32 слоях общее число возможных «сквозных» конфигураций сети — 28³² ≈ 2×10⁴⁶. Это на порядки превышает объём обучающих данных большинства LLM (3–10 триллионов токенов), поэтому два токена практически никогда не проходят через одинаковую комбинацию экспертов от начала до конца.
Проблема неравномерной загрузки при инференсе
Несмотря на механизмы балансировки, тематически однородные нагрузки создают значительный перекос. Если все запросы в батче относятся к одной области — например, юридические документы, — одни эксперты перегружаются, а другие простаивают. Это снижает эффективность инференса: часть вычислительных ресурсов ожидает, пока перегруженный эксперт завершит обработку.
Это активная область исследований. Среди подходов к решению:
- Auxiliary loss — вспомогательная функция потерь, штрафующая неравномерность распределения токенов между экспертами.
- Capacity factor — ограничение числа токенов, которые может обработать один эксперт; избыток отбрасывается или перенаправляется.
- Expert Choice Routing — инверсия стандартной схемы: эксперты выбирают токены, а не наоборот, что предотвращает концентрацию нагрузки.
Универсального решения пока нет, и проблема остаётся открытой для тематически сконцентрированных рабочих нагрузок.
MoE в инфраструктуре сервинга
MoE-модели предъявляют специфические требования к инфраструктуре инференса:
- Память. Все эксперты должны быть загружены в память, даже если на каждый токен активируются только K из них. Mixtral 8x7B требует размещения ~47B параметров, что существенно больше, чем у плотной модели с 12,9B активных параметров.
- Параллелизм. Для распределённого инференса применяется expert parallelism — эксперты размещаются на разных устройствах. vLLM поддерживает expert parallelism наряду с tensor, pipeline, data и context parallelism.
- Оптимизированные ядра. vLLM включает оптимизированные GEMM/MoE-ядра для различных точностей с использованием CUTLASS, TRTLLM-GEN и CuTeDSL, а также поддерживает квантование FP8, INT8, INT4, GPTQ/AWQ и другие форматы для снижения требований к памяти.
Среди MoE-моделей, поддерживаемых vLLM: Mixtral, DeepSeek-V3, Qwen-MoE и другие. Полный список архитектур доступен в документации vLLM.
Ограничения и открытые вопросы
- Плотные модели пока точнее при равном размере. Исследования показывают, что полностью плотная модель с E×P параметрами, обученная на том же объёме токенов, как правило, превосходит MoE-модель с E экспертами по P параметров каждый. MoE выигрывает не в абсолютном качестве, а в эффективности на единицу вычислений.
- Ёмкость ≠ качество. MoE увеличивает ёмкость относительно базовой модели, но не гарантирует лучшего качества при фиксированном числе активных параметров.
- Балансировка при инференсе. Тематически сконцентрированные нагрузки по-прежнему создают перекос, и универсального решения пока нет.
- Применимость к другим слоям. MoE для attention-проекций и голов внимания — активная область исследований, но стандартной практикой пока остаётся замена MLP-слоёв.
Ключевые цифры Mixtral 8x7B
| Параметр | Значение |
|---|---|
| Трансформерных блоков | 32 |
| Экспертов на слой | 8 |
| Активных экспертов на токен | 2 |
| Общие параметры | ~47B |
| Активные параметры на токен | ~12,9B |
| Комбинаций экспертов на слой | 28 |
| Сквозных конфигураций сети | 28³² ≈ 2×10⁴⁶ |
| Перекос загрузки (max/min) | до 40–60% |
