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

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

true

tags.loadBalancing

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

false

tags.openshift

Включение применения ресурсов и параметров, специфичных для OpenShift

false

image – параметры контейнерного образа#

Параметр

Описание

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

image.repository

Полный путь к репозиторию образа Triton Inference Server

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

image.tag

Тег образа контейнера с указанием версии и зависимостей

26.07-py3

image.pullPolicy

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

IfNotPresent

numGpus – количество GPU#

Параметр

Описание

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

numGpus

Количество GPU, запрашиваемых для pod

1

modelRepository – репозиторий моделей#

Параметр

Описание

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

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 – аргументы командной строки#

Параметр

Описание

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

serverArgs

Аргументы для запуска сервера: путь к репозиторию моделей, режим контроля, интервал опроса

- '--model-repository=/models'
- '--model-control-mode=poll'
- '--repository-poll-secs=30'

autoscaling – настройки автомасштабирования#

Параметр

Описание

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

autoscaling.minReplicas

Минимальное количество реплик при автоматическом масштабировании

1

autoscaling.maxReplicas

Максимальное количество реплик при автоматическом масштабировании

3

autoscaling.metrics

Метрики для триггеров масштабирования

- type: Pods
  pods:
    metric:
      name: avg_time_queue_us
    target:
      type: AverageValue
      averageValue: 50

ingress – настройки Ingress для маршрутизации внешнего трафика#

Параметр

Описание

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

ingress.enabled

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

true

ingress.http.enabled

Включение Ingress для HTTP / REST API

true

ingress.http.className

Имя IngressClass для HTTP-трафика

nginx

ingress.http.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

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-трафика

- host: 'triton-http.{{ include "ingress.domain" . }}'
  paths:
    - path: /
      pathType: Prefix

ingress.http.tls

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

- secretName: ingress-tls
  hosts:
    - 'triton-http.{{ include "ingress.domain" . }}'

ingress.grpc.enabled

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

false

ingress.grpc.className

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

nginx

ingress.grpc.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам

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.{{ include "ingress.domain" . }}'
  paths:
    - path: /
      pathType: Prefix

ingress.grpc.tls

Конфигурация TLS для gRPC Ingress

- secretName: ingress-tls
  hosts:
    - 'triton-grpc.{{ include "ingress.domain" . }}'

serviceMonitor – параметры ServiceMonitor#

Параметр

Описание

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

serviceMonitor.enabled

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

true