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

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

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

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

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

ingress.http.tls

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

- secretName: ingress-tls
  hosts:
    - 'triton-vllm-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-vllm-grpc.{{ include "ingress.domain" . }}'
  paths:
    - path: /
      pathType: Prefix

ingress.grpc.tls

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

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

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

Параметр

Описание

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

serviceMonitor.enabled

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

true