Mixture of Experts (MoE): Как это работает и когда это использовать

Вы хотите масштабироваться с модели 7B до 70B, не покупая еще четыре GPU.

Кто-то предлагает использовать Mixture of Experts (MoE). Утверждают, что вы получите производительность уровня 70B при вычислительных затратах всего на уровне 7B.

Это звучит как «бесплатный обед». Но есть подвох.

Как это работает?

Плотная (dense) трансформерная модель, такая как Llama 3.2, использует 100% своих параметров для каждого токена. Если вы масштабируетесь с 7B до 70B, вы увеличиваете как объем памяти, так и вычислительную нагрузку в 10 раз.

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

Компромисс:

• Dense 7B: 7B всего параметров | 7B активных | 7B вычислений | 14 ГБ памяти • Dense 70B: 70B всего параметров | 70B активных | 70B вычислений | 140 ГБ памяти • MoE 45B: 45B всего параметров | ~13B активных | ~14B вычислений | ~90 ГБ памяти

Подвох: вы все равно платите за объем памяти, необходимый для большой модели. Вы не сможете запустить Mixtral на одном GPU с 24 ГБ памяти. Вам нужно достаточно VRAM, чтобы вместить всех экспертов, даже тех, которые в данный момент не используются.

Архитектура:

В разреженной (sparse) MoE стандартная сеть прямого распространения (Feed-Forward Network, FFN) заменяется несколькими «экспертными» FFN и обучаемым роутером (router).

  1. Роутер принимает токен.
  2. Он присваивает оценку каждому эксперту.
  3. Он выбирает top-k экспертов (для Mixtral k=2).
  4. Он пропускает токен только через этих экспертов.
  5. Он объединяет результаты.

Роутер — это не ручной планировщик. Это обучаемый слой. Он учится отправлять математические токены одному эксперту, а токены кода — другому.

Проблема обучения:

Самый большой риск — это коллапс роутера (router collapse). Без посторонней помощи роутер может начать отправлять все токены одним и тем же двум экспертам. Эти эксперты становятся лучше, поэтому роутер направляет им еще больше трафика. Остальные эксперты становятся бесполезными.

Инженеры используют вспомогательную функцию потерь для балансировки нагрузки (auxiliary load-balancing loss), чтобы исправить это. Она штрафует модель, если та не использует всех экспертов поровну.

Когда стоит избегать MoE:

• Вам нужна стабильная задержка (latency): у MoE выше вариативность времени отклика. • У вас ограниченный объем VRAM: если у вас всего один GPU объемом менее 48 ГБ, придерживайтесь плотных (dense) моделей. • Вы создаете крошечные модели: если в вашей модели менее 3 млрд параметров, накладные расходы будут слишком высоки. • Вам нужна простая инфраструктура: MoE требует сложного параллелизма экспертов (expert parallelism) и кастомных ядер (custom kernels).

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

Источник: https://dev.to/tech_nuggets/mixture-of-experts-moe-what-it-actually-does-under-the-hood-and-when-it-pays-off-alb

Дополнительное обучающее сообщество: https://t.me/GyaanSetuAi