IT'S NEW IT'S NEW

Поиск

Масштабируемые MoE‑модели: как Perplexity решает проблемы AWS EFA

Масштабируемые MoE‑модели: как Perplexity решает проблемы AWS EFA
2 минуты

В последние годы рост открытых ИИ‑моделей достиг уровня триллиона параметров. Развертывание таких гига‑моделей локально становится невозможным, а применение традиционных методов параллелизма приводит к катастрофическим задержкам. Perplexity предложила решение, которое делает масштабирование MoE‑моделей в облаке AWS практичным и эффективным.

Архитектура MoE и её траектория коммуникации

MoE заменяет плотный трансформерный слой множеством небольших «экспертов» и маршрутизатором, который назначает входной токен конкретному эксперту. Это позволяет параллелить вычисления не только внутри одного GPU, но и между разными компьютерами. Ключевой проблемой остаётся устойчивое и быстрое распределение токенов, так как каждая отправка является «распределённой» (scattered) и требует минимум задержек.

Почему традиционный EFA был проблемой

Внутри одного узла связь NVLink (≈900 ГБ/с) почти мгновенна, но при межузловой работе InfiniBand повышает задержку до десятков микросекунд. AWS EFA, используемая в кластерах, не поддерживает GPUDirect Async, вынуждая GPU инициировать передачу через CPU‑прокси. Это приводит к потере драгоценных микросекунд и делает MoE‑коммуникации дорогими.

Гибридная CPU‑GPU архитектура и конфликт «прокси‑проблемы»

Ключевая идея Perplexity ─ разделить работу ядра в две части: sender (передача токенов) и receiver (приём). Эти части синхронизируются через TransferEngine, а промежуточный слой CPU‑прокси обрабатывает сетевые вызовы.

  • Dispatch‑ядро формирует пакеты токенов и передаёт их в прокси.
  • Combine‑ядро собирает результаты и вычисляет среднее значение.
  • Объединение вычислений и коммуникаций значительно снижает суммарную задержку.

Оптимизация буферов и TransferEngine

Сначала ядра обмениваются только счётчиками токенов, позволяя каждому узлу заранее вычислить смещения в буфере. После этого происходит двухэтапная передача: небольшая «первичная» часть и большой RDMA‑write. TransferEngine получил новые функции scatter и barrier, а также пред‑регистрируемые WR‑шаблоны, которые ускоряют передачу мелких пакетов.

Оценка производительности

Показатели, полученные на H200 с ConnectX‑7 и EFA:

  • Общая задержка (dispatch + combine): 459 µs для 16 экспертов, 582 µs для 32 экспертов и 692 µs для 64 экспертов.
  • На ConnectX‑7 решение превзошло в среднем DeepEP и традиционный IBGDA благодаря быстрому combine‑ядру.
  • Разрыв между EFA и ConnectX‑7 оказался существенно ниже, чем ожидалось.

Пользовательские кейсы и масштабирование

В тестах на DeepSeek‑V3 (671 млрд параметров) многопоточное развертывание показало пропускную способность, сравнимую с оптимизированной одно‑узловой конфигурацией. Для Kimi‑K2 (1 трис) кастомные ядра впервые сделали возможным запуск модели на AWS с «жизнеспособной» задержкой.

Будущие направления развития

Perplexity продолжает работу с инженерами AWS над улучшением libfabric. В планах — экспериментировать с EFA‑Direct, чтобы ещё более сократить задержки, а также исследовать варианты использования более агрессивных архитектур NVLink/PCIe для внутренних соединений.

17:38
44
Поделиться:
Нет комментариев. Ваш будет первым!
Оставаясь на сайте, вы соглашаетесь с Политикой в отношении cookie. Если не согласны, покиньте сайт.