Triton Inference Server#

Triton Inference Server - универсальный инференс сервер для промышленной эксплуатации в реальных условиях (production serving) моделей (CV/NLP/LLM), поддерживает разные бэкенды (TensorRT, ONNX Runtime, PyTorch, Python backend и т.д.), а также оптимизацию вывода, масштабирование и мониторинг.

Основные задачи и возможности
  • Развертывание моделей через стандартизованные протоколы (HTTP/gRPC), управление репозиторием моделей.

  • Высокая производительность за счет динамического batching, параллельной обработки запросов и оптимизации их выполнения.

  • Платформенный инференс-сервер, где важны гарантированный уровень обслуживания, наблюдаемость и управление жизненным циклом моделей.

Примечание

Triton Inference Server не является инструментом по умолчанию в компоненте AI-inference. Его можно установить как инструмент (Tool) или явно включить в список spec.tools при установке компонента AI-inference.

Требует установленного компонента AI-system.

Если модели монтируются в pod с помощью modelRepository.type=inlineNfs, то на узлах, где будут pod tritonserver, должен стоять пакет nfs-utils.

Конфигурация values#

Параметры Triton Inference Server можно переопределить через редактирование нужных значений в spec.values. Общее описание конфигурации values для инструментов приведено в разделе «Конфигурации инструментов дополнительных компонентов».

tags — функциональные флаги для выбора вариантов развертывания#

Параметр

Описание

Значение по умолчанию

tags.autoscaling

Включение ресурсов горизонтального автомасштабирования (HPA) для адаптации к нагрузке на инференс

true

tags.loadBalancing

Флаг включения расширенной балансировки нагрузки между репликами сервера

false

image — конфигурация контейнерного образа Triton Server#

Параметр

Описание

Значение по умолчанию

image.repository

Полный путь к репозиторию образа Triton с поддержкой Helm-шаблонов для интеграции с глобальными настройками registry

