Triton Inference Server vLLM#

Triton Inference Server vLLM - специализированный вариант Triton, ориентированный на LLM-сервинг через бэкенд vLLM. Triton выступает в роли платформенной инфраструктуры (обработка запросов по HTTP/gRPC, управление репозиторием моделей, жизненный цикл), а генерацию токенов выполняет движок vLLM. Для развертывания LLM необходимо наличие CUDA-совместимого устройства и корректно установленного драйвера.

Основные задачи и возможности
  • Обеспечивает эффективную генерацию токенов при LLM-инференсе через vLLM с высокой пропускной способностью и низкой задержкой благодаря оптимизациям, например, paged KV cache.

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

  • Требует корректно оформленной модели в репозитории, включающей конфигурационные файлы config.pbtxt и model.json, при этом обученные параметры обычно размещаются отдельно и указываются через путь или идентификатор (ID).

  • На практике требует GPU (nvidia.com/gpu, драйвер и Container Toolkit). Для CPU-кластеров этот инструмент нецелевой и должен быть отключаемым или защищен проверками (guarded).

Примечание

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

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

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

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

Параметры Triton Inference Server vLLM можно переопределить через редактирование нужных значений в 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-vllm-python-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-vllm-http.»,
«paths»: [{ «path»: «/», «pathType»: «Prefix» }]
}
]

ingress.http.tls

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

[
{
«secretName»: «ingress-tls»,
«hosts»: [«triton-vllm–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-vllm–grpc.»,
«paths»: [{ «path»: «/», «pathType»: «Prefix» }]
}
]

ingress.grpc.tls

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

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

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

Параметр

Описание

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

serviceMonitor.enabled

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

true