Эфир 18.11 · Поток 318 ноября в 19:00 МСК — бесплатный практический эфир по ИИ-агентам · Живой Поток 3 стартует 23.11Эфир 18 ноября →Поток 3 (23.11)
РелизAPI / Продукт · В работуPyTorch Blog→ оригинал

NVIDIA Dynamo: сессионное управление инфраструктурой для агентского вывода

Агентские рабочие нагрузки принципиально отличаются от чатботов. Сессия начинается с крупного prefill (десятки тысяч токенов системных подсказок и описаний инструментов), затем следует цепочка вызовов модели, инструментов и параллельных подагентов. Большая часть стены времени — не генерация, а выполнение инструментов вне GPU, пока KV cache занимает место в памяти. NVIDIA Dynamo решает задачу, унифицировав управление сессиями вокруг session-level identifier. Это трансформирует request-aware инфраструктуру в program-aware: система видит не отдельные запросы, а цепочки запросов в контексте одной задачи, и может принимать решения о кэшировании, маршрутизации и приоритизации на уровне программы.

AI-обработка оригинала PyTorch Blog; редакция Hamidun News
NVIDIA Dynamo: сессионное управление инфраструктурой для агентского вывода
Источник: PyTorch Blog. Коллаж: Hamidun News.
Слушать статью
Паспорт материала и цифры
ПараметрДанные
ПервоисточникPyTorch Blog ↗
Главный редактор
Встроенная поддержка агентовClaude Code, Codex и OpenCode работают без конфигурации благодаря распознаванию их заголовков сессии
Плагины для других harnessesPi provider (для OpenAI-compatible endpoint), Hermes middleware и OpenClaw provider расширяют совместимость
Трассировка и replayDYN_REQUEST_TRACE=1 включает захват трасс для offline-тестирования (AISimulate) и live-бенчмарков (AIPerf)

Агентские нагрузки меняют архитектуру serving'а

Агентские рабочие нагрузки коренным образом изменили форму трафика на серверах вывода. Сессия открывается с крупного prefill — часто десятки тысяч токенов системных подсказок, описаний инструментов и руководств, специфичных для пользователя. После первого вызова модель получает аппендированный контекст, который сессия повторно отправляет полностью с каждым новым ходом.

Отличие от чатбота — в развёртывании работы: одна задача порождает множество параллельных вызовов модели, параллельные подагенты с короткой и длинной жизненью, и инструменты, которые выполняются между ходами. Большая часть стены времени сессии уходит не на генерацию, а на выполнение инструментов и исходящих вызовов, пока контекст сидит резидентным в KV cache, занимая место в HBM без использования. Оптимальное обслуживание зависит от того, сколько контекста система держит резидентным и переиспользует, и сколько сессий может одновременно обслуживать без нарушения SLA по latency.

Session ID как единый примитив для program-aware инфраструктуры

Большинство open-source serving стеков построены для стандартного чатбота: маршрутизируют, допускают и кэшируют каждый запрос независимо, без понимания сессии, которая связывает его с предыдущими ходами. NVIDIA Dynamo унифицировала управление вокруг session-level identifier, трансформируя request-aware инфраструктуру в program-aware.

Каждый запрос в траектории агента содержит:

  • session_id — уникальный стабильный идентификатор одной цепочки рассуждений и вызовов инструментов
  • parent_session_id — идентификатор родительской сессии (для отслеживания иерархии агентов и подагентов)

Встроенная поддержка кодировочных агентов (работает без конфигурации):

  • Claude Code передаёт x-claude-code-session-id (корневые) и x-claude-code-agent-id (дочерние) с x-claude-code-parent-agent-id
  • Codex использует thread-id и x-codex-parent-thread-id
  • OpenCode отправляет x-opencode-session-id и x-opencode-parent-session-id

Плагины для других harnesses (репозиторий agent-plugins):

  • Pi provider — для OpenAI-compatible endpoint Dynamo
  • Hermes middleware — маппирует session_id Hermes
  • OpenClaw provider — маппирует sessionId OpenClaw

Custom harnesses просто передают X-Dynamo-Session-ID (и опционально X-Dynamo-Parent-Session-ID), Dynamo нормализует их в agent_context, которую читает весь стек.

Трассировка, replay и backtesting

