Together AI раскрыла инженерные решения, позволившие обслуживать MiniMax M3 (1M токенов, нативная мультимодальность, MSA-архитектура) с приростом throughput 81–125% на разных уровнях конкурентности. Это первый публичный разбор того, как block-sparse attention реально ложится на paged-inference engine — и почему «из коробки» не работает.
Корень проблемы — MiniMax Sparse Attention (MSA) несовместима с классическим paged attention: выбранные KV-блоки различаются по KV-группам, и стандартные GQA-ядра этого не ждут. Together решила это через переупорядочение page table: KV-group dimension разворачивается в batch-dimension, а strided view тензора даёт каждой «плоской» строке собственную page table. Трюк в шаге страницы — адреса страниц продвигаются на D для выбора виртуального старта, токены — на Hkv × D, что деинтерливает один физический тензор в per-head страницы. Существующие GQA-ядра переписывать не пришлось. Прирост: +5% decode throughput.
Prefill-боттлнек закрыт KV-Block-Major sparse attention kernel. В классической схеме итерация идёт по запросам, и одни и те же KV-блоки многократно перемещаются из HBM в SRAM. Здесь внешний цикл идёт по KV-блокам, внутренний — по запросам, каждый KV-блок загружается ровно один раз, финальная редукция через Log-Sum-Exp пересчитывает частичные выходы. Результат по сравнению с dense attention при том же контексте: более 9× ускорение на prefill и более 15× на decode.
Decode index scoring — top-k по KV-блокам — оказался на критическом пути каждого генерируемого токена: при длинном контексте число кандидатных блоков растёт линейно. Объединить decode-запросы в один GEMM не получается: у каждого запроса и каждой KV-группы свой диапазон блоков, своя маска и своя top-k граница. Together применила AB-swapped HMMA layout: 128-токенный K-index блок становится MMA M-dimension, запросы паддятся только в меньшее N-dimension. Ядро асинхронно подгружает K-index страницы, вычисляет dot products в bfloat16 через HMMA и редуцирует каждую страницу до одного скора блока — без лишнего padding и bookkeeping на критическом пути.
Отдельная задача — vision-предобработка. Rust-шлюз SMG выносит весь CPU-конвейер (скачивание видео, FFmpeg-декодинг, frame sampling по FPS, resize, нормализация, patchify с temporal dimension) за пределы GPU-воркера. На GPU приходит готовый flat patch tensor и grid metadata tensor, упакованные в gRPC. Архитектура построена на Rust traits, которые изолируют модельно-специфичную логику от pipeline-обвязки: добавление M3 потребовало только реализации трейтов с новыми константами, сам pipeline не менялся.
Together фактически опубликовала референсную архитектуру для деплоя block-sparse long-context моделей: paged attention через strided view плюс gateway-side multimodal preprocessing — паттерн воспроизводимый. Честный пробел: данных о latency (TTFT, TPOT) и стоимости на токен в продакшне нет. Цифры 81–125% throughput измерены на NVIDIA B200 при конкретном agentic-трафике — 60k prefix cache, concurrency 8. Насколько они переносятся на другие GPU и паттерны трафика, Together не сообщила.