SGLang#

SGLang – сервер и среда выполнения для LLM-инференса, ориентированный на высокую производительность и эффективную работу с GPU (включая современные оптимизации исполнения, batching и др., в зависимости от режима/модели).

Основные задачи и возможности
  • Поднимает эндпоинт инференса (часто API, совместимые с OpenAI / собственные API, зависит от конфигурации).

  • Оптимизирует исполнение LLM на GPU – эффективное планирование, KV-кеш, batching.

  • Используется как «движок вывода» в Kubernetes (Deployment / Service), требует готового GPU-стека на узлах.

Примечание

SGLang устанавливается по умолчанию с компонентом «AI-inference».

Требуется компонент «AI-system».

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

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

replicaCount – количество реплик#

Параметр

Описание

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

replicaCount

Количество реплик pod инструмента

1

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

Параметр

Описание

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

image.repository

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

'{{ .Values.global.image.registry }}/{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-sglang/sglang'

image.tag

Тег образа контейнера, включающий версию CUDA и архитектуру (например, cu130 для CUDA 13.0)

v0.5.16-cu130

image.pullPolicy

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

IfNotPresent

nameOverride – переопределение имени чарта#

Параметр

Описание

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

nameOverride

Переопределение базового имени ресурсов чарта для генерации имен

""

fullnameOverride – полное переопределение имени чарта#

Параметр

Описание

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

fullnameOverride

Полное переопределение имени для всех создаваемых ресурсов чарта

""

runtimeClass – настройка NVIDIA RuntimeClass#

Параметр

Описание

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

runtimeClass.enabled

Создание ресурса RuntimeClass в кластере (не требуется, если ресурс уже создан с помощью GPU Operator)

false

runtimeClass.name

Имя ресурса RuntimeClass, указываемое в поле spec.pod.runtimeClassName pod

nvidia

runtimeClass.handler

Имя обработчика среды выполнения контейнеров, используемое ресурсом RuntimeClass. Должно соответствовать настройке containerd/cri-o для NVIDIA Container Runtime

nvidia

podLabels – метки pod#

Параметр

Описание

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

podLabels.engine

Значение пользовательской метки engine, добавляемой к pod

sglang

podAnnotations – аннотации pod#

Параметр

Описание

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

podAnnotations

Аннотации для pod

{}

service – настройки Service#

Параметр

Описание

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

service.type

Тип Service.
Возможные значения: ClusterIP для внутреннего доступа, NodePort/LoadBalancer для внешнего

ClusterIP

service.port

Порт Service

80

service.targetPort

Целевой порт Service

30000

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

Параметр

Описание

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

ingress.enabled

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

true

ingress.className

Имя IngressClass для выбора контроллера.
Возможные значения: nginx, traefik и др.

"nginx"

ingress.annotations

Аннотации, добавляемые ко всем создаваемым ресурсам.
Возможные значения: rate limiting, SSL redirect, CORS и др.

{}

ingress.hosts

Список хостов и путей для маршрутизации

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

ingress.tls

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

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

sglang – параметры запуска сервера#

Параметр

Описание

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

sglang.command

Команда запуска контейнера, переопределяющая стандартный entrypoint образа контейнера

["python3", "-m", "sglang.launch_server"]

sglang.modelPath

Путь к модели: локальный путь или идентификатор на Hugging Face для автозагрузки

"meta-llama/Llama-3.1-8B-Instruct"

sglang.host

Интерфейс для прослушивания.
Возможные значения: 0.0.0.0 для внешнего доступа, 127.0.0.1 для внутреннего

"0.0.0.0"

sglang.port

Порт для приема HTTP/gRPC-запросов внутри контейнера

30000

sglang.extraArgs

Дополнительные аргументы командной строки.
Возможные значения: max-model-len, tp-size, quantization и др.

[]

sglang.probes.liveness.enabled

Включение проверки работоспособности

true

sglang.probes.liveness.path

Эндпоинт для проверки работоспособности

/health

sglang.probes.liveness.initialDelaySeconds

Время ожидания перед первой проверкой работоспособности

120

sglang.probes.liveness.periodSeconds

Интервал между проверками работоспособности

15

sglang.probes.liveness.timeoutSeconds

Тайм-аут одной проверки работоспособности

10

sglang.probes.liveness.failureThreshold

Порог неудачных попыток проверки работоспособности

3

