Guide de déploiement & d'inférence SGLang

Guide sur la sauvegarde et le déploiement de LLM vers SGLang pour servir des LLM en production

Vous pouvez servir n'importe quel LLM ou modèle affiné via SGLangarrow-up-right pour une inférence à faible latence et à haut débit. SGLang prend en charge l'inférence de modèles texte, image/vidéo sur n'importe quelle configuration GPU, avec prise en charge de certains GGUF.

💻Installation de SGLang

Pour installer SGLang et Unsloth sur des GPU NVIDIA, vous pouvez utiliser ce qui suit dans un environnement virtuel (ce qui n'affectera pas vos autres bibliothèques Python)

# OPTIONNEL : utilisez un environnement virtuel
python -m venv unsloth_env
source unsloth_env/bin/activate

# Installez Rust, outlines-core puis SGLang
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

Pour Docker configurations exécutées :

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

🐛Débogage des problèmes d'installation de SGLang

Note : si vous voyez ce qui suit, mettez à jour Rust et outlines-core comme indiqué dans SGLang

Si vous voyez un problème Flashinfer comme ci-dessous :

Supprimez le cache flashinfer via rm -rf .cache/flashinfer et aussi le répertoire indiqué dans le message d'erreur, par ex. rm -rf ~/.cache/flashinfer

🚚Déploiement des modèles SGLang

Pour déployer n'importe quel modèle comme par exemple unsloth/Llama-3.2-1B-Instructarrow-up-right, faites ce qui suit dans un terminal séparé (sinon cela bloquera votre terminal actuel - vous pouvez aussi utiliser tmux) :

Vous pouvez ensuite utiliser la bibliothèque OpenAI Chat completions pour appeler le modèle (dans un autre terminal ou en utilisant tmux) :

Et vous obtiendrez 2 + 2 = 4.

🦥Déploiement des finetunes Unsloth dans SGLang

Après le fine-tuning Fine-tuning Guide ou en utilisant nos notebooks à Notebooks Unsloth, vous pouvez sauvegarder ou déployer vos modèles directement via SGLang dans un flux de travail unique. Un exemple de script de finetuning Unsloth par ex. :

Pour sauvegarder en 16 bits pour SGLang, utilisez :

Pour sauvegarder seulement les adaptateurs LoRA, utilisez soit :

Ou utilisez simplement notre fonction intégrée pour le faire :

🚃gpt-oss-20b : Guide de déploiement Unsloth & SGLang

Ci-dessous un tutoriel étape par étape avec des instructions pour entraîner le gpt-oss-20b en utilisant Unsloth et le déployer avec SGLang. Il inclut des benchmarks de performance pour plusieurs formats de quantification.

1

Finetuning Unsloth et formats d'exportation

Si vous débutez en fine-tuning, vous pouvez lire notre guide, ou essayer le notebook de finetuning gpt-oss 20B à gpt-oss Après l'entraînement, vous pouvez exporter le modèle dans plusieurs formats :

2

Déploiement avec SGLang

Nous avons sauvegardé notre finetune gpt-oss dans le dossier "finetuned_model", et donc dans un nouveau terminal, nous pouvons lancer le modèle finetuné comme point de terminaison d'inférence avec SGLang :

Vous pourriez devoir attendre un peu sur Capturing batches (bs=1 avail_mem=20.84 GB) : !

3

Appel du point de terminaison d'inférence :

Pour appeler le point de terminaison d'inférence, lancez d'abord un nouveau terminal. Nous pouvons alors appeler le modèle comme ci-dessous :

💎Quantification FP8 en ligne

Pour déployer des modèles avec quantification FP8 en ligne qui permet 30 à 50 % de débit en plus et 50 % de mémoire en moins avec un support de contexte deux fois plus long dans SGLang, vous pouvez faire ce qui suit :

Vous pouvez également utiliser --kv-cache-dtype fp8_e5m2 qui a une plage dynamique plus grande qui pourrait résoudre des problèmes d'inférence FP8 si vous en rencontrez. Ou utilisez nos quants float8 pré-quantifiés listés dans https://huggingface.co/unsloth/models?search=-fp8arrow-up-right ou certains sont listés ci-dessous :

⚡Benchmarking SGLang

Voici du code que vous pouvez exécuter pour tester la vitesse de performance de votre modèle finetuné :

Puis dans un autre terminal ou via tmux :

Vous verrez le benchmark s'exécuter comme ci-dessous :

Nous avons utilisé un GPU B200x1 avec gpt-oss-20b et obtenu les résultats ci-dessous (~2 500 tokens de débit)

Batch/Entrée/Sortie
TTFT (s)
ITL (s)
Débit d'entrée
Débit de sortie

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

Voir https://docs.sglang.ai/advanced_features/server_arguments.htmlarrow-up-right pour les arguments du serveur pour SGLang.

🏃Mode interactif hors ligne SGLang

Vous pouvez aussi utiliser SGLang en mode hors ligne (c.-à-d. pas un serveur) dans un environnement interactif Python.

🎇GGUFs dans SGLang

SGLang prend aussi, de manière intéressante, en charge les GGUF ! Qwen3 MoE est encore en construction, mais la plupart des modèles denses (Llama 3, Qwen 3, Mistral, etc.) sont pris en charge.

Installez d'abord le dernier paquet gguf python via :

Ensuite, par exemple en mode hors ligne SGLang, vous pouvez faire :

🎬Service GGUF à haut débit avec SGLang

Téléchargez d'abord le fichier GGUF spécifique comme ci-dessous :

Puis servez le fichier spécifique Qwen3-32B-UD-Q4_K_XL.gguf et utilisez --served-model-name unsloth/Qwen3-32B et nous avons aussi besoin du tokenizer compatible HuggingFace via --tokenizer-path

Mis à jour

Ce contenu vous a-t-il été utile ?