Points clés
- Gratuit et open source sous licence Apache 2.0, issu de recherches liées à UC Berkeley, Stanford et LMSYS
- RadixAttention réutilise automatiquement les entrées de cache KV entre requêtes partageant un préfixe, via un arbre radix plutôt qu'une isolation de cache par requête
- La sortie structurée — schémas JSON et contraintes regex — est appliquée pendant le décodage via une machine à états finis compressée, pas comme filtre de post-traitement
- Fournit un DSL frontend intégré à Python (
sgl.gen,sgl.select,sgl.fork) pour écrire des programmes LLM multi-appels - Serveur API compatible OpenAI intégré, démarré avec
python -m sglang.launch_server - Prend en charge le batching continu, le parallélisme tensoriel et des formats de quantification incluant FP8, INT4, AWQ et GPTQ
- Le matériel principal et le mieux pris en charge est le GPU NVIDIA ; le projet documente aussi des backends AMD, Intel et autres avec une couverture réelle plus étroite
- Pas une app de bureau mono-utilisateur — pas d'installeur graphique, et pas conçu autour du CPU seul ou d'Apple Silicon comme le sont llama.cpp et Ollama
📍 En une phrase
SGLang est un framework de serving gratuit, sous licence Apache 2.0, pour LLM et modèles vision-langage, issu de recherches liées à UC Berkeley, Stanford et LMSYS, qui utilise RadixAttention pour réutiliser automatiquement l'état du cache KV entre requêtes partageant un préfixe commun et applique la sortie structurée dans la boucle de décodage.
💬 En termes simples
Au lieu d'une app de chat de bureau, SGLang est un logiciel serveur conçu pour deux choses à la fois : servir efficacement de nombreuses requêtes simultanées — notamment celles qui répètent un prompt système ou un historique de conversation — et garantir que la sortie du modèle correspond réellement à un schéma JSON ou un motif spécifié.
📌Remarque: Cet article s'appuie sur le dépôt GitHub officiel de SGLang et sa documentation publique, pas sur des benchmarks indépendants. Les propres supports de SGLang citent des facteurs d'accélération précis pour RadixAttention et le décodage JSON dans des benchmarks de version spécifiques ; cet article ne les reprend pas comme des chiffres universels, car ils dépendent de la charge de travail, du matériel et de la version testée, et SGLang comme vLLM publient des benchmarks qui les avantagent.
Qu'est-ce que SGLang ?
SGLang est un framework de serving gratuit, sous licence Apache 2.0, pour les grands modèles de langage et les modèles vision-langage. Il est issu de recherches liées à UC Berkeley, Stanford et l'organisation LMSYS — la même communauté derrière Chatbot Arena — et est aujourd'hui développé sous l'organisation GitHub sgl-project. Contrairement aux outils conçus principalement pour un utilisateur unique discutant localement avec un modèle, SGLang cible deux problèmes qui se recoupent : servir efficacement de nombreuses requêtes simultanées, et garantir que la sortie d'un modèle respecte un format structuré comme JSON, ce qui compte pour le function calling, les pipelines d'agents et d'autres sorties consommées par des machines.
- Issu de recherches liées à UC Berkeley, Stanford et LMSYS ; développé aujourd'hui sous l'organisation open source
sgl-project - Sous licence Apache 2.0 : le code source est disponible publiquement pour usage, modification et redistribution selon les termes de la licence
- Combine un DSL frontend intégré à Python pour écrire des programmes LLM avec un runtime backend co-conçu (le SGLang Runtime, souvent abrégé SRT)
- Charge des checkpoints de modèles compatibles Hugging Face Transformers, couvrant des familles de modèles dont Llama, Qwen, Mistral et DeepSeek sans étape de conversion séparée pour la plupart des modèles
- Documente des déploiements en production générant de gros volumes de tokens quotidiennement, et cite plusieurs entreprises et institutions de recherche comme adoptantes dans ses propres supports
Qu'est-ce que RadixAttention, et pourquoi est-ce important ?
RadixAttention est la technique de gestion mémoire pour laquelle SGLang est le plus connu. De nombreuses charges de travail LLM réelles émettent plusieurs appels de génération partageant un préfixe commun — le même prompt système à chaque requête, les mêmes exemples few-shot, ou des tours antérieurs d'une conversation en cours. Recalculer le cache clé-valeur (KV) d'attention pour ce préfixe partagé à chaque appel gaspille du calcul et de la mémoire GPU. RadixAttention stocke à la place les entrées de cache KV des requêtes terminées et en cours dans un arbre radix — une structure arborescente indexée sur des séquences de tokens — de sorte qu'une nouvelle requête puisse trouver et réutiliser automatiquement le cache pour tout préfixe qu'elle partage avec des requêtes antérieures, sans qu'un développeur ait à suivre ou gérer manuellement cette réutilisation.
- Fait correspondre et réutilise automatiquement les entrées de cache KV entre requêtes partageant un préfixe de séquence de tokens, via une structure de données en arbre radix
- Couvre les préfixes issus de prompts système répétés, d'exemples few-shot partagés et d'historiques de conversation multi-tours — pas seulement la même requête unique répétée verbatim
- Applique une politique d'éviction LRU (least-recently-used) à l'arbre radix afin que la mémoire de cache puisse être récupérée et réutilisée à mesure que l'arbre grandit
- Fonctionne avec le batching continu et l'allocation de cache KV paginée par blocs, ce qui permet à SGLang d'ajouter et de retirer des requêtes d'un batch en cours à mesure qu'elles arrivent et se terminent
Que font réellement le DSL frontend et la sortie structurée ?
Au-delà du serving de base, SGLang embarque deux capacités liées mais distinctes : un langage frontend intégré à Python pour écrire des programmes LLM, et l'application au niveau moteur de formats de sortie structurés.
Quel matériel SGLang nécessite-t-il ?
La cible principale et la mieux prise en charge de SGLang est le GPU NVIDIA, et la plupart des déploiements en production décrits dans les propres supports du projet fonctionnent sur du matériel NVIDIA. Le projet documente aussi des backends supplémentaires, bien que la couverture et l'adoption réelle ne soient pas égales partout.
GPU NVIDIA (CUDA)
- Détails:
- La cible principale et la plus mature, des GPU de datacenter aux cartes consumer/workstation récentes. Le serving tensor-parallèle sur plusieurs GPU NVIDIA est bien documenté.
GPU AMD (ROCm)
- Détails:
- Documenté comme backend pris en charge pour les accélérateurs AMD Instinct via ROCm, avec une adoption réelle et une couverture communautaire plus étroites que le chemin CUDA.
CPU Intel Xeon et accélérateurs Gaudi
- Détails:
- Backends supplémentaires documentés par le projet pour le matériel Intel ; à considérer comme un chemin de déploiement plus restreint et moins éprouvé que les GPU NVIDIA.
TPU Google et NPU Ascend
- Détails:
- Backends documentés destinés aux équipes déjà sur infrastructure Google Cloud TPU ou Huawei Ascend.
Apple Silicon (Mac)
- Détails:
- Pas un chemin de premier ordre officiellement maintenu. SGLang est conçu autour de matériel datacenter et workstation adossé à des GPU, pas pour un usage local sur un seul Mac.
Pour exécuter un modèle sur un seul Mac ou une machine CPU uniquement, SGLang n'est pas l'outil conçu pour cela — llama.cpp et les outils construits dessus, comme Ollama et LM Studio, ciblent directement le matériel CPU et Apple Silicon et conviennent mieux à ce scénario.
Quels formats de quantification SGLang prend-il en charge ?
SGLang prend en charge le serving de modèles à précision numérique réduite pour diminuer l'usage mémoire et, dans de nombreux cas, augmenter le débit, documentant plusieurs formats de quantification établis.
FP8
- Détails:
- Précision en virgule flottante 8 bits, prise en charge sur les générations de GPU NVIDIA avec support matériel FP8, échangeant un peu de précision contre un usage mémoire réduit et une exécution plus rapide que FP16/BF16.
FP4
- Détails:
- Un format en virgule flottante plus récent et de précision encore plus basse, documenté par le projet pour le matériel NVIDIA de génération la plus récente le prenant en charge.
AWQ
- Détails:
- Activation-aware Weight Quantization, une méthode de quantification des poids sur 4 bits largement utilisée, avec des modèles pré-quantifiés publiés par la communauté sur Hugging Face.
GPTQ
- Détails:
- Une méthode de quantification post-entraînement couramment distribuée sous forme de checkpoints pré-quantifiés, généralement aussi en 4 bits.
INT4
- Détails:
- Un chemin de quantification entière de précision plus basse, documenté par le projet aux côtés d'AWQ et GPTQ pour une réduction mémoire supplémentaire.
Cet article ne fournit pas de chiffres de perte de qualité mesurés indépendamment pour chaque format — ceux-ci varient selon l'architecture du modèle et la tâche, donc comparer les sorties de plusieurs formats sur vos propres prompts est le moyen le plus fiable d'évaluer le compromis pour votre charge de travail.
Que fournit le serveur SGLang compatible OpenAI ?
Exécuter python -m sglang.launch_server démarre un serveur HTTP implémentant le protocole de l'API OpenAI, de sorte que des applications et SDK déjà construits pour l'API OpenAI puissent souvent pointer vers une instance SGLang auto-hébergée en ne changeant que l'URL de base et le nom du modèle.
- Points de terminaison chat completions et completions compatibles OpenAI, utilisables comme remplacement direct du code client basé sur l'API OpenAI
- Hôte et port configurables (souvent
http://localhost:30000dans les propres exemples du projet) - Paramètres de sortie structurée au niveau de la requête pour une génération contrainte par schéma JSON ou regex, exposés via l'API
- Options moteur pour la taille tensor-parallèle, l'allocation mémoire et le format de quantification, définies au démarrage du serveur
- Prise en charge du service de plusieurs adaptateurs LoRA sur la base d'un seul modèle de base chargé
Comment installer et exécuter SGLang ?
SGLang est distribué sous forme de paquet Python et généralement installé dans un environnement Python avec un GPU NVIDIA et des pilotes CUDA compatibles disponibles.
- 1Vérifier que vous disposez d'un GPU NVIDIA pris en charge avec des pilotes CUDA à jour (ou consulter la documentation du projet pour les instructions d'installation spécifiques AMD/Intel/TPU si vous ciblez l'un de ces backends).
- 2Créer un environnement virtuel Python, puis installer SGLang, par exemple : `pip install "sglang[all]"`.
- 3Démarrer le serveur compatible OpenAI avec un modèle de Hugging Face, par exemple :
python -m sglang.launch_server --model-path meta-llama/Llama-3.1-8B-Instruct --host 127.0.0.1 --port 30000. - 4Envoyer une requête de chat basique avec n'importe quel client compatible API OpenAI, par exemple le paquet Python
openaipointant versbase_url="http://127.0.0.1:30000/v1". - 5Pour une réponse contrainte par JSON, passer un schéma JSON dans les paramètres de sortie structurée de la requête afin que le serveur applique le schéma pendant le décodage plutôt que de simplement demander du JSON dans le prompt.
- 6Pour le serving multi-GPU, ajouter une option tensor-parallèle, par exemple
--tp-size 2pour répartir le modèle sur deux GPU. - 7Pointer le code client API OpenAI existant vers votre serveur auto-hébergé en ne changeant que l'URL de base et le nom du modèle.
Ai-je besoin d'un GPU pour exécuter SGLang ?
Pour tout usage au-delà des tests, oui — la cible principale et la mieux prise en charge de SGLang est le GPU NVIDIA. Le projet documente d'autres backends d'accélérateurs, mais ce n'est pas le chemin de déploiement principal.
Puis-je obtenir une sortie JSON garantie avec SGLang ?
Oui — passez un schéma JSON dans les paramètres de sortie structurée de votre requête, et SGLang l'applique pendant le décodage en masquant les tokens qui violeraient le schéma, plutôt que de simplement demander au modèle de produire du JSON dans le prompt.
Comment SGLang se compare-t-il à vLLM ?
SGLang et vLLM sont les deux moteurs de serving LLM open source adossés à des GPU les plus discutés, tous deux sous licence Apache 2.0 et ciblant le serving en production multi-utilisateurs plutôt que le chat de bureau mono-utilisateur. Les deux projets publient des benchmarks se comparant favorablement l'un à l'autre ; cet article ne tranche pas cette comparaison et décrit plutôt la conception et les affirmations documentées de chaque projet.
Technique de cache phare
- SGLang:
- RadixAttention — réutilisation automatique du cache KV basée sur un arbre radix entre requêtes partageant n'importe quel préfixe.
- vLLM:
- PagedAttention — blocs de cache KV de taille page, non contigus, réduisant le gaspillage mémoire dû aux allocations sur-réservées.
Sortie structurée
- SGLang:
- L'application de schéma JSON et regex au niveau moteur est une fonctionnalité centrale et fortement documentée, construite sur une machine à états finis compressée.
- vLLM:
- Prend aussi en charge le décodage structuré/guidé via des backends de grammaire intégrés, documenté comme faisant partie de l'ensemble de fonctionnalités plus large plutôt que comme fonctionnalité phare.
Modèle de programmation
- SGLang:
- Fournit un DSL frontend intégré à Python (
sgl.gen,sgl.select,sgl.fork) pour des programmes LLM multi-appels, en plus du serveur API. - vLLM:
- Principalement accessible comme serveur API ou appel de bibliothèque Python ; ne fournit pas de DSL d'écriture de programmes comparable.
Origine
- SGLang:
- Recherche liée à UC Berkeley, Stanford et l'organisation LMSYS derrière Chatbot Arena.
- vLLM:
- Issu du Sky Computing Lab de l'UC Berkeley.
Affirmations de débit
- SGLang:
- Publie des benchmarks de version citant des facteurs pour RadixAttention et le décodage JSON sur des charges de travail spécifiques.
- vLLM:
- Publie ses propres benchmarks de version ; décrit la logique d'efficacité mémoire de PagedAttention plutôt qu'un unique chiffre de vitesse universel.
Aucun benchmark marketing de l'un ou l'autre moteur ne devrait être pris pour un verdict neutre — les deux sont réalisés par le projet dont le résultat paraît le plus favorable, sur des charges de travail choisies par ce projet. Si le débit est déterminant, tester les deux moteurs avec votre propre modèle, matériel et schéma de trafic est plus fiable que le chiffre d'un seul article, celui-ci inclus.
Comment SGLang se compare-t-il à llama.cpp et TensorRT-LLM ?
SGLang, llama.cpp et TensorRT-LLM se situent à des points différents du spectre entre flexibilité matérielle et optimisation maximale.
SGLang
- Détails:
- Sous licence Apache 2.0, basé sur Python, construit autour de RadixAttention et de la sortie structurée au niveau moteur. Charge directement des modèles compatibles Hugging Face Transformers ; les GPU NVIDIA sont la cible principale, avec des backends supplémentaires documentés.
llama.cpp
- Détails:
- Moteur d'inférence C/C++ sous licence MIT, construit autour du format de modèle GGUF, fonctionnant sur CPU, Apple Silicon et GPU. Cible le déploiement sur une seule machine et en périphérie plutôt que les clusters de production multi-GPU.
TensorRT-LLM
- Détails:
- Le moteur de NVIDIA, construit spécifiquement pour les GPU NVIDIA. Les modèles sont compilés à l'avance en un moteur TensorRT optimisé pour le GPU cible, ce qui peut offrir de fortes performances sur ce matériel spécifique au prix d'une étape de compilation et d'une flexibilité inter-matérielle moindre que SGLang.
Cet article n'a pas benchmarké indépendamment ces trois moteurs les uns contre les autres et n'affirme pas que l'un est universellement plus rapide — le débit dépend fortement du modèle, du matériel, des caractéristiques de batch et de la version de chaque moteur. Voir le guide des serveurs d'inférence entreprise pour une comparaison orientée déploiement couvrant aussi vLLM, TGI et NVIDIA NIM.
À qui s'adresse SGLang ?
SGLang convient aux équipes servant un modèle à de nombreux utilisateurs ou applications simultanés sur infrastructure GPU — en particulier les charges de travail avec des préfixes de prompt répétés ou une exigence stricte de sortie structurée — pas aux personnes cherchant le moyen le plus rapide de discuter avec un modèle sur leur propre ordinateur.
SGLang vs. alternatives en un coup d'œil
Ces outils se situent à des points différents du spectre mono-utilisateur versus serving en production, et du spectre débit versus accent sur la sortie structurée.
SGLang
- Interface et installation:
- Paquet Python ; serveur API compatible OpenAI démarré avec
python -m sglang.launch_server. Nécessite un GPU NVIDIA et CUDA dans la plupart des déploiements. - Idéal pour:
- Serving GPU à forte concurrence avec réutilisation intensive de préfixes et/ou exigence stricte de sortie structurée (JSON/regex).
vLLM
- Interface et installation:
- Paquet Python ; serveur API compatible OpenAI démarré avec
vllm serve. Nécessite un GPU NVIDIA et CUDA dans la plupart des déploiements. - Idéal pour:
- Serving GPU à haut débit multi-utilisateurs en production, de façon générale, sans conception axée en priorité sur la sortie structurée.
Ollama
- Interface et installation:
- CLI et API REST, généralement rapporté comme fonctionnant sur llama.cpp comme backend sur la plupart des plateformes. Une commande l'installe ; une commande récupère et exécute un modèle.
- Idéal pour:
- Le chemin le plus rapide vers un modèle local fonctionnel pour un utilisateur unique, sans étape de build ni GPU requis.
llama.cpp
- Interface et installation:
- CLI, interface web intégrée et API compatible OpenAI via llama-server. Compilation depuis les sources ou binaire préconstruit ; fonctionne sur CPU ou GPU.
- Idéal pour:
- Contrôle direct au niveau moteur, déploiement embarqué/en périphérie, et matériel CPU ou Apple Silicon.
Cet article n'a pas benchmarké indépendamment la vitesse ou la qualité de sortie de ces outils et n'affirme pas la supériorité technique de l'un d'eux — la comparaison ci-dessus couvre uniquement des faits documentés d'architecture, d'installation et de modèle d'accès. Voir la comparaison llama.cpp vs. Ollama vs. vLLM pour une comparaison dédiée de débit et de complexité d'installation entre ces trois-là, et le guide des serveurs d'inférence entreprise pour un regard orienté déploiement sur vLLM, TGI et NVIDIA NIM.
Que ne couvre pas cet article ?
Ceci est un article explicatif construit à partir de la documentation publique et du dépôt de SGLang, pas un rapport de benchmark pratique.
- Aucun chiffre de débit, latence ou requêtes par seconde mesuré indépendamment pour SGLang ou ses comparaisons — ceux-ci dépendent fortement du GPU, du modèle, de la composition des batchs et de la version
- Aucune vérification indépendante des facteurs d'accélération revendiqués par SGLang lui-même pour RadixAttention ou le décodage JSON — ceux-ci proviennent des benchmarks de version du projet, pas d'une mesure tierce
- Aucun audit de sécurité ligne par ligne de la base de code SGLang — elle est open source et sous licence Apache 2.0, le code lui-même est donc disponible pour revue
- Aucune couverture complète de chaque backend matériel, option moteur ou orchestration de déploiement (Kubernetes, configurations spécifiques au cloud) — cet article se concentre sur les concepts et options que la plupart des équipes évaluent en premier
- Aucune couverture des accords de support commercial ou des offres d'hébergement SGLang managé, puisque SGLang lui-même est un projet open source communautaire plutôt qu'un produit vendeur avec contrat de support
Erreurs courantes en essayant SGLang
La plupart des frictions avec SGLang viennent du fait de le traiter comme un outil de bureau mono-utilisateur, ou de s'attendre à ce que RadixAttention aide une charge de travail qui ne partage en réalité aucun préfixe.
Questions fréquentes
Qu'est-ce que SGLang ?
SGLang est un framework de serving gratuit, sous licence Apache 2.0, pour les grands modèles de langage et les modèles vision-langage, issu de recherches liées à UC Berkeley, Stanford et l'organisation LMSYS derrière Chatbot Arena. Il est surtout connu pour RadixAttention, une technique de réutilisation automatique du cache KV entre requêtes partageant un préfixe commun.
SGLang est-il gratuit ?
Oui. SGLang est un logiciel gratuit et open source publié sous licence Apache 2.0, sans abonnement ni compte requis pour l'exécuter soi-même.
Qu'est-ce que RadixAttention ?
RadixAttention est la technique de SGLang consistant à stocker le cache KV d'attention des requêtes terminées et en cours dans un arbre radix, afin que les nouvelles requêtes partageant un préfixe de séquence de tokens — prompt système, exemples few-shot ou tours de conversation antérieurs — puissent réutiliser automatiquement le cache correspondant au lieu de le recalculer.
SGLang garantit-il une sortie JSON valide ?
Lorsqu'une requête inclut un schéma JSON dans les paramètres de sortie structurée de SGLang, le moteur masque à chaque étape de décodage les tokens qui violeraient le schéma, ce qui est conçu pour rendre la sortie conforme au schéma par construction plutôt que par validation a posteriori. Demander simplement du JSON dans le texte du prompt sans utiliser ces paramètres n'offre pas cette garantie.
SGLang a-t-il besoin d'un GPU ?
Pour toute charge de travail réelle, oui — la cible principale et la mieux prise en charge de SGLang est le GPU NVIDIA. Le projet documente des backends AMD, Intel et autres accélérateurs, mais ce n'est pas le chemin de déploiement principal, et il n'y a pas de support Apple Silicon de premier ordre.
Quels formats de quantification SGLang prend-il en charge ?
SGLang prend en charge plusieurs formats dont FP8, FP4 sur du matériel récent, AWQ, GPTQ et INT4, avec de nombreux modèles pré-quantifiés dans ces formats publiés sur Hugging Face.
SGLang est-il meilleur que vLLM ?
Les benchmarks propres d'aucun des deux projets ne constituent un verdict neutre sur ce point — les deux publient des résultats qui les avantagent. SGLang met en avant la réutilisation de cache basée sur les préfixes de RadixAttention et la sortie structurée au niveau moteur comme fonctionnalités phares ; vLLM met en avant l'efficacité mémoire de PagedAttention. Le meilleur choix dépend du schéma de partage de préfixes de votre charge de travail et du fait que la sortie structurée soit une exigence stricte — voir le tableau comparatif ci-dessus.
SGLang a-t-il une API compatible OpenAI ?
Oui. Exécuter python -m sglang.launch_server démarre un serveur implémentant le protocole de l'API OpenAI, de sorte que de nombreuses applications construites pour l'API OpenAI puissent pointer vers une instance SGLang auto-hébergée en ne changeant que l'URL de base et le nom du modèle.
À quoi sert le DSL frontend de SGLang ?
Il s'agit d'un ensemble de primitives Python — dont sgl.gen, sgl.select et sgl.fork — pour écrire des programmes LLM multi-étapes, comme se ramifier en plusieurs sous-générations parallèles et fusionner les résultats, sous forme de code Python ordinaire plutôt qu'en orchestrant manuellement des appels API séparés.
Qui a cree SGLang, et qu'est-ce que RadixArk ?
SGLang est ne de recherches reliant UC Berkeley, Stanford et l'organisation LMSYS a l'origine de Chatbot Arena. En 2026, les co-createurs de SGLang Ying Sheng et Banghua Zhu ont fonde RadixArk, une startup d'infrastructure IA ayant leve 100 millions de dollars en financement d'amorcage mene par Accel pour commercialiser des services autour de SGLang, tout en poursuivant son developpement open source — le framework central reste sous licence Apache 2.0 et gratuit.
