SGLang
Фреймворк для структурированной генерации и эффективного инференса LLM с RadixAttention.
Что такое SGLang
SGLang (Structured Generation Language) — фреймворк инференса и сервинга LLM от команды LMSYS. Ключевое отличие от vLLM — RadixAttention: KV-кеш организован как radix-дерево, что обеспечивает автоматическое переиспользование общих префиксов между запросами без явной настройки. Это особенно выгодно для сценариев с длинными системными промптами или RAG, где большой префикс повторяется у множества запросов.
На задачах с длинными общими префиксами SGLang демонстрирует TPS выше, чем vLLM, при той же VRAM. На моделях типа Llama 3 70B на H100 SXM SGLang достигает 1500–2000 токенов/с суммарного throughput.
Ключевые возможности
- RadixAttention — автоматическое переиспользование KV-кеша по общим префиксам
- Structured outputs — принудительная генерация JSON, regex, grammar без потери скорости
- Speculative decoding — поддержка черновой модели для ускорения декодирования
- OpenAI-совместимый API — drop-in замена для vLLM/TGI
- Multi-modal — поддержка vision моделей (LLaVA, InternVL и др.)
Быстрый старт
pip install sglang[all]
# Запуск сервера
python -m sglang.launch_server \
--model-path meta-llama/Llama-3.1-8B-Instruct \
--host 0.0.0.0 \
--port 30000
# Docker
docker run --gpus all -p 30000:30000 \
lmsysorg/sglang:latest \
python -m sglang.launch_server \
--model-path meta-llama/Llama-3.1-70B-Instruct \
--tp 4
Запрос с принудительным JSON-форматом:
import sglang as sgl
@sgl.function
def extract_info(s, text):
s += sgl.system("Отвечай только JSON.")
s += sgl.user(text)
s += sgl.assistant(sgl.gen("result", max_tokens=200))
state = extract_info.run(text="Имя: Иван, возраст: 30")
print(state["result"])
Когда выбирать SGLang
SGLang особенно выгоден при:
- Длинных одинаковых системных промптах (RAG, агенты)
- Структурированной генерации (JSON, код)
- Multi-modal задачах
- Максимальном TPS на A100/H100
Связанные термины
- prompt caching — RadixAttention как продвинутый prefix caching
- structured outputs — одна из сильных сторон SGLang
- speculative decoding
- vLLM — альтернатива для универсального сервинга
- Подробный гайд по SGLang
Готовы запустить GPU-задачу?
Запустить GPU-сервер