TensorRT Edge-LLM: 52,33 токена/с на Jetson AGX Thor в MLPerf Edge Agentic

NVIDIA выложила результаты TensorRT Edge-LLM в бенчмарке MLPerf Inference v6.1 Edge Agentic: модель Qwen3.6-27B на одном Jetson AGX Thor Developer Kit выдала 52,33 токена в секунду и прошла все 1007 шагов рабочей нагрузки за 24 минуты 36 секунд. Референсный прогон на llama.cpp с той же моделью занимает 2 часа 37 минут — ускорение 6,4 раза.

Агент — не чат-бот с одним запросом: он выбирает инструменты, смотрит их результаты и продолжает рассуждение во всё более длинном диалоге. Именно эта последовательность шагов и стала предметом измерения. Похожий переход от облака к борту уже разбирался на примере Jetson Orin Nano 2, а здесь речь о флагманском модуле.

Что именно измеряет MLPerf Edge Agentic

Бенчмарк проверяет OpenAI-совместимый эндпоинт модели в два этапа. Первый — производительность: воспроизводятся записанные траектории агента-программиста. Модель получает запрос пользователя, формирует вызов инструмента, видит результат и продолжает тот же разговор. В нагрузке 20 диалогов и 1007 сгенерированных шагов, длина входа растёт от шага к шагу и достигает примерно 23,5 тыс. токенов — длинный контекст здесь существенная часть измерения. Дополнительно считается inline-точность по IoU, чтобы убедиться, что агент отрабатывает корректно.

Второй этап — точность: промпты Berkeley Function Calling Leaderboard (BFCL) v4, только одноходовые, с отключённым reasoning — так балансируют точность и время оценки на edge-устройствах. Проверяется, выбирает ли модель нужную функцию, генерирует ли валидные аргументы и не вызывает ли инструмент там, где он не нужен.

Результаты на Jetson AGX Thor

Заявка TensorRT Edge-LLM использовала Qwen3.6-27B в режиме SingleStream на одном Jetson AGX Thor Developer Kit со 128 ГБ унифицированной памяти в режиме питания MAXN.

Метрика Результат
Пропускная способность вывода 52,33 токена/с
Медианное время до первого токена 247,12 мс
Медианное время на выходной токен 14,68 мс
Общая точность BFCL 87,94%

Референсный прогон llama.cpp на том же Jetson AGX Thor использует Qwen3.6-27B с квантизацией Q4_K_M и укладывается в 2 часа 37 минут; заявка TensorRT Edge-LLM — 24 минуты 36 секунд, то есть в 6,4 раза меньше времени.

NVFP4 и FP8: меньше веса — быстрее декодирование

Декодирование LLM при малом батче на edge-платформах упирается в пропускную способность DRAM. Уменьшение размера и весов, и активаций снижает объём памяти под ядра и поднимает скорость декодирования.

В заявке Qwen3.6-27B использует NVFP4 для весов и активаций, включая языковую голову модели, и FP8 для KV-кэша. NVFP4 — 4-битный формат с плавающей точкой, который поддерживает GPU Blackwell в Jetson AGX Thor. TensorRT Edge-LLM применяет оптимизированные ядра для ускорения квантованной модели, сохраняя точность, требуемую MLPerf. Меньшее представление модели оставляет больше из 128 ГБ унифицированной памяти под длинный контекст, состояние спекулятивного декодирования и прикладные задачи. Стартовать можно с опубликованного откалиброванного чекпоинта Qwen3.6-27B NVFP4, а квантование после обучения достаточно выполнить один раз на любой машине разработчика. О том, как выбор архитектуры влияет на пропускную способность, — в разборе Dense против MoE.

Переиспользование KV-кэша между шагами агента

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

TensorRT Edge-LLM находит повторно используемые префиксы промпта и восстанавливает их закэшированные страницы attention KV. Qwen3.6 использует гибридную архитектуру, поэтому рантайм восстанавливает ещё и рекуррентное состояние и часть состояния KV-страниц, нужные для корректного продолжения. Префиллится только новый суффикс разговора.

На этой нагрузке около 96% токенов промпта обслуживались из горячего кэша: из суммарных 13,6 млн токенов промпта по всем шагам рантайм префиллил лишь около 0,5 млн. Экономия до генерации дополняет tree-based MTP, который сокращает число шагов целевой модели во время генерации.

Дерево многотокенного предсказания

Обычное авторегрессионное декодирование выдаёт один токен на вызов модели. Многотокенное предсказание (MTP) использует draft-модель, чтобы предсказать несколько будущих токенов, а целевая модель проверяет их разом. Современные модели обычно поставляются с обученными MTP-весами вместе с основной моделью.

Помимо линейного MTP, TensorRT Edge-LLM реализует древовидный вариант: вместо одной предсказанной ветки кандидаты с высокой вероятностью организуются в дерево. Целевая модель проверяет их за один прямой проход, рантайм принимает совпавший путь, и если принято несколько кандидатов, генерация продвигается сразу на несколько токенов.

