SGLang クイックスタート:OpenAI API を介して LLM のインストール、設定、およびサービス提供
SGLang を使ってオープンモデルを高速に提供。
SGLang は、大規模言語モデルおよびマルチモーダルモデル向けの高パフォーマンスなサービングフレームワークであり、単一の GPU から分散クラスターに至るまで、低レイテンシかつ高スループットの推論を提供するために設計されています。
セルフホスト型とクラウド型 LLM ホスティングオプション(Ollama、vLLM、llama-swap、LocalAI、および管理型クラウドプロバイダーを含む)の広範な比較については、2026 年版 LLM ホスティングガイド をご覧ください。
既にアプリが OpenAI API の形式に接続されている場合、SGLang は特に魅力的です。なぜなら、チャット完了および完了用の OpenAI 互換エンドポイントを公開し、ホスト型 API からセルフホスト型モデルへの移行をクライアント側の最小限の変更で可能にするからです。複数のバックエンド(llama.cpp、vLLM、SGLang など)間でリクエストをルーティングし、ホットスワップおよび TTL ベースのアンローディングが必要になる場合、llama-swap は、アップストリームを必要に応じて切り替えながら、単一の /v1 URL を安定して保つ透明なプロキシレイヤーを提供します。

この QuickStart では、インストール(複数の方法)、実践的な構成パターン、および「インストール → サービング → 検証 → 統合 → 調整」というクリーンなワークフローを解説します。HTTP サービングとオフラインバッチ推論の両方に対応した動作する例も用意されています。
マルチモーダルサポート(テキスト、埋め込み、画像、音声)、内蔵 Web UI、および最大限の OpenAI API ドロップイン互換性を必要とする場合は、LocalAI が、より広範な機能セットと多くのモデル形式サポートを提供します。
SGLang とは:高スループット LLM およびマルチモーダルモデルサービングのために
SGLang の核となる設計思想は、効率的な推論とスケーラブルなサービングにあります。「高速ランタイム」スタックには、プレフィックスキャッシング用の RadixAttention、ゼロオーバーヘッドの CPU スケジューラ、投機的デコーディング、連続バッチング、ページングアテンション、複数の並列化戦略(テンソル、パイプライン、エキスパート、データ並列化)、構造化出力、チャンク化プリフィル、および複数の量子化オプション(FP4、FP8、INT4、AWQ、GPTQ など)が含まれます。
また、幅広いプラットフォームでのデプロイをターゲットにしています:NVIDIA GPU、AMD GPU、Intel Xeon CPU、Google TPU、Ascend NPU など。
PyPI では Python >= 3.10 が必要です。2026 年 3 月 20 日現在、公開されているバージョンには 0.5.9(2026 年 2 月 23 日リリース)が含まれています。インストール時には、バージョンを固定するか、現在のバージョンを確認してください。
uv、pip、ソースビルド、または Docker を使用した Linux GPU ホストへの SGLang インストール方法
インストールオプションには、uv または pip、ソースビルド、Docker イメージ、Kubernetes マニフェスト、Docker Compose、SkyPilot、および AWS SageMaker があります。ほとんどのガイドでは一般的な NVIDIA GPU セットアップを前提としており、他のアクセラレーターについては別途設定ノートが用意されています。
Python 3.10+ で uv または pip を使用して SGLang を素早くインストール
シンプルなローカルインストールの場合、uv が通常最も高速な方法です。
pip install --upgrade pip
pip install uv
uv pip install sglang
CUDA 13 に関する注意事項
CUDA 13 の場合、Docker を使用することでホスト側の PyTorch/CUDA の不一致を回避できます。Docker を使用しない場合は、まず CUDA 13 対応の PyTorch ビルドをインストールし、次に sglang をインストールし、最後に公開されているホイールリリースから対応する sglang-kernel ホイールをインストールします(バージョンはスタックと一致させる必要があります)。
# 1) CUDA 13 対応の PyTorch をインストール(X.Y.Z を必要に応じて置き換えてください)
uv pip install torch==X.Y.Z torchvision torchaudio --index-url https://download.pytorch.org/whl/cu130
# 2) SGLang をインストール
uv pip install sglang
# 3) 対応する CUDA 13 sglang-kernel ホイールをインストール(X.Y.Z を必要に応じて置き換えてください)
uv pip install "https://github.com/sgl-project/whl/releases/download/vX.Y.Z/sglang_kernel-X.Y.Z+cu130-cp310-abi3-manylinux2014_x86_64.whl"
Docker Hub イメージを使用した SGLang のインストールと実行
コンテナ化されたデプロイ、またはホストの CUDA/PyTorch のペアリングを回避する必要がある場合は、公開されている Docker Hub イメージを使用します。典型的な docker run コマンドでは、Hugging Face キャッシュをマウントし、ゲート付きモデルをプルする際に HF_TOKEN を渡します。
docker run --gpus all \
--shm-size 32g \
-p 30000:30000 \
-v ~/.cache/huggingface:/root/.cache/huggingface \
--env "HF_TOKEN=<secret>" \
--ipc=host \
lmsysorg/sglang:latest \
python3 -m sglang.launch_server \
--model-path meta-llama/Llama-3.1-8B-Instruct \
--host 0.0.0.0 \
--port 30000
プロダクション向けのイメージでは、latest-runtime タグはビルドツールと開発依存関係を削除するため、デフォルトの latest バリアントよりも画像サイズが大幅に小さくなります。
docker run --gpus all \
--shm-size 32g \
-p 30000:30000 \
-v ~/.cache/huggingface:/root/.cache/huggingface \
--env "HF_TOKEN=<secret>" \
--ipc=host \
lmsysorg/sglang:latest-runtime \
python3 -m sglang.launch_server \
--model-path meta-llama/Llama-3.1-8B-Instruct \
--host 0.0.0.0 \
--port 30000
ソースからのインストールとその他のデプロイ方法
SGLang に対して開発を行ったり、ローカルパッチを適用したりする場合は、リリースブランチをクローンし、Python パッケージをエディタブルモードでインストールします。
git clone -b v0.5.9 https://github.com/sgl-project/sglang.git
cd sglang
pip install --upgrade pip
pip install -e "python"
オーケストレーションについては、リポジトリに Kubernetes マニフェスト(シングルノードおよびマルチノード)と最小限の Docker Compose 構成が含まれており、カスタム配線を行う前の適切な出発点となります。
YAML 設定ファイルと環境変数を使用した SGLang サーバー引数の設定方法
SGLang の設定は、サーバー引数と環境変数によって管理されます。フラグには、モデル選択、並列化、メモリ、最適化ノブなどが含まれ、詳細は python3 -m sglang.launch_server --help で確認できます。
環境変数には SGL_ と SGLANG_ の 2 つのプレフィックスがあります(多くのフラグは CLI または環境変数の両方の形式を受け付けます—launch_server --help でマッピングを確認できます)。
一般的に関連する環境変数には、ホストとポートの制御を行う SGLANG_HOST_IP や SGLANG_PORT などがあります。
YAML 設定ファイルを使用して再現性の高い SGLang サーバー起動を行う
繰り返し可能なデプロイと短いコマンドラインを実現するには、--config オプションで YAML ファイルを渡します。CLI 引数は、設定ファイルの値と両方が設定されている場合、ファイルの値を上書きします。
# config.yaml を作成
cat > config.yaml << 'EOF'
model-path: meta-llama/Meta-Llama-3-8B-Instruct
host: 0.0.0.0
port: 30000
tensor-parallel-size: 2
enable-metrics: true
log-requests: true
EOF
# 設定ファイルを使用してサーバーを起動
python -m sglang.launch_server --config config.yaml
設定と調整で押さえておくべき重要なポイントはいくつかあります:
SGLang の --model-path は、ローカルフォルダーまたは Hugging Face リポジトリ ID を指定できるため、サービングコードを変更せずにローカルウェイトと Hub 上にホストされたモデルを切り替えることができます。
マルチ GPU の場合、--tp でテンソル並列化を有効にします。起動時に**「peer access is not supported between these two devices」**というエラーが発生した場合は、--enable-p2p-check を追加してください。
サービングで OOM(メモリ不足)が発生する場合は、--mem-fraction-static を小さくして KV キャッシュの圧力を軽減します(デフォルトは 0.9)。
プリフィル中に長いプロンプトで OOM になる場合は、--chunked-prefill-size を下げてください。
OpenAI 互換の SGLang サーバーを実行し、OpenAI Python クライアントから呼び出す方法
実践的な「ハッピーパス」ワークフローは以下のようになります:
- SGLang をインストール(uv/pip または Docker)。
- 選択したモデルとポートでサーバーを起動。
- OpenAI 互換エンドポイントを介して基本的なサービングを検証。
- OpenAI SDK の
base_urlをローカルサーバーを指すようにしてアプリケーションを統合。 - 実際のトラフィックがある状態で、サーバー引数を用いてスループットとメモリを調整。
OpenAI SDK を使用して SGLang にローカルチャット完了リクエストを送信
OpenAI 互換の使用方法には、以下の 2 点が重要です:
サーバーは OpenAI HTTP 表面を実装しており、トークナイザーがチャットテンプレートを提供する場合、自動的に Hugging Face チャットテンプレートを適用します。必要に応じて起動時に --chat-template で上書きできます。
OpenAI クライアントをサーバーの /v1 プレフィックス(base_url → http://<host>:<port>/v1)を指し、通常通り client.chat.completions.create(...) を呼び出します。
サーバーを以下のいずれかのエントリーポイントで起動します:python -m sglang.launch_server も機能しますが、sglang serve が推奨される CLI です。
# 推奨される CLI エントリーポイント
sglang serve --model-path qwen/qwen2.5-0.5b-instruct --host 0.0.0.0 --port 30000
# 引き続きサポートされています
python3 -m sglang.launch_server --model-path qwen/qwen2.5-0.5b-instruct --host 0.0.0.0 --port 30000
その後、OpenAI Python クライアントから呼び出します:
import openai
client = openai.Client(base_url="http://127.0.0.1:30000/v1", api_key="None")
response = client.chat.completions.create(
model="qwen/qwen2.5-0.5b-instruct",
messages=[{"role": "user", "content": "List 3 countries and their capitals."}],
temperature=0,
max_tokens=64,
)
print(response.choices[0].message.content)
SGLang オフラインエンジン API およびネイティブエンドポイントを使用したバッチ推論の実行方法
SGLang は、構築しているものに応じて複数の「API 表面」をサポートしています:
/generate エンドポイントは、ローレベルのランタイム API です。チャットテンプレートと通常のクライアントエコシステムを自動的に処理したい場合は、/v1/... OpenAI 互換ルートを優先してください。
HTTP サーバーなしでも、オフラインエンジンはプロセス内で推論を実行します:バッチジョブやカスタムサービスに適しています。同期/非同期、ストリーミング/非ストリーミングの組み合わせをサポートしており、呼び出しパターンに合うモードを選択できます。
ネイティブ /generate エンドポイントの使用例
最小限のパターン:サーバーを起動し、temperature と max_new_tokens(および必要な他のサンプリングフィールド)を含む POST リクエストを /generate に送信します。
import requests
response = requests.post(
"http://localhost:30000/generate",
json={
"text": "The capital of France is",
"sampling_params": {
"temperature": 0,
"max_new_tokens": 32,
},
},
)
print(response.json())
temperature = 0 は貪欲サンプリングであり、値が高いほど多様性が増します。
オフラインエンジン API を使用したプロセス内バッチ推論の例
典型的なフロー:sgl.Engine(model_path=...) を構築し、プロンプトのバッチに対して llm.generate(...) を実行し、最後に llm.shutdown() を呼び出して GPU および他のリソースを解放します。
import sglang as sgl
llm = sgl.Engine(model_path="qwen/qwen2.5-0.5b-instruct")
prompts = [
"Write a concise self-introduction.",
"Explain what prefix caching is in one paragraph.",
]
sampling_params = {"temperature": 0.2, "top_p": 0.9}
outputs = llm.generate(prompts, sampling_params)
for prompt, output in zip(prompts, outputs):
print("PROMPT:", prompt)
print("OUTPUT:", output["text"])
print()
llm.shutdown()