Блог AST-SoftPro
SGLang: сервер нового поколения для инференса LLM — RadixAttention, производительность, сравнение с vLLM
Введение
Если vLLM стал стандартом для production-инференса благодаря PagedAttention, то SGLang — это ответ на вопрос «что дальше?». Созданный командой LMSYS (Large Model System Organization) из Калифорнийского университета в Беркли, SGLang с самого начала ориентировался на задачи, которые vLLM обрабатывает недостаточно эффективно: многотуровые диалоги, агентные сценарии, reasoning-модели и структурированный вывод.
В этой статье мы разберём историю SGLang, ключевую технологию RadixAttention, которая отличает его от конкурентов, посмотрим на реальные бенчмарки и сравним SGLang с vLLM — чтобы вы могли принять обоснованное решение для своего проекта.
История SGLang: от LMSYS до production-стандарта
SGLang родился в лаборатории LMSYS (Large Model System Organization) при UC Berkeley. Исследователи столкнулись с конкретной проблемой: существующие движки инференса (включая vLLM) отлично справлялись с одиночными запросами, но теряли производительность при сложных сценариях — многотуровых диалогах, агентных workflow и few-shot задачах, где запросы разделяют общие префиксы.
Ответ — RadixAttention, алгоритм автоматического переиспользования KV-кэша через radix-дерево. Идея была описана в статье 2023 года «Efficient Execution of Structured Language Model Programs» (NeurIPS 2024), которая показала до 6.4× более высокую пропускную способность по сравнению с Guidance и vLLM на задачах agent control, logical reasoning и multi-turn chat.
Хронология
| Год | Событие |
|---|---|
| 2023 | Исследования в LMSYS, публикация RadixAttention |
| 2024 | Релиз SGLang, NeurIPS 2024 — статья о RadixAttention и структурированном инференсе |
| 2025 | Day-0 поддержка DeepSeek V3/R1, запуск на NVIDIA GB200 NVL72 (2.7× decode throughput), поддержка TPU через SGLang-Jax, sparse attention для DeepSeek-V3.2 |
| 2025 | PD Disaggregation + Expert Parallelism на 96 H100 GPU, 3.8× prefill и 4.8× decode на GB200 |
| 2026 | DeepSeek-V4 на день релиза, 25× инференс на NVIDIA GB300 NVL72, поддержка диффузионных моделей, multimodal (TTS, STT, Embeddings) |
SGLang быстро перерос из академического проекта в production-инструмент. Ключевое отличие от vLLM — фокус на структурированных программах (LM Programs): SGLang не просто обслуживает запросы, он понимает логику взаимодействия с моделью и оптимизирует её.
Ключевые технологии SGLang
RadixAttention — radix-дерево для KV-кэша
Это главная инновация SGLang. В отличие от PagedAttention в vLLM, который управляет памятью через виртуальные страницы, RadixAttention организует KV-кэш в radix-дерево — структуру данных, которая позволяет автоматически обнаруживать и переиспользовать общие префиксы между запросами.
Как это работает на практике:
Представьте три запроса с одинаковым system prompt:
-
«System: You are helpful. User: What's AI?»
-
«System: You are helpful. User: What's ML?»
-
«System: You are helpful. User: What's DL?»
Radix-дерево:
Root
└── "System: You are helpful. User: What's "
├── "AI?" → [KV cache для запроса 1]
├── "ML?" → [KV cache для запроса 2]
└── "DL?" → [KV cache для запроса 3]
Общий префикс вычисляется один раз и переиспользуется три раза. В реальном сценарии с system prompt из 800 токенов это даёт ~96% сокращение prefill-времени для последующих запросов.
💡 Для агентных workload, где десятки агентов разделяют один system prompt и tool definitions, cache hit rate достигает 75–95%. Это означает, что модель фактически не тратит время на повторный prefill общих частей — только на уникальные токены каждого запроса.
Почему RadixAttention лучше PagedAttention для многотуровых диалогов
PagedAttention решает проблему фрагментации памяти — это важно. Но он не решает проблему повторного вычисления общих префиксов. Каждый новый запрос с тем же system prompt проходит prefill заново.
RadixAttention решает обе проблемы:
-
Нет фрагментации — radix-дерево эффективно управляет памятью
-
Нет повторного prefill — общие префиксы переиспользуются мгновенно
-
Динамические диалоги — дерево адаптируется к эволюционирующему контексту
Continuous batching и speculative decoding
SGLang поддерживает continuous batching (как vLLM), но добавляет overlap scheduling для speculative decoding — технику, которая позволяет перекрывать этапы prefill и decode, ещё больше снижая латентность.
Structured output decoding
SGLang изначально проектировался для структурированного вывода. Встроенная поддержка:
-
Regex-ограниченная генерация — модель генерирует только текст, соответствующий заданному регулярному выражению
-
JSON schema — генерация валидного JSON по схеме
-
Compressed finite state machines — ускоренное декодирование через сжатые конечные автоматы
Это критично для бизнес-сценариев, где модель должна возвращать структурированные данные (JSON для API, SQL-запросы, формализованные отчёты).
Multi-GPU и распределённый инференс
SGLang поддерживает:
-
Tensor Parallelism — разбиение вычислений внутри слоя
-
Pipeline Parallelism — разбиение по слоям
-
Expert Parallelism (EP) — для MoE-моделей (Mixtral, DeepSeek)
-
PD Disaggregation — разделение prefill и decode на разные GPU
PD Disaggregation — особенно важная оптимизация для workload с высокой вариативностью запросов: prefill-тяжёлые запросы обрабатываются на одних GPU, decode — на других.
Поддержка TPU и AMD
SGLang работает не только на NVIDIA GPU. С октября 2025 года доступен SGLang-Jax — бэкенд для нативного запуска на TPU. Также поддерживаются AMD Instinct GPU (MI355X) с оптимизациями для DeepSeek.
Практическое применение SGLang в бизнесе
Сценарий 1: Агентная платформа с многотуровыми диалогами
Платформа, где AI-агенты ведут длительные диалоги с пользователями, используют tool calling и разделяют общие system prompt.
Без SGLang: каждый тур диалога проходит полный prefill — system prompt + история + новый запрос. При 1000 активных диалогов это тысячи повторных prefill-операций в минуту.
С SGLang: RadixAttention кэширует system prompt и историю диалога. Новый тур требует prefill только уникальных токенов. Cache hit rate 75–95% означает, что модель тратит 5–25% времени на prefill вместо 100%.
⚠️ Поверхностное развёртывание SGLang без понимания тонкостей RadixAttention может привести к «prefix hijacking» — когда одно несовпадающее слово в префиксе (например, «User:» вместо «user:») обнуляет весь cache hit. Правильная настройка требует внимания к деталям.
Сценарий 2: Reasoning-модели (DeepSeek-R1, QwQ)
Reasoning-модели генерируют длинные цепочки рассуждений перед ответом. Это создаёт специфический профиль нагрузки: длинные контексты, высокая вариативность, необходимость быстрого TTFT.
SGLang показывает лучшие результаты для reasoning-моделей среди всех движков инференса:
-
Лучший TTFT по сравнению с vLLM
-
Лучший throughput для DeepSeek-R1 и QwQ
-
Day-0 поддержка новых моделей DeepSeek
Сценарий 3: Few-shot и RAG-пайплайны
В few-shot сценариях в prompt встраиваются примеры (иногда тысячи токенов), которые повторяются от запроса к запросу. В RAG — контекст из базы знаний, который частично совпадает между запросами.
Пример: 2000 токенов примеров + 50 токенов запроса.
-
Запрос 1: prefill 2050 токенов
-
Запрос 2: prefill только 50 токенов (2000 переиспользованы из кэша)
Это 40× ускорение prefill для последующих запросов.
Сценарий 4: Структурированный вывод для API
Сервис, где LLM генерирует JSON-ответы для downstream-систем: анализ документов, классификация, извлечение сущностей.
SGLang обеспечивает:
-
Гарантированную валидность вывода через regex/JSON schema
-
Ускоренное декодирование через compressed finite state machines
-
Без post-processing — модель генерирует валидный JSON напрямую
💡 Команды, которые доверяют развёртывание критичной AI-инфраструктуры опытным специалистам, экономят время и деньги. Архитектурные ошибки — неправильный выбор между RadixAttention и PagedAttention для конкретного workload, неоптимальная конфигурация PD Disaggregation — обнаруживаются только при реальной нагрузке, когда их исправление стоит в разы дороже.
Сравнение SGLang с аналогами
SGLang vs vLLM
| Параметр | SGLang | vLLM |
|---|---|---|
| KV-кэш | RadixAttention (radix-дерево) | PagedAttention (виртуальные страницы) |
| Prefix caching | Автоматический, динамический | Ручной (automatic prefix caching — ограниченный) |
| Многотуровые диалоги | Отличная поддержка (75–95% cache hit) | Требует повторного prefill |
| Reasoning-модели | Лучший TTFT и throughput | Хорошая поддержка |
| Structured output | Встроенный (regex, JSON schema) | Через external libraries |
| PD Disaggregation | Да | Нет |
| Expert Parallelism | Да (для MoE) | Нет |
| TPU | Да (SGLang-Jax) | Нет |
| Зрелость | Младший проект | Более зрелый, больше пользователей |
| Экосистема | LMSYS, NVIDIA | Linux Foundation, PyTorch Foundation |
Когда выбирать SGLang
| Сценарий | Рекомендация | Почему |
|---|---|---|
| Многотуровые диалоги с общим контекстом | SGLang | RadixAttention даёт 75–95% cache hit |
| Reasoning-модели (DeepSeek-R1, QwQ) | SGLang | Лучший TTFT и throughput |
| Агентные workload | SGLang | Автоматический prefix caching |
| Few-shot / RAG с общими примерами | SGLang | 40× ускорение prefill |
| Структурированный вывод (JSON) | SGLang | Встроенная валидация |
| Production API с высокой нагрузкой (простые запросы) | vLLM | Проверенный в бою, зрелый |
| Long-context (200k+ токенов) | vLLM | PagedAttention эффективнее для уникальных контекстов |
| TPU-инфраструктура | SGLang | Единственный с нативной поддержкой |
SGLang vs TGI
TGI от Hugging Face переведён в maintenance mode (декабрь 2025). Hugging Face официально рекомендует vLLM или SGLang для новых развёртываний. SGLang — более перспективный выбор для workload с общими префиксами.
SGLang vs Ollama
Ollama — инструмент для локальной разработки и прототипирования. SGLang — production-движок для высокой конкурентности. Разница в пропускной способности при 8 одновременных пользователях — 5.5× в пользу SGLang (как и в сравнении с vLLM).
Развёртывание SGLang: от Docker до продакшена
Быстрый старт через Docker
docker run --gpus all -p 30000:30000 \
lmsysorg/sglang:latest \
--model-path meta-llama/Llama-3.1-8B-Instruct \
--host 0.0.0.0 \
--port 30000
Проверка через OpenAI-совместимый API:
curl http://localhost:30000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model": "Llama-3.1-8B-Instruct", "messages": [{"role": "user", "content": "Привет"}]}'
Ключевые параметры для продакшена
| Параметр | Описание | Рекомендация |
|---|---|---|
--mem-fraction-static |
Доля VRAM для KV-кэша | 0.85–0.95 (оставлять запас) |
--context-length |
Максимальная длина контекста | По реальной потребности |
--tensor-parallel-size |
Параллелизм по тензорам | Количество GPU на один запрос |
--enable-radix-cache |
Включение RadixAttention | Всегда включено по умолчанию |
--schedule-concurrency |
Конкурентность планировщика | Тестировать под нагрузкой |
⚠️ Минимальная конфигурация подходит для тестирования. Для продакшена необходимо настроить мониторинг (TTFT, throughput, VRAM), автоскейлинг и аутентификацию API. Без правильной настройки вы получите лишь часть потенциальной производительности.
Риски самостоятельного развёртывания
Развёртывание SGLang — это не «установил и забыл». Вот типичные проблемы, с которыми сталкиваются команды без опыта:
1. Prefix hijacking. Одно несовпадающее слово в префиксе (например, «User:» вместо «user:») обнуляет весь cache hit. Проблема была задокументирована ещё в 2023 году в LMSYS — capitalised «User:» снижал hit rate с 94% до 61%. Решение — нормализация токенов и фиксация system prompt.
2. Неправильная оценка workload. SGLang превосходит vLLM при workload с общими префиксами, но для уникальных запросов (например, long-context с уникальным контекстом) vLLM может быть эффективнее. Выбор без анализа workload — ошибка.
3. Проблемы с безопасностью. OpenAI-совместимый API без аутентификации — открытый доступ к GPU-ресурсам. Это вопрос безопасности инфраструктуры, а не просто производительности.
4. Архитектурные ошибки. Неправильный выбор между Tensor Parallelism и Pipeline Parallelism, неоптимальная конфигурация PD Disaggregation — эти ошибки обнаруживаются только при реальной нагрузке.
💡 Для продакшн-решений рекомендуется привлечение специалистов с опытом — это снижает риски ошибок безопасности, архитектурных просчётов и неоптимального использования ресурсов. Команды, которые инвестируют в профессиональную экспертизу на этапе проектирования, экономят значительные средства на исправление ошибок, которые могли быть предотвращены изначально.
Заключение
SGLang прошёл путь от академического проекта LMSYS до одного из ключевых инструментов AI-инфраструктуры. RadixAttention, PD Disaggregation, Expert Parallelism и встроенная поддержка структурированного вывода — это не просто фичи, а реальные технологии, которые решают проблемы, с которыми vLLM справляется недостаточно эффективно.
Но выбор движка инференса — лишь половина задачи. Вторая половина — корректная реализация с учётом безопасности, мониторинга, масштабирования и edge-кейсов. Если ваш проект требует глубокой экспертизы — от архитектуры до безопасности — стоит рассмотреть профессиональную помощь. Это инвестиция, которая окупается снижением рисков и ускорением выхода на рынок.
Разработка AI-инфраструктуры — это не только код. Это проектирование архитектуры, тестирование под нагрузкой, мониторинг и поддержка. Комплексный подход с привлечением специалистов обеспечивает качество на всех этапах — от выбора модели до обслуживания продакшена.