Серия интервью с AI #4: Трансформеры против Смеси экспертов (MoE)

Вопрос:
Модели MoE содержат гораздо больше параметров, чем Трансформеры, но при этом работают быстрее при выводе (inference). Как такое возможно?

Разница между Трансформерами и Смесью экспертов (MoE)

Трансформеры и модели Смеси экспертов (MoE) имеют одинаковую базовую архитектуру — слои самовнимания, за которыми следуют полносвязные слои, — но они различаются фундаментально в том, как используют параметры и вычисления.

Полносвязная сеть против экспертов

* Трансформер: каждый блок содержит одну большую полносвязную сеть (FFN). Каждый токен проходит через эту FFN, активируя все параметры при выводе.
* MoE: заменяет FFN несколькими меньшими полносвязными сетями, называемыми экспертами. Сеть маршрутизации выбирает только несколько экспертов (Top-K) для каждого токена, поэтому активна лишь малая часть от общего числа параметров.

Использование параметров

* Трансформер: все параметры во всех слоях используются для каждого токена → плотные вычисления.
* MoE: имеет больше общих параметров, но активирует только малую часть для каждого токена → разреженные вычисления. Пример: Mixtral 8×7B имеет 46,7 миллиарда общих параметров, но использует только около 13 миллиардов для каждого токена.

Стоимость вывода

* Трансформер: высокая стоимость вывода из-за полной активации параметров. Масштабирование до моделей вроде GPT-4 или Llama 2 70B требует мощного оборудования.
* MoE: меньшая стоимость вывода, потому что только K экспертов на слой активны. Это делает модели MoE быстрее и дешевле в работе, особенно в больших масштабах.

Маршрутизация токенов

* Трансформер: нет маршрутизации. Каждый токен следует точному пути через все слои.
* MoE: изученная сеть маршрутизации назначает токены экспертам на основе softmax-оценок. Разные токены выбирают разных экспертов. Разные слои могут активировать разных экспертов, что увеличивает специализацию и ёмкость модели.

Ёмкость модели

* Трансформер: для масштабирования ёмкости единственный вариант — добавление большего количества слоёв или расширение FFN — оба увеличивают FLOPs значительно.
* MoE: может масштабировать общие параметры массово без увеличения вычислений на токен. Это позволяет «создавать более «умные» системы при более низкой стоимости выполнения».

Обучение моделей MoE

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

Несбалансированная нагрузка — ещё одна проблема — некоторые эксперты могут получать гораздо больше токенов, чем другие, что приводит к неравномерному обучению. Чтобы решить эту проблему, модели MoE полагаются на такие методы, как внедрение шума в маршрутизацию, Top-K маскирование и ограничение ёмкости экспертов.

Эти механизмы обеспечивают активность и баланс всех экспертов, но также делают системы MoE более сложными в обучении по сравнению со стандартными Трансформерами.

Серия интервью с AI #3: Объясняем федеративное обучение

Пост «Серия интервью с AI #4: Трансформеры против Смеси экспертов (MoE)» впервые появился на MarkTechPost.

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

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

Код

«`python
import random
import numpy as np
import torch
import torch.nn as nn
import torch.optim as optim

OPS = [‘+’, ‘*’]

def make_task():
op = random.choice(OPS)
if op == ‘+’:
a, b = random.randint(1, 99), random.randint(1, 99)
else:
a, b = random.randint(2, 19), random.randint(2, 19)
return a, b, op

def true_answer(a, b, op):
return a + b if op == ‘+’ else a * b

def true_difficulty(a, b, op):
if op == ‘+’ and a <= 30 and b <= 30:
return 0
if op == ‘*’ and a <= 10 and b <= 10:
return 1
return 2

def heuristic_difficulty(a, b, op):
score = 0
if op == ‘*’:
score += 0.6
score += max(a, b) / 100.0
return min(score, 1.0)

def fast_heuristic(a, b, op):
if op == ‘+’:
base = a + b
noise = random.choice([-2, -1, 0, 0, 0, 1, 2, 3])
else:
base = int(0.8 a b)
noise = random.choice([-5, -3, 0, 0, 2, 5, 8])
return base + noise, 0.5

def deepchainof_thought(a, b, op, verbose=False):
# [код опущен для краткости]
return result, max(2.0, 0.4 * step)

def tool_solver(a, b, op):
return eval(f»{a}{op}{b}»), 1.2

ACTION_NAMES = [«fast», «deep», «tool»]
«`

Заключение

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

Через этот процесс мы понимаем, как метакогнитивный контроль преобразует процесс принятия решений, приводя к более эффективным и адаптируемым системам рассуждений.

Вопрос 1: какие основные различия в архитектуре и механизме работы между трансформерами и моделями смеси экспертов (MoE)?

Ответ: трансформеры и модели смеси экспертов (MoE) имеют одинаковую базовую архитектуру — слои самовнимания, за которыми следуют полносвязные слои. Однако они различаются в том, как используют параметры и вычисления. Трансформеры активируют все параметры при выводе, в то время как MoE заменяет полносвязные сети несколькими меньшими сетями, называемыми экспертами, и активирует только малую часть от общего числа параметров.

Вопрос 2: почему модели MoE работают быстрее и дешевле в работе по сравнению с трансформерами при выводе?

Ответ: модели MoE работают быстрее и дешевле в работе по сравнению с трансформерами при выводе, потому что они используют разреженные вычисления. Вместо активации всех параметров, как в трансформерах, MoE активирует только небольшую часть параметров для каждого токена. Это снижает стоимость вывода и делает модели MoE более эффективными в больших масштабах.

Вопрос 3: какие проблемы возникают при обучении моделей MoE и как они решаются?

Ответ: при обучении моделей MoE возникают несколько проблем, таких как коллапс экспертов и несбалансированная нагрузка. Коллапс экспертов происходит, когда маршрутизатор повторно выбирает одних и тех же экспертов, оставляя других недообученными. Несбалансированная нагрузка возникает, когда некоторые эксперты получают гораздо больше токенов, чем другие. Для решения этих проблем используются методы, такие как внедрение шума в маршрутизацию, Top-K маскирование и ограничение ёмкости экспертов.

Вопрос 4: в чём заключается преимущество масштабирования ёмкости модели в MoE по сравнению с трансформерами?

Ответ: преимущество масштабирования ёмкости модели в MoE заключается в том, что MoE может масштабировать общие параметры массово без увеличения вычислений на токен. Это позволяет создавать более «умные» системы при более низкой стоимости выполнения. В то время как для масштабирования ёмкости трансформеров требуется добавление большего количества слоёв или расширение FFN, что значительно увеличивает FLOPs.

Вопрос 5: какие механизмы используются для обеспечения активности и баланса всех экспертов в моделях MoE?

Ответ: для обеспечения активности и баланса всех экспертов в моделях MoE используются механизмы, такие как внедрение шума в маршрутизацию, Top-K маскирование и ограничение ёмкости экспертов. Эти механизмы помогают предотвратить коллапс экспертов и несбалансированную нагрузку, обеспечивая равномерное обучение всех экспертов.

Источник