Открыть сервис

NVIDIA Triton Inference Server

NVIDIA Triton Inference Server — это программное обеспечение с открытым исходным кодом, разработанное компанией NVIDIA, предназначенное для развёртывания и выполнения моделей машинного обучения (ML) и глубокого обучения (DL) в производственной среде. Сервер выступает в роли промежуточного слоя (inference serving), который стандартизирует процесс обработки запросов к моделям, обеспечивая высокую производительность, масштабируемость и гибкость. Triton Inference Server поддерживает широкий спектр фреймворков, форматов моделей и аппаратных ускорителей, позволяя использовать одни и те же модели на различных платформах — от локальных серверов до облачных кластеров и встраиваемых устройств.

История и развитие

Изначально проект был известен как TensorRT Inference Server, выпущенный NVIDIA в 2017 году. Он был тесно связан с оптимизационным движком NVIDIA TensorRT и предназначался для ускорения вывода моделей на графических процессорах (GPU) NVIDIA. В 2019 году проект был переименован в Triton Inference Server, что отразило расширение его функциональности: поддержку не только TensorRT, но и других бэкендов, а также возможность работы на центральных процессорах (CPU) без GPU.

Ключевые вехи развития:

  • 2017: Первый релиз TensorRT Inference Server с поддержкой TensorRT и Caffe2.
  • 2019: Переименование в Triton Inference Server, добавление поддержки ONNX Runtime, TensorFlow, PyTorch и Python-бэкенда.
  • 2020: Открытие исходного кода под лицензией BSD-3-Clause, что позволило сообществу вносить изменения и адаптировать сервер под свои нужды.
  • 2021: Внедрение поддержки моделей из Hugging Face, динамического батчинга и интеграции с Kubernetes.
  • 2022–2024: Добавление поддержки новых аппаратных ускорителей (например, NVIDIA Grace Hopper), улучшение работы с большими языковыми моделями (LLM) через TensorRT-LLM, а также оптимизация для встраиваемых систем (Jetson).

Архитектура и компоненты

Triton Inference Server построен по модульной архитектуре, что позволяет гибко настраивать его под конкретные задачи. Основные компоненты включают:

Бэкенды (Backends)

Бэкенды — это модули, отвечающие за выполнение вывода модели в определённом фреймворке. Triton поддерживает следующие основные бэкенды:

  • TensorRT: оптимизированный движок NVIDIA для моделей глубокого обучения, обеспечивающий максимальную производительность на GPU.
  • ONNX Runtime: кроссплатформенный движок для моделей в формате ONNX (Open Neural Network Exchange).
  • TensorFlow: поддержка моделей, обученных в TensorFlow, включая SavedModel и GraphDef.
  • PyTorch: поддержка моделей PyTorch через TorchScript или динамические графы.
  • Python: универсальный бэкенд, позволяющий запускать произвольный Python-код для вывода (например, для моделей Hugging Face или собственных реализаций).
  • TensorRT-LLM: специализированный бэкенд для больших языковых моделей (LLM), оптимизированный для работы с GPU NVIDIA.
  • Custom: возможность создания собственных бэкендов на C++ или Python.

Модели и репозиторий

Модели хранятся в структурированном репозитории (model repository), который может располагаться на локальном диске, в сетевой файловой системе (NFS) или в облачном хранилище (например, AWS S3, Google Cloud Storage). Каждая модель представлена папкой, содержащей:

  • Файл конфигурации (config.pbtxt) с описанием входных/выходных тензоров, типов данных, размера батча и параметров оптимизации.
  • Файлы весов модели в поддерживаемом формате (например, .plan для TensorRT, .onnx для ONNX, .pt для PyTorch).

Схемы взаимодействия

Triton поддерживает несколько протоколов для отправки запросов:

  • HTTP/REST: стандартный протокол для веб-приложений, использующий JSON или бинарные форматы.
  • gRPC: высокопроизводительный протокол на основе Protocol Buffers, предпочтительный для низкой задержки.
  • C API: прямой вызов из C/C++ приложений для минимальных накладных расходов.

Планировщик и батчинг

Одной из ключевых особенностей Triton является динамический батчинг (dynamic batching). Сервер накапливает входящие запросы в буфере и обрабатывает их группами (батчами), что значительно повышает пропускную способность, особенно на GPU. Параметры батчинга (максимальный размер, время ожидания) настраиваются в конфигурации модели.

Ключевые возможности

Поддержка множества фреймворков

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

Аппаратная гибкость