sglang.probes.readiness.enabled

Включение проверки готовности. Пока проверка неуспешна, pod не включается в балансировку

true

sglang.probes.readiness.path

Эндпоинт для проверки готовности к обработке запросов

/health_generate

sglang.probes.readiness.initialDelaySeconds

Задержка перед первой проверкой готовности

120

sglang.probes.readiness.periodSeconds

Интервал между проверками готовности

15

sglang.probes.readiness.timeoutSeconds

Тайм-аут одной проверки готовности

10

sglang.probes.readiness.failureThreshold

Порог неудач для исключения pod из эндпоинта сервиса

3

sglang.probes.readiness.successThreshold

Количество успешных попыток для подтверждения готовности

1

hfToken – аутентификация в Hugging Face#

Параметр

Описание

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

hfToken.existingSecret

Имя Secret с токеном Hugging Face

""

hfToken.existingSecretKey

Ключ внутри Secret, содержащий токен доступа Hugging Face

"token"

hfToken.literal

Явное указание токена доступа Hugging Face. Не используйте в производственной среде; указывайте токен через hfToken.existingSecret

""

gpu – настройки GPU#

Параметр

Описание

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

gpu.enabled

Включение выделения GPU-ресурсов. При false сервер запускается в CPU-режиме с аргументами, заданными в gpu.cpuArgs

true

gpu.count

Количество GPU для выделения pod. Для тензорного параллелизма должно соответствовать настройкам модели

1

gpu.cpuArgs

Аргументы, автоматически добавляемые при запуске в CPU-режиме.
Возможные значения: backend и device для torch_native

- "--device"
- "cpu"
- "--attention-backend"
- "torch_native"
- "--prefill-attention-backend"
- "torch_native"
- "--decode-attention-backend"
- "torch_native"

resources – запросы и лимиты ресурсов контейнера#

Параметр

Описание

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

resources.limits.cpu

Ограничение ресурсов CPU для контейнера

"8"

resources.limits.memory

Ограничение ресурсов памяти для контейнера

40Gi

resources.requests.cpu

Запрашиваемые ресурсы CPU для контейнера

"2"

resources.requests.memory

Запрашиваемые ресурсы памяти для контейнера

16Gi

hfCache – хранилище кеша Hugging Face#

Параметр

Описание

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

hfCache.enabled

Включение PersistentVolume для кеша моделей, ускоряющее повторные запуски и экономящее трафик

true

hfCache.mountPath

Путь монтирования тома с кешем внутри контейнера

/root/.cache/huggingface

hfCache.existingClaim

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

""

hfCache.storageClassName

StorageClass для динамического выделения тома (поддерживает шаблоны Helm из global settings)

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

hfCache.accessModes

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

["ReadWriteMany"]

hfCache.size

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

30Gi

shm – настройка разделяемой памяти#

Параметр

Описание

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

shm.enabled

Включение создания emptyDir-тома с типом Memory, монтируемого в /dev/shm – необходимо для для обмена данными между процессами в PyTorch

true

shm.sizeLimit

Лимит размера тома разделяемой памяти, должен быть достаточным для совместного использования данных между процессами

10Gi

localtime – монтирование настроек часового пояса#

Параметр

Описание

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

localtime.enabled

Монтирование /etc/localtime с хоста для синхронизации логов и метрик с системным временем в контейнере

true

nodeSelector – селектор узлов для планирования pod#

Параметр

Описание

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

nodeSelector

Селектор узлов для планирования pod

{}

tolerations – параметры Toleration для pod#

Параметр

Описание

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

tolerations

Toleration для размещения pod на узлах с ограничениями (taints)

[]

affinity – правила привязки (affinity и anti-affinity) pod к узлам#

Параметр

Описание

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

affinity

Настройки правила привязки (affinity и anti-affinity) pod к узлам

{}

extraEnv – дополнительные переменные окружения#

Параметр

Описание

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

extraEnv

Дополнительные переменные окружения в формате Kubernetes.
Возможные значения: name/value или name/valueFrom для ссылок на Secret/ConfigMap

[]

extraVolumes – дополнительные Volume#

Параметр

Описание

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

extraVolumes

Дополнительные Volume для pod

[]

extraVolumeMounts – дополнительные точки монтирования томов#

Параметр

Описание

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

extraVolumeMounts

Список дополнительных точек монтирования томов (VolumeMounts) в контейнере

[]