{{ .Values.global.image.registry }}/{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-triton-inference-server/tritonserver

image.tag

Тег образа: версия NGC-контейнера с указанием Python и зависимостей

26.01-py3

image.pullPolicy

Политика загрузки образа: IfNotPresent для использования кеша, Always для гарантированного обновления

IfNotPresent

numGpus — количество GPU для выделения pod инференса#

Параметр

Описание

Значение по умолчанию

numGpus

Число GPU, запрашиваемых для pod. Влияет на resources.limits.nvidia.com/gpu и планирование на узлы с достаточным количеством устройств

1

modelRepository — конфигурация хранилища моделей для Triton#

Параметр

Описание

Значение по умолчанию

modelRepository.type

Тип бэкенда хранилища: PersistentVolumeClaim или inlineNfs (прямое монтирование NFS). Определяет стратегию доступа к моделям

inlineNfs

modelRepository.pvc.existingClaim

Имя существующего PersistentVolumeClaim для повторного использования хранилища моделей между релизами

""

modelRepository.pvc.storageClassName

StorageClass для динамического выделения тома, поддерживает шаблоны Helm из global.persistence.storageClass

{{ .Values.global.persistence.storageClass }}

modelRepository.pvc.accessModes

Режимы доступа к тому: ReadWriteMany для общего доступа между pod, ReadWriteOnce для изолированного использования

["ReadWriteMany"]

modelRepository.pvc.size

Запрашиваемый размер тома для хранения моделей, артефактов и временных файлов инференса

100Gi

modelRepository.pvc.subPath

Подпуть внутри тома для изоляции данных конкретного релиза или окружения

""

modelRepository.nfs.server

Адрес NFS-сервера для прямого монтирования при выборе типа inlineNfs

""

modelRepository.nfs.path

Экспортируемый путь на NFS-сервере с моделями в формате Triton Model Repository

""

serverArgs — аргументы командной строки для Triton Server#

Параметр

Описание

Значение по умолчанию

serverArgs

Список аргументов для запуска сервера: путь к репозиторию моделей, режим контроля (poll для автообновления), интервал опроса. Поддерживает --grpc-use-ssl, --log-verbose и другие флаги Triton

[
«–model-repository=/models»,
«–model-control-mode=poll»,
«–repository-poll-secs=30»
]

autoscaling — настройки горизонтального автомасштабирования (HPA)#

Параметр

Описание

Значение по умолчанию

autoscaling.minReplicas

Минимальное количество реплик pod, гарантирующее доступность сервиса при низкой нагрузке

1

autoscaling.maxReplicas

Максимальное число реплик для ограничения масштабирования и контроля затрат на ресурсы

3

autoscaling.metrics

Метрики для триггеров масштабирования: тип (Pods), имя метрики (avg_time_queue_us), целевое среднее значение для принятия решения о масштабировании

[
{
«type»: «Pods»,
«pods»: {
«metric»: { «name»: «avg_time_queue_us» },
«target»: {
«type»: «AverageValue»,
«averageValue»: 50
}
}
}
]

ingress — конфигурация Ingress для внешнего доступа к HTTP/gRPC endpoint#

Параметр

Описание

Значение по умолчанию

ingress.enabled

Глобальный переключатель создания всех Ingress-ресурсов. Позволяет быстро отключить внешний доступ

true

ingress.http.enabled

Включение Ingress для HTTP API Triton (REST endpoint)

true

ingress.http.className

Имя IngressClass для выбора контроллера (nginx, traefik и др.) для HTTP-трафика

nginx

ingress.http.annotations

Аннотации для nginx-ingress: тайм-ауты для долгих инференс-запросов, отключение буферизации для стриминга, лимиты размера тела запроса

{
«nginx.ingress.kubernetes.io/proxy-read-timeout»: «3600»,
«nginx.ingress.kubernetes.io/proxy-send-timeout»: «3600»,
«nginx.ingress.kubernetes.io/proxy-body-size»: «0»,
«nginx.ingress.kubernetes.io/proxy-buffering»: «off»
}

ingress.http.hosts

Список хостов и путей для маршрутизации HTTP-трафика. Поддерживает шаблоны Helm для динамического домена

[
{
«host»: «triton-http.»,
«paths»: [{ «path»: «/», «pathType»: «Prefix» }]
}
]

ingress.http.tls

TLS-конфигурация для HTTP: secret с сертификатом и список хостов для HTTPS

[
{
«secretName»: «ingress-tls»,
«hosts»: [«triton-http.»]
}
]

ingress.grpc.enabled

Включение Ingress для gRPC API Triton. Отключено по умолчанию, так как gRPC часто используется внутри кластера

false

ingress.grpc.className

IngressClass для gRPC-трафика

nginx

ingress.grpc.annotations

Аннотации для gRPC: backend-protocol=GRPC для корректной обработки HTTP/2, тайм-ауты, отключение буферизации, keepalive для стриминга

{
«nginx.ingress.kubernetes.io/backend-protocol»: «GRPC»,
«nginx.ingress.kubernetes.io/proxy-read-timeout»: «3600»,
«nginx.ingress.kubernetes.io/proxy-send-timeout»: «3600»,
«nginx.ingress.kubernetes.io/proxy-buffering»: «off»,
«nginx.ingress.kubernetes.io/upstream-keepalive-connections»: «128»
}

ingress.grpc.hosts

Хосты и пути для gRPC-маршрутизации

[
{
«host»: «triton-grpc.»,
«paths»: [{ «path»: «/», «pathType»: «Prefix» }]
}
]

ingress.grpc.tls

TLS-конфигурация для gRPC: termination на Ingress, backend общается по незашифрованному gRPC

[
{
«secretName»: «ingress-tls»,
«hosts»: [«triton-grpc.»]
}
]

serviceMonitor — интеграция с Prometheus Operator для сбора метрик#

Параметр

Описание

Значение по умолчанию

serviceMonitor.enabled

Включение ServiceMonitor ресурса для автоматического обнаружения метрик Triton Prometheus Operator

true