ЧТО ТАКОЕ MIXTURE OF EXPERTS
Классический трансформер — плотная (dense) сеть: каждый токен прогоняется через все веса. Хочешь умнее — раздувай параметры, но тогда линейно растёт и стоимость каждого прохода. Тупик: качество упирается в бюджет вычислений.
Mixture of Experts ломает эту связку. Идея простая: FFN-слой (feed-forward, самая жирная часть блока) заменяют на N параллельных FFN — это и есть «эксперты». Перед ними ставят маленькую обучаемую сеть — роутер (gating network). Роутер смотрит на токен и выбирает top-k экспертов (обычно k=2), только они и считаются. Остальные молчат.
Результат разреженной (sparse) архитектуры: общее число параметров огромное (это «знания» модели), а активных на токен — малая доля. Отсюда две ключевые метрики MoE, которые надо различать: total params и active params.
ПОЧЕМУ MoE ДЕШЕВЛЕ: РАЗДЕЛЯЕМ ПАМЯТЬ И FLOPS
Главная мысль, которую путают даже опытные: MoE экономит вычисления (FLOPs), но НЕ экономит память (VRAM). Все эксперты обязаны лежать в памяти — заранее неизвестно, кого роутер позовёт на следующем токене.
Разберём на пальцах. Возьмём условную модель: 8 экспертов, роутер берёт 2. Внимание (attention) общее для всех, а вот через FFN проходит только 2/8 весов эксперта.
- Инференс дешевле — считаешь ~2 эксперта вместо dense-сети такого же «размера знаний». Меньше FLOPs → выше throughput → ниже цена за токен.
- VRAM всё равно большая — грузить нужно все веса. Поэтому MoE любят датацентры и ненавидят владельцы одной видеокарты.
- Обучение эффективнее по compute — при равном бюджете FLOPs MoE усваивает больше данных, чем dense.
Именно поэтому провайдеры так охотно ушли в MoE: latency и себестоимость падают, а на дорогой памяти в облаке экономить и не надо.
КАК РАБОТАЕТ РОУТЕР: TOP-K GATING
Роутер — линейный слой, который на каждый токен выдаёт логиты по всем экспертам. Дальше softmax, отбор top-k, взвешенная сумма выходов выбранных экспертов. Вот сокращённая, но рабочая логика одного MoE-слоя на PyTorch:
import torch
import torch.nn.functional as F
class MoELayer(torch.nn.Module):
def __init__(self, dim, n_experts=8, top_k=2):
super().__init__()
self.top_k = top_k
self.gate = torch.nn.Linear(dim, n_experts, bias=False)
self.experts = torch.nn.ModuleList(
[torch.nn.Sequential(
torch.nn.Linear(dim, 4 * dim),
torch.nn.SiLU(),
torch.nn.Linear(4 * dim, dim),
) for _ in range(n_experts)]
)
def forward(self, x): # x: [tokens, dim]
logits = self.gate(x) # [tokens, n_experts]
weights, idx = torch.topk(logits, self.top_k, dim=-1)
weights = F.softmax(weights, dim=-1) # нормируем только top-k
out = torch.zeros_like(x)
for slot in range(self.top_k):
for e in range(len(self.experts)):
mask = idx[:, slot] == e # какие токены попали к эксперту e
if mask.any():
out[mask] += weights[mask, slot:slot+1] * self.experts[e](x[mask])
return out
В проде цикл по экспертам заменяют на batched-группировку токенов и кастомные ядра (например, grouped GEMM), но суть та же: каждый токен идёт своим маршрутом. Один токен предложения может уйти к «эксперту по коду», соседний — к «эксперту по синтаксису». Слово «эксперт» тут метафора: никто вручную не назначает специализации, они возникают сами в обучении и редко читаемы человеком.
Балансировка нагрузки — главная боль
Роутер склонен к вырождению: полюбил трёх экспертов, остальные простаивают («dead experts»). Лечат auxiliary load-balancing loss — штрафом за неравномерное распределение токенов. Часть свежих архитектур ушла на loss-free балансировку через обучаемый bias на роутере — меньше дёргает основную loss-функцию. Отслеживать перекос нагрузки при своём файн-тюне обязательно, иначе часть параметров превращается в мёртвый груз.
MIXTRAL И ДРУГИЕ: КТО ЗАДАЛ ТОН
Mixtral 8x7B от Mistral в конце 2023 стал точкой перелома для опенсорса — понятный, воспроизводимый sparse MoE, который многие впервые пощупали руками. Название «8x7B» вводит в заблуждение: это НЕ 56B. Attention и эмбеддинги общие, отдельные только FFN-эксперты, поэтому total ≈ 47B, а active на токен ≈ 13B. То есть по памяти это ~47B, а по скорости — ближе к 13B-модели. Тот самый трюк MoE в чистом виде.
После Mixtral в MoE ушли практически все крупные лаборатории — и закрытые фронтир-модели, и волна открытых китайских релизов (семейства DeepSeek, Qwen и другие) с десятками-сотнями экспертов и мелкой гранулярностью. Тренд 2025-2026: fine-grained MoE — много маленьких экспертов + один-два «общих» (shared), которые активны всегда и держат базовые навыки. Свежие релизы таких моделей удобно отслеживать в каталоге REDDYX.
DENSE vs MoE: СРАВНЕНИЕ
| Параметр | Dense-модель | MoE-модель |
|---|---|---|
| Активные параметры на токен | 100% | единицы процентов (top-k из N) |
| FLOPs на токен | Высокие | Низкие при равном «объёме знаний» |
| VRAM для загрузки | = размеру модели | = полному размеру (все эксперты) |
| Скорость инференса | Ниже | Выше (меньше вычислений) |
| Сложность обучения | Стабильно | Нужна балансировка роутера |
| Запуск на одной GPU дома | Проще (веса = вычисления) | Тяжело (память бьёт по бюджету) |
| Себестоимость в облаке | Выше | Ниже за токен |
Вывод из таблицы: MoE выигрывает там, где память дешёвая, а вычисления дорогие — то есть у облачных провайдеров. Для локального энтузиаста с 24 ГБ VRAM плотная модель часто практичнее.
ПОЧЕМУ MoE ЕЩЁ И «УМНЕЕ»
«Умнее» — не магия, а следствие compute-эффективности. При фиксированном бюджете на обучение (а он всегда фиксирован — деньги и GPU-часы конечны) MoE позволяет:
- Держать больше суммарных параметров — больше ёмкости под факты и навыки.
- При этом прогонять больше токенов данных за те же FLOPs.
- Дать разным экспертам специализироваться — снижается интерференция, когда один навык мешает другому в общих весах.
По замерам сообщества, MoE при равных активных параметрах стабильно обгоняет dense той же «активной» весовой категории на знаниевых бенчмарках. Это не значит, что MoE бьёт любую dense-модель — сравнивать честно надо либо по active params, либо по total, и цифры сильно зависят от рецепта обучения. Осторожнее с маркетинговыми таблицами: «наша 20B active бьёт вашу 70B dense» — почти всегда подбор удобного бенчмарка.
ГДЕ ПОДВОДНЫЕ КАМНИ
- Память. Повторю, потому что на этом спотыкаются все: MoE не влезет туда, куда влезла бы dense с тем же числом active params. Считайте по total.
- Батчинг и латентность. При маленьком батче эксперты недозагружены, эффективность падает. MoE максимально раскрывается на высоком параллелизме запросов.
- Файн-тюн сложнее. Роутер можно расстроить: дообучение на узком домене перекашивает распределение экспертов. LoRA-адаптеры и заморозка роутера помогают.
- Квантизация. Эксперты квантуются нормально, но роутер к точности чувствителен — держите gate в более высокой разрядности.
- Воспроизводимость. Из-за группировки токенов по экспертам результат может слегка зависеть от состава батча — учитывайте при тестах.
КОГДА БРАТЬ MoE, А КОГДА DENSE
Практическое правило 2026 года:
- Облачный API / свой сервинг на кластере, много параллельных запросов → MoE. Дешевле за токен, выше throughput.
- Одна-две потребительские GPU, локальный ассистент → часто dense: память решает, а редкие запросы не дают MoE раскрыть параллелизм.
- Edge / мобилка → dense или крошечная модель. MoE с его памятью тут не жилец.
- Максимальное качество при фиксированном compute-бюджете обучения → MoE.
Частые вопросы
Чем отличаются total и active параметры в MoE?
Total — все веса модели, которые нужно держать в памяти (все эксперты). Active — сколько параметров реально участвует в обработке одного токена (общее внимание плюс top-k выбранных экспертов). Скорость определяется active, требования к VRAM — total.
Mixtral 8x7B — это 56 миллиардов параметров?
Нет. Общие только FFN-эксперты, а attention и эмбеддинги разделяются между ними, поэтому total около 47B, а активных на токен около 13B. Умножать 8 на 7 неправильно.
Можно ли запустить MoE-модель на домашней видеокарте?
Технически да, но в память надо загрузить всех экспертов, а не только активных. Модель с 47B total потребует памяти как плотная 47B-модель, несмотря на скорость уровня 13B. Помогают квантизация и офлоад части экспертов в оперативную память ценой скорости.
Почему MoE считается эффективнее плотных моделей?
Потому что при равном бюджете вычислений MoE вмещает больше суммарных параметров и обрабатывает больше обучающих данных, активируя лишь малую долю весов на токен. Это даёт качество крупной сети по цене вычислений маленькой.
MoE — уже не экзотика, а стандарт де-факто под капотом того, чем вы пользуетесь каждый день, и понимать разницу total/active стоит хотя бы чтобы не переплачивать за железо. Новые открытые MoE-релизы выходят чуть ли не еженедельно — если хотите ловить их первыми, залетайте в Telegram-канал REDDYX AI — новые репозитории каждые 30-60 минут.