# SGLang: установка и локальный сервер LLM

Источник: https://modelium.tech/zhurnal/sglang/

SGLang — сервер инференса для языковых и мультимодальных моделей, а не модель и не графический чат. Для первого локального теста подготовьте совместимый GPU, установите runtime в отдельном окружении, запустите конкретную модель на loopback-адресе и проверьте ответ через /v1/chat/completions. Успех команды не доказывает совместимость другой модели или достаточность памяти для рабочего контекста.

**Проверено по первоисточникам 24 сентября 2026 года.** Команды ниже — документированный путь, а не протокол запуска Modelium. Версия `sglang==0.5.20` подтверждена PyPI [s7](#src-s7), но рабочая связка с вашим драйвером, GPU и моделью устанавливается только на вашем стенде. Частотность запроса «sglang установка» не измерена.

## Для чего нужен SGLang и когда его выбирать?

SGLang обслуживает запросы к загруженным языковым и мультимодальным моделям как сервер инференса. Разработчики описывают оптимизации планирования запросов, кэширования префикса и параллелизма; это **возможности продукта**, а не замер ускорения для вашего проекта [s6](#src-s6). Он нужен, если несколько приложений должны обращаться к локальной модели по API и вы готовы администрировать отдельный сервер. Если нужен первый чат без серверной настройки, начните с [маршрута выбора локальной LLM](/zhurnal/lokalnye-llm/) и сравните более простой клиент с серверным runtime. Поддержка семейства Qwen или Llama в списке не доказывает, что каждый чекпойнт и его квантование заведутся на любом железе [s5](#src-s5).

Здесь конкретный результат: **сервер слушает **`**127.0.0.1:30000**`**, запрос к **`**/v1/chat/completions**`** возвращает HTTP-ответ с **`**choices**`**, а вы сохраняете реальные версии и модель**. Не считайте надпись о запуске сервера доказательством работоспособности API и не путайте локальный endpoint с облачным сервисом.

## Что проверить до установки?

Официальный quickstart для основного NVIDIA-пути называет Python 3.10+, Linux как рекомендуемую ОС и NVIDIA CUDA GPU уровня sm80+; отдельные инструкции существуют для AMD, CPU и других платформ [s4](#src-s4). Это **рамки одного quickstart**, не универсальная минимальная конфигурация и не обещание работы с любым объёмом видеопамяти. В установочной инструкции текущей ветки есть отдельные примечания о CUDA и прежних сборках; сверяйте выбранную версию runtime с драйвером и библиотеками до установки, а не переносите рецепт NVIDIA на CPU или Mac [s1](#src-s1). Для памяти важны конкретные веса, dtype/квант, контекст и число параллельных запросов; используйте [методику оценки памяти](/zhurnal/videokarta-dlya-llm/), не размер файла как «минимум VRAM».

Для проверки возьмите **одну** модель. Quickstart SGLang использует `qwen/qwen2.5-0.5b-instruct` [s4](#src-s4). Карточка автора `Qwen/Qwen2.5-0.5B-Instruct` описывает текстовую instruction-модель и указывает Apache-2.0; это отдельная лицензия весов, а не свойство всех моделей, которые может обслуживать SGLang [s3](#src-s3). У runtime текст Apache License 2.0 находится в закреплённом LICENSE проекта [s8](#src-s8). Перед рабочим использованием всё равно проверьте условия конкретных весов и зависимостей; юридический вывод для вашей организации здесь не делается.

## Как установить и поднять сервер?

На **подготовленном Linux с совместимым NVIDIA-стеком** установите пакет в отдельном Python-окружении, не в системном интерпретаторе. Официальная инструкция допускает pip/uv; зафиксированная для этой страницы версия PyPI — `0.5.20` [s1](#src-s1)[s7](#src-s7). Например, при уже установленном `uv`:

uv venv .venvuv pip install --python .venv/bin/python --prerelease=allow 'sglang==0.5.20'.venv/bin/sglang serve --model-path Qwen/Qwen2.5-0.5B-Instruct --host 127.0.0.1 --port 30000

Команда сервера следует форме `sglang serve --model-path ... --host ... --port ...` из quickstart; `127.0.0.1` вместо показанного там `0.0.0.0` — **редакционная мера**, чтобы не открывать тестовый API сети [s4](#src-s4). Первый старт может скачать модель: предварительно оцените доступность HF, сеть, свободное место и условия использования. Не передавайте токен Hugging Face в публикацию, историю shell или URL. Точная ревизия карточки Qwen в источниках закреплена, **но команда с именем модели без явного pin не закрепляет байты загружаемых весов** [s3](#src-s3). Для воспроизводимого пилота сохраните разрешённую ревизию загруженного snapshot и версию runtime отдельно.

Ожидаемое сообщение readiness в quickstart — `The server is fired up and ready to roll!`; после него документация указывает локальный Swagger по `/docs` [s4](#src-s4). Это промежуточная проверка, а не финальная: API нужно вызвать отдельно. Другие платформы имеют собственные backend-условия; не заменяйте модель на Qwen 3.8, DeepSeek V4 или большой квант и не ожидайте того же потребления памяти.

## Как проверить ответ API?

Из другого терминала на **той же машине**, пока сервер работает, отправьте документированный Chat Completions-запрос [s4](#src-s4)[s2](#src-s2):

curl -sS -i http://127.0.0.1:30000/v1/chat/completions \  -H 'Content-Type: application/json' \  -d '{"model":"Qwen/Qwen2.5-0.5B-Instruct","messages":[{"role":"user","content":"Ответь одним предложением: что такое локальный инференс?"}],"max_tokens":80}'

Проверьте **фактический HTTP-статус и непустой **`**choices[0].message.content**`; сохраните версию пакета, точный model ID из ответа/конфигурации, сведения о GPU и время. Если сервер возвращает ошибку по имени модели, сравните `model` в запросе с тем, как запущен `--model-path`; quickstart использует регистр `qwen/qwen2.5-0.5b-instruct`, а здесь выбран канонический путь HF [s4](#src-s4)[s3](#src-s3). Не считайте любой HTTP 200 доказательством правильного ответа по вашей рабочей задаче: создайте несколько тестовых запросов на своих разрешённых синтетических данных и запишите ожидаемые критерии.

Для клиента, который говорит на OpenAI Chat Completions, документация показывает `base_url` вида `http://127.0.0.1:30000/v1` и вызов `chat.completions.create`; не переносите автоматически поддержку **всех** полей облачного API на данную версию SGLang и выбранную модель [s2](#src-s2). Тест без внешнего доступа после загрузки весов и сетевой журнал нужны отдельно, если вы заявляете закрытый контур.

## Что делать, если сервер не стартовал?

- **Несовместимый GPU, драйвер или CUDA:** вернитесь к условиям именно вашего пакета и платформенного гайда. Quickstart не охватывает каждый GPU; сообщения FlashInfer он предлагает разбирать через другой backend, но это диагностика, а не гарантия совместимости [s4](#src-s4)[s1](#src-s1).

- **Ошибка **`**CUDA_HOME is not set**`**:** в инструкции указан путь к установленному CUDA toolkit через `CUDA_HOME`; сначала установите и проверьте комплект соответствующей версии, не подставляйте вымышленный путь [s1](#src-s1).

- **Загрузка модели или память:** отличайте сетевую ошибку HF, неподходящий формат и нехватку памяти при загрузке/длинном контексте. Уменьшите задачу до документированного тестового чекпойнта и проверьте журнал сервера, прежде чем менять квант или увеличивать контекст [s4](#src-s4)[s3](#src-s3).

- **Порт занят или клиент недоступен:** проверьте, что сервер запущен, адрес и порт совпадают, а клиент находится на том же хосте. Для доступа из другой сети требуется осознанная конфигурация прокси, аутентификации и сетевых правил; менять `--host` на `0.0.0.0` ради «быстро починить» без контроля доступа нельзя. Публичный API без защит не рекомендуем; описанный loopback-тест не доказывает изоляции всех соседних сервисов.

Для остановки тестового процесса прервите сервер в его терминале; чтобы удалить пример, удалите созданное `.venv` и отдельно сохранённый кэш модели **после** проверки, что он не нужен другим приложениям. Не удаляйте общий HF-кэш на рабочем сервере вслепую.

**Следующий шаг:** сначала добейтесь собственного HTTP-ответа на loopback, сохраните ошибку, если тест не прошёл. Затем [оцените память и контекст для вашей рабочей модели](/zhurnal/videokarta-dlya-llm/); если нужен выбор другого серверного стека, откройте [vLLM](/zhurnal/vllm/) и сравните на одинаковом чекпойнте, железе и запросах — без выдуманного рейтинга скорости.

## Источники

1. [SGLang — Installation](https://docs.sglang.ai/get_started/install.html) — получено 2026-09-24
2. [SGLang — OpenAI APIs: Completions](https://docs.sglang.ai/basic_usage/openai_api_completions.html) — получено 2026-09-24
3. [Qwen — Qwen2.5-0.5B-Instruct, фиксированная карточка](https://huggingface.co/Qwen/Qwen2.5-0.5B-Instruct/resolve/7ae557604adf67be50417f59c2c2f167def9a775/README.md) — получено 2026-09-24
4. [SGLang — Quickstart](https://docs.sglang.io/docs/get-started/quickstart) — получено 2026-09-24
5. [SGLang — Supported models](https://docs.sglang.io/docs/supported-models) — получено 2026-09-24
6. [SGLang — README, закреплённый коммит](https://raw.githubusercontent.com/sgl-project/sglang/77173ffb08e94e474a719c1efd01fa534131c6a8/README.md) — получено 2026-09-24
7. [PyPI — sglang: версии и дата выпуска](https://pypi.org/pypi/sglang/json) — получено 2026-09-24
8. [SGLang — LICENSE, закреплённый коммит](https://raw.githubusercontent.com/sgl-project/sglang/77173ffb08e94e474a719c1efd01fa534131c6a8/LICENSE) — получено 2026-09-24