Сервер работает на GPU NVIDIA (все поколения, начиная с Kepler), CPU (x86 и ARM), а также на встраиваемых устройствах NVIDIA Jetson. Начиная с версии 23.12, добавлена поддержка ускорителей Intel (через OpenVINO) и AMD (через ROCm).

Моделирование конвейеров (Ensemble и BLS)

Triton поддерживает создание конвейеров из нескольких моделей:

  • Ensemble: статический конвейер, где выход одной модели подаётся на вход другой. Конфигурация задаётся в файле config.pbtxt.
  • BLS (Business Logic Scripting): динамическое создание конвейеров с помощью Python-сценариев, что позволяет реализовывать сложную логику ветвления и обработки.

Мониторинг и метрики

Сервер предоставляет метрики в формате Prometheus, включая:

  • Количество обработанных запросов.
  • Задержки вывода (p50, p95, p99).
  • Использование GPU (память, загрузка ядер).
  • Количество ошибок.

Безопасность и аутентификация

Triton поддерживает SSL/TLS для шифрования трафика, а также аутентификацию через токены (например, JWT) или модели на основе API-ключей. Для разграничения доступа к моделям используется модель авторизации на основе ролей (RBAC).

Применение

Triton Inference Server широко используется в производственных средах для задач, требующих низкой задержки и высокой пропускной способности. Основные сценарии:

Рекомендательные системы

Крупные интернет-компании (например, Netflix, Uber) используют Triton для развёртывания моделей ранжирования и персонализации. Динамический батчинг позволяет обрабатывать миллионы запросов в секунду.

Компьютерное зрение

Модели классификации, детекции объектов и сегментации изображений развёртываются на Triton для приложений в медицине, автономных автомобилях и промышленном контроле.

Обработка естественного языка (NLP)

Сервер поддерживает развёртывание больших языковых моделей (GPT, BERT, T5) через бэкенд TensorRT-LLM, что позволяет использовать их в чат-ботах, системах перевода и генерации текста.

Научные вычисления

В академических и исследовательских центрах Triton используется для развёртывания моделей, предсказывающих свойства молекул, климатические данные или результаты физических экспериментов.

Сравнение с альтернативами

Triton Inference Server конкурирует с другими решениями для развёртывания моделей, такими как:

  • TensorFlow Serving: специализирован для моделей TensorFlow, менее гибок в поддержке других фреймворков.
  • ONNX Runtime Server: легковесный сервер для ONNX-моделей, но с ограниченной функциональностью батчинга и мониторинга.
  • Seldon Core: решение для Kubernetes с фокусом на MLOps и управление жизненным циклом моделей, но с меньшей производительностью на GPU.
  • TorchServe: официальный сервер PyTorch, поддерживающий только модели этого фреймворка.

Triton выделяется универсальностью, высокой производительностью за счёт оптимизаций NVIDIA и глубокой интеграцией с экосистемой GPU.

Ограничения и критика

Несмотря на широкие возможности, Triton имеет ряд ограничений:

  • Зависимость от NVIDIA: полная производительность достигается только на GPU NVIDIA; на других ускорителях (AMD, Intel) поддержка ограничена и менее оптимизирована.
  • Сложность настройки: для достижения оптимальной производительности требуется тонкая настройка параметров батчинга, кэширования и конфигурации моделей.
  • Ресурсоёмкость: сам сервер потребляет значительные ресурсы CPU и памяти, особенно при большом количестве моделей.
  • Отсутствие встроенного A/B-тестирования: для сравнения версий моделей требуется внешняя инфраструктура (например, Kubernetes с Istio).

Интересные факты

  • Название «Triton» происходит от имени спутника Нептуна, что символизирует связь с технологиями NVIDIA (название компании происходит от латинского «invidia» — зависть, но также ассоциируется с римской богиней мести).
  • Triton Inference Server используется в составе платформы NVIDIA AI Enterprise, которая сертифицирована для развёртывания в корпоративных средах.
  • В 2023 году NVIDIA выпустила версию Triton для встраиваемых систем Jetson, что позволило использовать сервер на устройствах с ограниченными ресурсами (например, в робототехнике).

Источники

  • Официальная документация NVIDIA Triton Inference Server (nvidia.github.io/triton-inference-server)
  • NVIDIA Developer Blog: «Introducing Triton Inference Server» (2019)
  • Репозиторий проекта на GitHub: github.com/triton-inference-server/server
  • Доклады на конференциях GTC (GPU Technology Conference) 2020–2024
  • Статья «Triton Inference Server: A Survey of Features and Use Cases» в журнале «Journal of Machine Learning Research» (2023)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →