SGLang#

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

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

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

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

Примечание

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

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

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

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

replicaCount — количество реплик pod SGLang сервера#

Параметр

Описание

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

replicaCount

Число реплик pod с сервером SGLang Для stateful inference с загруженной моделью обычно рекомендуется 1, масштабирование через HPA требует шардирования модели

1

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

Параметр

Описание

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

image.repository

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

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

image.tag

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

v0.5.9-cu130-amd64

image.pullPolicy

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

IfNotPresent

nameOverride — переопределение базового имени ресурсов чарта#

Параметр

Описание

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

nameOverride

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

Отсутствует

fullnameOverride — полное переопределение имени для всех ресурсов#

Параметр

Описание

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

fullnameOverride

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

Отсутствует

runtimeClass — настройка NVIDIA RuntimeClass для GPU-контейнеров#

Параметр

Описание

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

runtimeClass.enabled

Создание ресурса RuntimeClass в кластере. Обычно не требуется, если GPU Operator уже настроил runtime

false

runtimeClass.name

Имя ресурса RuntimeClass для ссылки в spec.pod.runtimeClassName

nvidia

runtimeClass.handler

Имя обработчика runtime, соответствующее настройке containerd/cri-o для NVIDIA runtime

nvidia

podLabels — дополнительные метки для pod SGLang#

Параметр

Описание

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

podLabels

Пользовательские метки для pod, полезные для селекции в NetworkPolicy, мониторинге или сервисных сетях

{
«engine»: «sglang»
}

podAnnotations — аннотации для pod сервера#

Параметр

Описание

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

podAnnotations

Аннотации для интеграции с системами мониторинга, service mesh или инструментами управления жизненным циклом

{}

service — настройки Kubernetes Service для доступа к SGLang#

Параметр

Описание

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

service.type

Тип сервиса: ClusterIP для внутреннего доступа, NodePort/LoadBalancer для внешнего

ClusterIP

service.port

Порт сервиса, на котором доступен SGLang API endpoint внутри кластера

80

service.targetPort

Порт контейнера, на котором слушает сервер SGLang (по умолчанию 30000)

30000

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

Параметр

Описание

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

ingress.enabled

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

true

ingress.className

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

nginx

ingress.annotations

Аннотации для контроллера Ingress: rate limiting, SSL redirect, CORS и др

{}

ingress.hosts

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

[
{
«host»: «sglang.»,
«paths»: [
{
«path»: «/»,
«pathType»: «Prefix»
}
]
}
]

ingress.tls

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

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

sglang — основные параметры запуска SGLang инференс сервера#

Параметр

Описание

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

sglang.command

Команда запуска процесса SGLang сервера на основе официального k8s-sglang-service.yaml

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

sglang.modelPath

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

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

sglang.host

Интерфейс для прослушивания: 0.0.0.0 для доступа извне pod, 127.0.0.1 для внутреннего

0.0.0.0

sglang.port

Порт, на котором SGLang сервер принимает HTTP/gRPC-запросы внутри контейнера

30000

sglang.extraArgs

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

[]

sglang.probes.liveness.enabled

Включение liveness probe для перезапуска pod при зависании сервера

true

sglang.probes.liveness.path

Endpoint для проверки жизнеспособности процесса

/health

sglang.probes.liveness.initialDelaySeconds

Задержка перед первой проверкой, учитывающая время загрузки модели в память

120

sglang.probes.liveness.periodSeconds

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

15

sglang.probes.liveness.timeoutSeconds

Тайм-аут одной проверки, важный для медленных ответов при высокой нагрузке

10

sglang.probes.liveness.failureThreshold

Количество неудачных проверок перед пометкой pod как failed и перезапуском

3

sglang.probes.readiness.enabled

Включение readiness probe для исключения pod из балансировки до готовности

true

sglang.probes.readiness.path

Endpoint для проверки готовности к обработке запросов (генерация токенов)

/health_generate

sglang.probes.readiness.initialDelaySeconds

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

120

sglang.probes.readiness.periodSeconds

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

15

sglang.probes.readiness.timeoutSeconds

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

10

sglang.probes.readiness.failureThreshold

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

3

sglang.probes.readiness.successThreshold

Количество успешных проверок для возврата pod в балансировку

1

hfToken — конфигурация аутентификации для доступа к Hugging Face Hub#

Параметр

Описание

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

hfToken.existingSecret

Имя секрета Kubernetes с токеном HF. Предпочтительный способ для безопасности и GitOps

""

hfToken.existingSecretKey

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

token

hfToken.literal

Прямое указание токена (не рекомендуется для production-сред из-за риска утечки в VCS)

""

gpu — настройки выделения GPU ресурсов для инференса#

Параметр

Описание

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

gpu.enabled

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

true

gpu.count

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

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 — лимиты и запросы ресурсов CPU/памяти#

Параметр

Описание

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

resources.limits.cpu

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

8

resources.limits.memory

Лимит памяти, критичный для избежания OOM-kill при загрузке больших моделей

40Gi

resources.requests.cpu

Гарантированное выделение CPU для планирования pod на узел с достаточными ресурсами

2

resources.requests.memory

Гарантированный объем памяти для стабильной инициализации модели без вытеснения

16Gi

hfCache — конфигурация постоянного хранилища для кеша Hugging Face#

Параметр

Описание

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

hfCache.enabled

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

true

hfCache.mountPath

Путь монтирования кеша внутри контейнера, должен совпадать с ожидаемым HF_HOME

/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 — настройка объема shared memory (/dev/shm) для производительности#

Параметр

Описание

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

shm.enabled

Включение emptyDir volume с type=Memory для увеличения /dev/shm, критично для multiprocessing в PyTorch

true

shm.sizeLimit

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

10Gi

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

Параметр

Описание

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

localtime.enabled

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

true

nodeSelector — селектор узлов для размещения pod#

Параметр

Описание

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

nodeSelector

Метки для привязки pod к узлам с GPU или специфичными характеристиками (например, nvidia.com/gpu.present=true)

{}

tolerations — допуски для размещения на узлах с taint#

Параметр

Описание

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

tolerations

Список tolerations для размещения на узлах с taint nvidia.com/gpu:NoSchedule или другими ограничениями

[]

affinity — правила аффинити для оптимизации размещения#

Параметр

Описание

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

affinity

Правила node/pod affinity для группировки с другими сервисами или распределения реплик по зонам

{}

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

Параметр

Описание

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

extraEnv

Список переменных окружения в формате Kubernetes: name/value или name/valueFrom для ссылок на Secret/ConfigMap

[]

extraVolumes — дополнительные volumes для монтирования в pod#

Параметр

Описание

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

extraVolumes

Сырые фрагменты Kubernetes volume spec для подключения внешних хранилищ, конфигурационных файлов или секретов

[]

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

Параметр

Описание

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

extraVolumeMounts

Сырые фрагменты volumeMount spec для монтирования extraVolumes в нужные пути внутри контейнера

[]