alterna ai
ALTERNA AI / ГЛАВА 19 · 05

19.5 Разные нейронные участки для разных токенов

На предыдущей странице: этапы вычисления на разных устройствах.

Правило маршрутизации выбирает небольшую часть экспертов. Неиспользованные в этом шаге веса всё равно надо хранить.

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

Router активирует лишь часть параметров для каждого token

Sparse MoE заменяет dense FFN набором experts и router. В top-1 режиме token идёт к одному expert с максимальным score; total parameters растут, но active parameters на token могут оставаться близкими к одному FFN. Switch Transformer исследует такой sparse routing. F18.

Чтобы один expert не получил все tokens, задают capacity. В локальном контракте для T tokens, E experts и factor c:

capacity=⌈cTE⌉.capacity=\left\lceil c\frac{T}{E}\right\rceil.

Overflow policy должна быть явной: drop, reroute или padding. Auxiliary balancing loss влияет на обучение router, но не гарантирует идеальный баланс каждого batch.

Что показывает модель. Router view показывает scores, выбранный expert, capacity slot и overflow. Total и active parameter counts выводятся раздельно. Expert parallelism требует all-to-all token exchange; balanced counts не означают дешёвую коммуникацию.

Граница применимости. MoE не является ансамблем независимых законченных моделей. Expert labels не обязаны соответствовать человеческим темам. Sparse activation уменьшает часть arithmetic, но memory для всех weights и routing/communication остаётся; total parameter count нельзя напрямую сравнивать с dense compute.

from math import ceil
scores_19e=[[.8,.2],[.1,.9],[.7,.3],[.2,.8]]; experts_19e=2
routes_19e=[max(range(experts_19e),key=lambda e_19e:(row_19e[e_19e],-e_19e)) for row_19e in scores_19e]
capacity_19e=ceil(1.0*len(scores_19e)/experts_19e)
loads_19e=[routes_19e.count(e_19e) for e_19e in range(experts_19e)]
assert routes_19e==[0,1,0,1] and loads_19e==[2,2] and capacity_19e==2

Код повторяет только что разобранные операции. Полный проверяемыйPython-пример главы доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.

Router и capacity определяют active computation; total model storage остаётся.

Изображение и звук тоже становятся представлениями. Как этот вопрос продолжает полученный результат?

Python-примеры главы 19 Академическая база →