Эпоха 6 · Генеративка и системы · 2024

52 Mixtral

Mixtral of Experts · Jiang, Sablayrolles и др. · Mistral AI
🟧 оригинал выборочно~1 чоригинал ↗
Суть за 20 секунд. Open-weights sparse MoE: 8 экспертов на слой, router выбирает 2 на токен. Итого 47B параметров, но активны ~13B на токен → качество большой модели по цене инференса средней. Доказал open-сообществу практичность MoE.

Контекст

MoE (#31) обещал масштаб без роста компьюта, но открытых сильных MoE-LLM не было. Mistral AI выпускает Mixtral 8×7B с открытыми весами.

Идея и механизм

В каждом трансформер-слое FFN заменён на MoE из 8 экспертов; обучаемый router для каждого токена выбирает 2 эксперта (top-2). Итого ~47B параметров, но на токен активны лишь ~13B. Обошёл Llama-2-70B и GPT-3.5 при меньшем активном компьюте.

оптимизация Активные vs общие параметры: где экономия

FFN-слой заменён на E=8 экспертов. Router даёт веса, берём top-2, ренормируем и смешиваем:

y = Σi ∈ top-2 gi(x) · Experti(x)

Считаем баланс. Общие параметры (надо держать в памяти): все 8 экспертов на всех слоях ≈ 47B. Активные (считаются на каждый токен): лишь 2 эксперта ≈ 13B. То есть:

память ~ 47B  ·  компьют/токен ~ 13B

Качество тянется к ёмкости (47B), а скорость инференса — к активной части (13B). Это та же sparse-MoE идея из #31, доведённая до рабочей open-LLM: «много знаний, мало счёта на токен».

PyTorch MoE-FFN Mixtral (top-2 из 8)
import torch

def mixtral_ffn(x, gate, experts):           # 8 экспертов, top-2
    w, idx = gate(x).softmax(-1).topk(2, -1)
    w = w / w.sum(-1, keepdim=True)            # ренормировка весов
    out = sum(w[:, j:j+1] * experts[idx[:, j]](x) for j in range(2))
    return out   # активны 2 из 8 → ~13B из 47B параметров на токен
8 экспертов на слой · активны 2 (зелёные) 47B всего~13B активно/токен
Из восьми экспертов на токен работают только два. Память держит всех, считаются — двое: ёмкость большой модели, цена средней.
Аналогия. Редакция из восьми узких журналистов. На каждую заметку главред (router) подключает двоих самых профильных, остальные шесть отдыхают. Редакция знает «всё» (ёмкость восьмерых), но платит за работу только двоих на материал. Расширять штат можно, не раздувая стоимость каждой статьи.

Почему это важно

Доказал open-сообществу практичность sparse-MoE и сделал его мейнстримом открытых моделей; закрепил инженерный паттерн «много общих параметров, мало активных», который дальше масштабирует DeepSeek (#53).

Связи

← реализует31. Mixture-of-Experts

Mixtral — это sparse-MoE из 2017-го, наконец дозревший до открытой сильной LLM: FFN каждого слоя — MoE из 8 экспертов с top-2 роутингом. Идея «Outrageously Large» в практичном масштабе.

→ масштабируется в53. DeepSeek V3 / R1

DeepSeek-V3 берёт тот же принцип ещё крупнее — 671B параметров, ~37B активных — плюс улучшения роутинга (балансировка без auxiliary loss). Прямая линия Mixtral → фронтир-MoE.

← наследует архитектуру50. LLaMA

Mixtral построен на LLaMA-подобной архитектуре (RMSNorm, RoPE, SwiGLU), заменив плотный FFN на MoE. Открытая экосистема, заданная LLaMA, — почва, на которой вырос Mistral.

Вопросы пытливого ума

Если активно лишь 13B, почему нельзя просто запустить на железе под 13B-модель?

Потому что все 47B параметров должны лежать в памяти — заранее неизвестно, какие 2 эксперта понадобятся следующему токену. Память считается по общим параметрам, а не по активным. Поэтому MoE экономит компьют, но не VRAM: запустить Mixtral нужно железо под 47B, а скорость будет как у ~13B. Это другая точка размена, а не бесплатный обед.

Разные токены идут к разным экспертам — не рвётся ли связность внутри батча?

Это создаёт инженерную головную боль: в батче токены расходятся по экспертам неравномерно, и нужно эффективно собирать/раскидывать их (all-to-all коммуникация), иначе часть GPU простаивает. Отсюда capacity factor (лимит токенов на эксперта) и сложная балансировка. MoE мощен, но его системная реализация заметно сложнее плотной модели.

Эксперты Mixtral специализируются по темам (код, язык, математика)?

Анализ показал — почти нет. Распределение токенов по экспертам слабо коррелирует с темой/доменом; роутинг скорее ловит синтаксические/поверхностные признаки и довольно равномерен. Красивая интуиция «эксперт по медицине, эксперт по коду» на практике не подтверждается — router учится тому, что снижает лосс, а не человекочитаемому разделению.

Что читать в оригинале

Читать ключевое — routing (top-2), различие активных и общих параметров, влияние на память vs скорость.