С флагом DYN_REQUEST_TRACE=1 Dynamo автоматически регистрирует каждый запрос без хранения промптов и ответов (их можно включить отдельно). После завершения потока ответа эмитируется request_end запись с:

  • Полями сессии (session_id, parent_session_id)
  • Выходным token count и finish reason
  • Метриками KV cache и названиями инструментов
  • Replay блоком с входной длиной и хешами последовательностей (формат, похожий на Mooncake)

Так как каждая запись содержит timestamps и finish reasons, видны распределения вызовов инструментов и связь с eviction-поведением. Dynamo использует эти данные для backtesting и оптимизации развёртываний.

Захваченная трасса становится переиспользуемым бенчмарком: воспроизводится столько раз, сколько нужно, без переполнения модели, инструментов или внешних API. Трасса остаётся content-free благодаря sequence hashes, которые становятся синтетическими block ID, сохраняя prefix sharing через ходы и сессии.

AISimulate запускает граф запросов против симулированного scheduler, router и KV cache для сравнения воркеров, топологий, политик маршрутизации и ёмкости без затрат GPU. AIPerf воспроизводит тот же граф на реальном endpoint для финальных latency, throughput и cache метрик.

Session-aware routing и управление пропускной способностью

Стандартный request-level router (включая KvRouter из коробки) решает размещение запроса за запросом: какой воркер имеет максимальный overlap кэша. Это правильная единица для одного хода, но неправильная для агента при высокой конкурентности, потому что упускает два фактора:

  • Cache-occupancy blowup: между ходами кэш агента не освобождается, сидит в HBM, занимая блоки, пока агент запускает инструмент вне GPU. При N агентах на шаге k совокупный working set = N × context_k, но request-level router видит только один ход. Как только working set превышает HBM и DRAM, движок evict'ит кэш живых сессий, и каждый следующий ход платит полный re-prefill вместо cache hit.
  • Отсутствие backpressure: когда воркер переполнен, request-level router может только отменить или встать в очередь in-flight запросы — оба варианта хуже альтернативы: отложить сессию в точке паузы перед следующим ходом, когда она вот-вот будет idle.

Dynamo адаптировала scheduler из paper ThunderAgent (Kang et al., 2026) поверх KV-aware router. Реализованный на Rust, владеет KvRouter напрямую, отслеживает реальный prompt_tokens + completion_tokens с каждого ответа вместо оценки из raw bytes. Как native Dynamo plugin, можно адаптировать исходный код под форму своей рабочей нагрузки без изменения базового router.

Сюжет

Вопросы и ответы по материалу

Что известно по теме: агентские нагрузки меняют архитектуру serving'а?

Агентские рабочие нагрузки коренным образом изменили форму трафика на серверах вывода. Сессия открывается с крупного prefill — часто десятки тысяч токенов системных подсказок, описаний инструментов и руководств, специфичных для пользователя. После первого вызова модель получает аппендированный контекст, который сессия повторно отправляет полностью с каждым новым ходом.

Что известно по теме: Session ID как единый примитив для program-aware инфраструктуры?

Большинство open-source serving стеков построены для стандартного чатбота: маршрутизируют, допускают и кэшируют каждый запрос независимо, без понимания сессии, которая связывает его с предыдущими ходами. NVIDIA Dynamo унифицировала управление вокруг session-level identifier, трансформируя request-aware инфраструктуру в program-aware.

Что известно по теме: трассировка, replay и backtesting?

С флагом DYN_REQUEST_TRACE=1 Dynamo автоматически регистрирует каждый запрос без хранения промптов и ответов (их можно включить отдельно). После завершения потока ответа эмитируется request_end запись с: Полями сессии (session_id, parent_session_id) Выходным token count и finish reason Метриками KV cache и названиями инструментов Replay блоком с входной длиной и хешами последовательностей (формат, похожий на Mooncake) Так как каждая запись содержит timestamps и finish reasons, видны…

ЖХ
Жемал Хамидун — CPO Alpina Digital, продакт-менеджер AlpinaGPT. Делает AI-продукты с 2019 года. Hamidun News — pet project, который вырос в production-агрегатор с 6000+ читателей.
✦ Практика · Hamidun Academy

Соберите рабочего ИИ-агента или сервис своими руками без ручного кода

В Академии Жемала Хамидуна (academy.hamidun.com) открыт бесплатный 72-часовой тест-драйв: интерактивные скетч-уроки по Claude Code и Cursor, живой Tech Radar и готовые шаблоны агентов.

Открыть 72ч бесплатный доступ →Интенсив по Вайб-кодингу
Что вы думаете?
Загружаем комментарии…