Параметры драфтинга задаются при запуске сервера. В конфигурации для MLPerf используются 8 шагов драфтинга, top-2 кандидата на каждой глубине и дерево проверки из 16 узлов. Для вызова функций дерево полезно тем, что имена инструментов, синтаксис JSON и типовые структуры аргументов предсказуемы, а ветки сохраняют вероятные альтернативы значений отдельных аргументов. По сравнению с линейным MTP на 3 шага драфтинга древовидный дал на этой нагрузке дополнительный прирост скорости декодирования около 40%.

Как воспроизвести прогон

Реализация заявки лежит в ветке TensorRT Edge-LLM release/0.9.1-mlpinf: там настройки экспорта модели, команды сборки движков TensorRT, конфигурация сервера и клиента MLPerf.

git clone --branch release/0.9.1-mlpinf \
  https://github.com/NVIDIA/TensorRT-Edge-LLM.git
cd TensorRT-Edge-LLM
git submodule update --init --recursive

Затем скачивается откалиброванный NVFP4-чекпоинт:

huggingface-cli download \
  centml/Qwen3.6-27B-NVFP4-W4A4-mlpinf \
--local-dir "$WORK/Qwen3.6-27B-NVFP4-W4A4-mlpinf"

Дальше по mlperf/README.md собирается TensorRT Edge-LLM, чекпоинт экспортируется через интерфейс tree-MTP и собираются базовый и draft-движки:

$VENV/bin/python -m tensorrt_edgellm.scripts.export \
  "$WORK/Qwen3.6-27B-NVFP4-W4A4-mlpinf" \
  "$WORK/onnx" \
--mtp-tree-base --skip-visual

Сервер, совместимый с OpenAI API, запускается скриптом mlperf/serve_edgellm.sh. Для самого бенчмарка клонируется endpoint harness от MLCommons, ставятся зависимости BFCL, в mlperf/config.yaml правятся пути к модели и токенизатору:

git clone https://github.com/mlcommons/endpoints.git
cd endpoints
python3.12 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev,bfcl]"

inference-endpoint benchmark from-config \
--config "$REPO/mlperf/config.yaml"

Приложенная конфигурация прогоняет оба этапа с temperature 0, seed 42, отключённым reasoning и параллелизмом 1. Опция --accuracy-only оставляет только фазу точности BFCL.

Что это значит для практики

Результат интересен не столько цифрой ускорения, сколько набором приёмов, которые переносятся на любой edge-инференс агента: квантование весов и активаций, FP8 для KV-кэша, переиспользование кэша между шагами и древовидный MTP. Все они снижают либо объём памяти, либо число обращений к целевой модели — то есть ровно то, что ограничивает длинные агентные сценарии на устройствах с унифицированной памятью. Для команд, которые переносят агентов из облака на борт, это готовый ориентир по конфигурации и воспроизводимый стенд для собственных замеров. С какими барьерами такие проекты сталкиваются при выводе в продакшен, разбиралось в отдельном материале о том, почему ИИ-агенты не доходят до внедрения.

Частые вопросы

Какая модель и какое железо использовались в заявке?

Qwen3.6-27B в режиме SingleStream на одном Jetson AGX Thor Developer Kit со 128 ГБ унифицированной памяти, режим питания MAXN.

Насколько результат быстрее референса?

Заявка прошла 1007 шагов за 24 минуты 36 секунд, референсный прогон llama.cpp на том же устройстве — за 2 часа 37 минут. Это в 6,4 раза меньше времени.

Какая точность вызова функций у модели?

Общая точность BFCL — 87,94%. Проверка идёт на промптах BFCL v4, только одноходовых, с отключённым reasoning.

Что даёт NVFP4?

Это 4-битный формат с плавающей точкой, поддерживаемый GPU Blackwell в Jetson AGX Thor. В заявке он применён к весам и активациям, включая языковую голову, а KV-кэш оставлен в FP8 — так снижается давление на пропускную способность DRAM, которая ограничивает декодирование при малом батче.

Какую выгоду даёт переиспользование KV-кэша?

Около 96% токенов промпта обслуживались из горячего кэша: из 13,6 млн токенов по всем шагам префиллилось только около 0,5 млн. Без этого модель заново обрабатывала бы общую историю на каждом шаге агента.

Чем древовидный MTP отличается от линейного?

Линейный MTP держит одну предсказанную ветку, древовидный организует кандидатов в дерево и проверяет их за один прямой проход целевой модели. На этой нагрузке при 8 шагах драфтинга, top-2 кандидатах и дереве из 16 узлов он дал дополнительный прирост около 40% относительно линейного MTP с 3 шагами.

Где взять код и чекпоинт для повторения?

Код — в ветке release/0.9.1-mlpinf репозитория TensorRT-Edge-LLM, чекпоинт — centml/Qwen3.6-27B-NVFP4-W4A4-mlpinf на Hugging Face. Настройки экспорта, сборки движков и конфигурация сервера лежат в той же ветке.

Можно ли запустить только проверку точности?

Да, в конфигурации бенчмарка есть опция --accuracy-only — она оставляет только фазу точности BFCL, без прогона производительности.

Источник: developer.nvidia.com