Когда универсальность GPU становится проклятием
В прошлом материале мы разобрали, почему смешивание prefill и decode на одних и тех же GPU — это финансовое самоубийство. Если пропустили, вот коротко: prefill жрет FLOPS, decode жрет память. Заставлять H100 делать и то, и другое — всё равно что гонять Ferrari в час пик по МКАДу. Мы уже обсуждали, как Perplexity и Meta экономят миллионы, разводя эти фазы на разные кластеры. Но тогда речь шла о кастомных решениях. Сегодня AWS официально внедрила Disaggregated Prefill Decode (DPD) в SageMaker HyperPod. И это меняет правила игры.
DPD — это не просто патч к vLLM. Это архитектурный сдвиг, вшитый в управляемый кластер. Вы нажимаете кнопку — HyperPod сам размечает ноды на prefill и decode, прокладывает EFA-каналы и балансирует нагрузку.
Что под капотом DPD на HyperPod
DPD расшифровывается как Disaggregated Prefill Decode. В контексте HyperPod это значит: один кластер физически делится на две группы инстансов — prefill-ноды и decode-ноды. Первые работают с длинными контекстами, генерируют KV-cache и гонят его по EFA RDMA вторым. Вторые только декодируют токены, используя готовый кэш. Никакого переключения контекста внутри GPU — каждая карта занята строго своей фазой.
Звучит логично, но дьявол в деталях. На практике DPD требует совместимости с рантаймом. На июль 2026 года HyperPod поддерживает vLLM 0.8.3 (последняя стабильная версия) и NVIDIA Triton Inference Server 24.12. При старте кластера вы указываете конфигурацию с тегами node-type: prefill / decode, а HyperPod сам настраивает discovery и обмен KV-cache через EFA. Никаких ручных ansible-плейбуков.
Забыть про tail latency и TTFT
Самая грязная проблема обычного инференса — interference. Когда один запрос в фазе prefill выжигает тензорные ядра, а другой в decode ждет память, оба проседают. Tail latency превращается в катастрофу: 99-й перцентиль может быть в 10 раз выше медианы. DPD решает это радикально: prefill-ноды никогда не конкурируют за память, decode — за FLOPS.
В бенчмарках AWS на Llama 4 70B с 8×H100 выигрыш выглядит так:
| Метрика | Без DPD | С DPD |
|---|---|---|
| Time to First Token (P50) | 320 мс | 210 мс |
| Tail latency decode (P99) | 2.4 с | 0.9 с |
| Утилизация GPU (decode-ноды) | 35% | 82% |
Цифры говорят сами за себя. Но есть нюанс: чтобы получить такой профит, нужно правильно подобрать соотношение prefill:decode. Для Llama 4 70B с промптом до 8K токенов оптимальным оказалось 1:2. Если промпты длиннее — ratio уходит в 1:3. Это перекликается с идеей гетерогенной кластеризации, которую мы разбирали на примере DGX Spark и Mac Studio.
Административный ад или подарок?
Настройка DPD в HyperPod не требует написания кастомных контроллеров. Но и простой её не назовёшь. В CLI SageMaker HyperPod вы указываете DPDConfiguration в спецификации кластера. Как и всё в HyperPod, интерфейс для управления через SDK — суровый, но честный. Никакой магии: вы задаёте список instance groups, метку node-type: prefill или node-type: decode, и AWS сам разворачивает vLLM с флагами --partition prefill и --partition decode.
Главный подводный камень — горячее перераспределение. Если ваша нагрузка резко меняется (утром — короткие чаты, вечером — обработка документов), статическое деление кластера приводит к простоям. HyperPod пока не умеет динамически переключать ноды между ролями без сброса инстансов. Придётся либо держать запас, либо использовать автомасштабирование по разным группам.
А что с другими подходами?
Можно возразить: зачем DPD, если можно просто выделить разные GPU в одном сервере? Упирается в физику. Внутри одного инстанса p5.48xlarge (8×H100) вы можете назначить части GPU prefill, части decode, но общая шина NVLink всё равно создаёт коллизии по памяти при параллельном доступе. HyperPod с EFA и раздельными нодами — это буквально разные стойки. В сетапах с KServe на Kubernetes такой подход тоже реализуем, но там всё придётся делать руками. DPD — боевое, интегрированное решение под капотом HyperPod.
Отдельно стоит вспомнить про сжатие KV-cache. FastDMS ужимает кэш в 6 раз — это уменьшает объём передаваемых данных между prefill и decode нодами. DPD и FastDMS можно комбинировать: на prefill-стороне вы сжимаете KV-cache, на decode — распаковываете. AWS уже подтвердила совместимость в roadmap на Q3 2026.
Взгляд в завтра: DPD как must-have
Если вы планируете кластер для LLM инференса в 2027 году, DPD — не опция, а базовая гигиена. Без разделения фаз вы либо платите за простой GPU (decode), либо за перекос latency (prefill). HyperPod сделал первый шаг к автоматизации этого процесса. Следующий — динамическое адаптивное разделение, где кластер сам решает, сколько нод отдать под prefill в текущий момент. AWS обещает эту фичу к концу 2026.
Совет тем, кто уже экспериментирует: не пытайтесь сэкономить на EFA. Без RDMA latency обмена KV-cache превращает DPD в тыкву. Закажите HyperPod с EFA — разница в цене окупится снижением TTFT и ростом throughput. И да, vLLM 0.8.3 — must have. Старые версии не умеют партицирование.