SGLang Deployment & Inference Anleitung

Anleitung zum Speichern und Bereitstellen von LLMs in SGLang zum Servieren von LLMs in der Produktion

Sie können jedes LLM oder feinabgestimmte Modell über SGLangarrow-up-right für latenzarme, hochdurchsatzfähige Inferenz bereitstellen. SGLang unterstützt Text- sowie Bild-/Video-Modellinferenz auf beliebiger GPU-Konfiguration und bietet Unterstützung für einige GGUFs.

💻SGLang installieren

Um SGLang und Unsloth auf NVIDIA-GPUs zu installieren, können Sie das Folgende in einer virtuellen Umgebung verwenden (die Ihre anderen Python-Bibliotheken nicht beeinträchtigt)

# OPTIONAL eine virtuelle Umgebung verwenden
python -m venv unsloth_env
source unsloth_env/bin/activate

# Rust, outlines-core und dann SGLang installieren
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env && sudo apt-get install -y pkg-config libssl-dev
pip install --upgrade pip && pip install uv
uv pip install "sglang" && uv pip install unsloth

Für Docker Setups laufen:

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 unsloth/Llama-3.1-8B-Instruct --host 0.0.0.0 --port 30000

🐛Fehlerbehebung bei SGLang-Installationsproblemen

Beachten Sie: Wenn Sie Folgendes sehen, aktualisieren Sie Rust und outlines-core wie in angegeben SGLang

Wenn Sie ein Flashinfer-Problem wie unten sehen:

Entfernen Sie den flashinfer-Cache über rm -rf .cache/flashinfer und auch das im Fehlermeldung angegebene Verzeichnis, z. B. rm -rf ~/.cache/flashinfer

🚚SGLang-Modelle bereitstellen

Um ein beliebiges Modell bereitzustellen, zum Beispiel unsloth/Llama-3.2-1B-Instructarrow-up-right, führen Sie das Folgende in einem separaten Terminal aus (ansonsten blockiert es Ihr aktuelles Terminal – Sie können auch tmux verwenden):

Sie können dann die OpenAI Chat Completions-Bibliothek verwenden, um das Modell aufzurufen (in einem anderen Terminal oder mit tmux):

Und Sie erhalten 2 + 2 = 4.

🦥Unsloth-Finetunes in SGLang bereitstellen

Nach dem Fine-Tuning Fine-tuning Guide oder unter Verwendung unserer Notebooks unter Unsloth-Notebooks, Sie können Ihre Modelle direkt über SGLang innerhalb eines einzigen Workflows speichern oder bereitstellen. Ein Beispielskript zum Finetuning mit Unsloth, z. B.:

Um in 16-Bit für SGLang zu speichern, verwenden Sie:

Nur die LoRA-Adapter speichern, verwenden Sie entweder:

Oder verwenden Sie einfach unsere eingebaute Funktion dafür:

🚃gpt-oss-20b: Unsloth- & SGLang-Bereitstellungsanleitung

Unten finden Sie ein Schritt-für-Schritt-Tutorial mit Anweisungen zum Training des gpt-oss-20b mithilfe von Unsloth und dessen Bereitstellung mit SGLang. Es enthält Leistungsbenchmarks für mehrere Quantisierungsformate.

1

Unsloth Feinabstimmung und Exportformate

Wenn Sie neu beim Finetuning sind, können Sie unseren Leitfadenlesen oder das gpt-oss 20B Finetuning-Notebook ausprobieren unter gpt-oss Nach dem Training können Sie das Modell in mehreren Formaten exportieren:

2

Bereitstellung mit SGLang

Wir haben unser gpt-oss-Finetune in den Ordner "finetuned_model" gespeichert, und daher können wir in einem neuen Terminal das feinabgestimmte Modell als Inferenz-Endpunkt mit SGLang starten:

Sie müssen möglicherweise etwas warten bei Erfassen von Batches (bs=1 avail_mem=20.84 GB): !

3

Aufruf des Inferenz-Endpunkts:

Um den Inferenz-Endpunkt aufzurufen, starten Sie zuerst ein neues Terminal. Dann können wir das Modell wie unten aufrufen:

💎FP8 Online-Quantisierung

Um Modelle mit FP8-Online-Quantisierung bereitzustellen, die 30 bis 50 % mehr Durchsatz und 50 % weniger Speicherverbrauch sowie Unterstützung für doppelt so lange Kontextlängen mit SGLang ermöglichen, können Sie Folgendes tun:

Sie können auch verwenden --kv-cache-dtype fp8_e5m2 welches einen größeren Dynamikbereich hat und FP8-Inferenzprobleme lösen könnte, falls Sie welche sehen. Oder verwenden Sie unsere vorquantisierten float8-Quants, die in https://huggingface.co/unsloth/models?search=-fp8arrow-up-right oder einige sind unten aufgeführt:

⚡SGLang-Benchmarking

Unten ist etwas Code, den Sie ausführen können, um die Leistungsgeschwindigkeit Ihres feinabgestimmten Modells zu testen:

Dann in einem anderen Terminal oder via tmux:

Sie werden den Benchmarking-Durchlauf wie unten sehen:

Wir verwendeten eine B200x1-GPU mit gpt-oss-20b und erzielten die folgenden Ergebnisse (~2.500 Tokens Durchsatz)

Batch/Eingabe/Ausgabe
TTFT (s)
ITL (s)
Eingabe-Durchsatz
Ausgabe-Durchsatz

8/1024/1024

0.40

3.59

20,718.95

2,562.87

8/8192/1024

0.42

3.74

154,459.01

2,473.84

Siehe https://docs.sglang.ai/advanced_features/server_arguments.htmlarrow-up-right für Server-Argumente für SGLang.

🏃SGLang interaktiver Offline-Modus

Sie können SGLang auch im Offline-Modus (d. h. nicht als Server) innerhalb einer interaktiven Python-Umgebung verwenden.

🎇GGUFs in SGLang

SGLang unterstützt interessanterweise auch GGUFs! Qwen3 MoE ist noch im Aufbau, aber die meisten dichten Modelle (Llama 3, Qwen 3, Mistral usw.) werden unterstützt.

Installieren Sie zuerst das neueste gguf-Python-Paket via:

Dann können Sie beispielsweise im Offline-Modus von SGLang folgendes tun:

🎬Hoher Durchsatz beim Serving von GGUFs mit SGLang

Laden Sie zunächst die spezifische GGUF-Datei wie unten herunter:

Servieren Sie dann die spezifische Datei Qwen3-32B-UD-Q4_K_XL.gguf haben und verwenden Sie --served-model-name unsloth/Qwen3-32B und außerdem benötigen wir den HuggingFace-kompatiblen Tokenizer via --tokenizer-path

Zuletzt aktualisiert

War das hilfreich?