SGLang в Docker: запуск на NVIDIA GPU и проверка локального API
На странице · 4 разделов
Официальный образ SGLang позволяет запустить локальный сервер модели в Docker на совместимом NVIDIA GPU. Закрепите digest образа и ревизию модели, направьте порт только на localhost, затем проверьте реальный ответ Chat API. Docker не заменяет проверку драйвера, памяти и сетевой изоляции; это инструкция по первоисточникам, а не результат прогона Modelium.
На 6 октября 2026 года официальный quickstart SGLang предлагает образ lmsysorg/sglang для сервера на Linux с NVIDIA GPU. В нём уже есть Python и зависимости SGLang, но совместимый GPU, драйвер и настроенный NVIDIA Container Toolkit нужны на хосте отдельно. Ниже — контрольный запуск текстовой модели и проверка API, а не тест производительности или качества русского языка. s1 s2
Что проверить до запуска контейнера
Подготовьте Docker Engine, поддерживаемый NVIDIA GPU и драйвер, совместимый с CUDA 13, затем настройте NVIDIA Container Toolkit для Docker. Именно такую комбинацию описывает текущая документация SGLang для обычного CUDA-образа; AMD ROCm, CPU и Windows не следует подставлять в эту команду без отдельного образа и инструкции. Проверка доступности GPU на хосте и внутри Docker — предварительное условие, не выводимое из модели видеокарты или размера файла весов. Modelium не проверял конкретное устройство читателя. s1
Для контрольного запроса возьмите Qwen/Qwen3-0.6B: модель приведена в официальном Docker quickstart, а карточка Hugging Face закреплена на ревизии c1899de289a04d12100db370d81485cdf75e47ca. Метка apache-2.0 описывает репозиторий модели; при рабочем использовании отдельно изучите полный текст лицензии и условия ваших данных. Выбор компактного примера не означает гарантии скорости, вместимости GPU или пригодности ответов для российских документов. s2 s5
Как запустить SGLang в Docker с локальным портом
На дату проверки Docker Hub показывает тег v0.5.21 и индексный digest sha256:b1259f3ea3275f66237c498ea388919729018bc9f01c3d638391e06e2cf3f469; индекс включает образы Linux amd64 и arm64. Использование полного digest, а не изменяемого latest, фиксирует состав скачиваемого образа в этом примере. Перед реальным запуском сверьте архитектуру хоста, размер загрузки, совместимость драйвера и наличие свободного места; образ крупный, Modelium его не скачивал. s4 s1
Пример для доверенного тестового Linux-хоста, составленный по официальной инструкции, но не запущенный Modelium: docker run --rm --gpus all --ipc=host -p 127.0.0.1:30000:30000 -v "$HOME/.cache/huggingface:/root/.cache/huggingface" lmsysorg/sglang@sha256:b1259f3ea3275f66237c498ea388919729018bc9f01c3d638391e06e2cf3f469 sglang serve Qwen/Qwen3-0.6B --revision c1899de289a04d12100db370d81485cdf75e47ca --host 0.0.0.0 --port 30000. Документация подтверждает образ, --gpus all, порт 30000, кеш HF и --ipc=host; аргумент --revision принимает commit модели. Привязка 127.0.0.1 — сознательное ограничение хостового порта по документации Docker, тогда как --host 0.0.0.0 нужен внутри контейнера для доступности через опубликованный порт. Используйте только свой доверенный кеш; общий IPC даёт контейнеру доступ к пространству IPC хоста. s1 s2 s3 s4 s5 s6
--rm удаляет остановившийся контейнер, но смонтированный кеш на хосте остаётся. Не копируйте официальный docker/compose.yaml вслепую для одного тестового сервера: он включает privileged: true, network_mode: host, ipc: host и пример HF_TOKEN; такая конфигурация меняет сетевые и привилегированные границы, а ключ нельзя хранить прямо в общедоступном Compose-файле. Ключ к публичной Qwen-модели в данном примере не нужен. s2 s7 s5
Как проверить, что отвечает именно выбранная модель
Дождитесь сообщения готовности, указанного в quickstart SGLang. С того же хоста обратитесь к http://127.0.0.1:30000/v1/models и убедитесь, что data содержит ожидаемый идентификатор модели. Это проверка объявленного ID, не подтверждение реальной генерации: флаг --served-model-name позволяет переименовать опубликованный ID. Если имя отличается от ожидаемого, уточните его до Chat API запроса. s2 s3
Далее отправьте POST http://127.0.0.1:30000/v1/chat/completions с заголовком Content-Type: application/json и телом {"model":"Qwen/Qwen3-0.6B","messages":[{"role":"user","content":"Ответь одним словом: привет"}],"max_tokens":256}. Используйте ровно тот ID, который объявлен сервером; проверьте код HTTP и JSON в choices[0].message.content. У Qwen3 есть режим рассуждения, а в документации SGLang отдельно показано поле reasoning_content; если лимит токенов исчерпан без содержательного content, это не успешный ответ: изучите оба поля и повторите контролируемый тест с уместными параметрами. Оценку качества на своей задаче проводите отдельно. Это протокол проверки по документации, не фактический ответ Modelium. s2 s3 s5 s8
Какие ошибки и границы безопасности учитывать
Если сервер не стартует, отдельно проверьте работу GPU-контейнерного runtime, видимость устройства, совместимость драйвера с образом и логи контейнера. Если Chat API не отвечает при доступном /v1/models, проверьте совпадение model ID, логи загрузки, шаблон чата и HTTP-ошибку; один ответ списка моделей не доказывает успешную генерацию. Не называйте размер файла весов минимальной VRAM: рабочая память зависит от модели, контекста и конфигурации сервера. s1 s2 s3
Публикация -p 127.0.0.1:30000:30000 уже безопаснее обычного -p 30000:30000, но это не доказательство полной изоляции. Docker предупреждает, что до версии Engine 28.0.0 хосты в том же L2-сегменте могли достигать даже опубликованного на localhost порта. Перед подключением клиентов из сети настройте отдельные правила, аутентификацию и проверку внешней доступности; в справочнике SGLang есть флаг --api-key, но сам по себе он не заменяет сетевой периметр. s6 s3
Остановите интерактивный тест через Ctrl+C и проверьте оставшийся кеш модели на хосте. Следующий шаг — основной гайд SGLang: соотнесите задачу, формат выбранной модели, доступное железо и версию сервера перед рабочей нагрузкой. Для сравнения с альтернативным runtime откройте SGLang или vLLM. Modelium не запускал этот контейнер и не измерял память или скорость. s1 s2
Источники
- SGLang: Installation, Docker и требования к GPU — revision 968726f3cea0f6d6f44bea84797e5e5914658f4e. Получено 06.10.2026.
- SGLang: Quickstart, Docker и Chat API — revision 968726f3cea0f6d6f44bea84797e5e5914658f4e. Получено 06.10.2026.
- SGLang: Server Arguments, revision, host, port и ID модели — revision 968726f3cea0f6d6f44bea84797e5e5914658f4e. Получено 06.10.2026.
- Docker Hub: lmsysorg/sglang v0.5.21, индексный digest. Получено 06.10.2026.
- Qwen/Qwen3-0.6B: карточка конкретной ревизии — revision c1899de289a04d12100db370d81485cdf75e47ca. Получено 06.10.2026.
- Docker: Publishing and exposing ports, localhost и предупреждение до 28.0.0. Получено 06.10.2026.
- SGLang: официальный compose.yaml и права контейнера — revision 968726f3cea0f6d6f44bea84797e5e5914658f4e. Получено 06.10.2026.
- SGLang: OpenAI-Compatible Completions и поле reasoning_content — revision 968726f3cea0f6d6f44bea84797e5e5914658f4e. Получено 06.10.2026.