Maison  >  Article  >  Périphériques technologiques  >  Aimé par Jia Yangqing : SGLang avec 3K étoiles est publié, accélérant l'inférence Llama 405B et tuant vLLM et TensorRT-LLM en quelques secondes

Aimé par Jia Yangqing : SGLang avec 3K étoiles est publié, accélérant l'inférence Llama 405B et tuant vLLM et TensorRT-LLM en quelques secondes

WBOY
WBOYoriginal
2024-07-28 08:07:53440parcourir

Les avantages de faire fonctionner Llama 3 405B sont évidents.


Récemment, Meta a open source le dernier modèle 405B (Llama 3.1 405B), portant les performances du modèle open source à un nouveau niveau. En raison du grand nombre de paramètres du modèle, de nombreux développeurs se posent une question : comment améliorer la vitesse d'inférence du modèle ?

Après seulement deux jours, l'équipe de LMSYS Org est passée à l'action et a lancé le nouveau SGLang Runtime v0.2. Il s'agit d'un moteur de service général pour LLM et VLM. Lors de l'exécution de Llama 3.1 405B, il surpasse vLLM et TensorRT-LLM en termes de débit et de latence.

Dans certains cas (exécutant les modèles de la série Llama), son débit peut même atteindre 2,1 fois celui de TensorRT-LLM et 3,8 fois celui de vLLm.
贾扬清点赞:3K star量的SGLang上新,加速Llama 405B推理秒杀vLLM、TensorRT-LLM
L'équipe LMSYS Org est un groupe de recherche ouvert formé par des étudiants et des professeurs de l'Université de Californie à Berkeley, de l'Université de Californie à San Diego et de l'Université Carnegie Mellon. La plateforme d'évaluation de grands modèles qu'ils ont développée, Chatbot Arena, est devenue une plateforme importante pour tester les capacités des grands modèles et est également considérée comme une méthode d'évaluation relativement juste.

SGLang est un framework de service rapide pour les grands modèles de langage et les modèles de langage visuel développés par l'équipe. Il a été officiellement lancé en janvier de cette année et a reçu plus de 3 000 étoiles sur GitHub.

贾扬清点赞:3K star量的SGLang上新,加速Llama 405B推理秒杀vLLM、TensorRT-LLM

Die Wirkung dieses Updates ist erstaunlich. Der bekannte KI-Forscher, Mitbegründer und CEO von Lepton AI, Jia Yangqing, kommentierte: „Ich war immer erstaunt über meine Doktor-Alma Mater, die University of California, Berkeley, weil sie weiterhin Ergebnisse bringt.“ Die fortschrittlichsten künstlichen Intelligenz- und Systemkollaborationsdesigns. Wir haben letztes Jahr den Einsatz von SGLang gesehen und können es kaum erwarten, das neue SGLang in der Produktion einzusetzen Entwicklung und Iteration auf SGLang? Sie erwähnten in ihrem Blog: „Wir betreiben die Chatbot Arena-Plattform seit mehr als einem Jahr und stellen Dienste für Millionen von Benutzern bereit. Wir sind uns der Bedeutung effizienter Dienste für Produkte und Forschung im Bereich der künstlichen Intelligenz bewusst. Durch betriebliche Erfahrung und in.“ Nach eingehender Forschung verbessern wir weiterhin das zugrunde liegende Servicesystem, vom fortschrittlichen Multi-Modell-Service-Framework FastChat bis zur effizienten Service-Engine SGLang Runtime (SRT) „
贾扬清点赞:3K star量的SGLang上新,加速Llama 405B推理秒杀vLLM、TensorRT-LLM
“Der Schwerpunkt dieses Artikels liegt auf SGLang Runtime Eine universelle Service-Engine für LLM und VLM. Obwohl bestehende Optionen wie TensorRT-LLM, vLLM, MLC-LLM und Hugging Face TGI ihre Vorzüge haben, fanden wir sie manchmal schwierig zu verwenden, schwierig anzupassen oder leistungsschwach veranlasste uns zur Entwicklung von SGLang v0.2, dessen Ziel es ist, eine Service-Engine zu erstellen, die nicht nur benutzerfreundlich und einfach zu ändern ist, sondern auch eine erstklassige Leistung bietet. Im Vergleich zu TensorRT-LLM und vLLM verarbeitet SGLang Runtime Modelle von Llama -8B bis Llama-405B sowie auf A100, wenn FP8 und FP16 auf H100-GPUs verwendet werden, kann es sowohl im Online- als auch im Offline-Szenario konstant eine hervorragende oder wettbewerbsfähige Leistung liefern. SGLang übertrifft vLLM durchweg und erreicht den bis zu 3,8-fachen Durchsatz von Llama-70B. Außerdem erreicht oder übertrifft es regelmäßig TensorRT-LLM und erreicht den bis zu 2,1-fachen Durchsatz des Llama-405B. Darüber hinaus ist SGLang vollständig Open Source, in reinem Python geschrieben und der Kern-Scheduler ist in weniger als 4 KB Codezeilen implementiert.

SGLang ist ein Open-Source-Projekt, das unter der Apache 2.0-Lizenz lizenziert ist. Es wurde von der LMSYS Chatbot Arena verwendet, um einige Modelle, Databricks, mehrere Startups und Forschungseinrichtungen zu unterstützen, Billionen von Token zu generieren und schnellere Iterationen zu ermöglichen.

Das Folgende sind die vergleichenden experimentellen Einstellungen und Ergebnisse mehrerer Frameworks.

Benchmark-Setup

Die Forscher verglichen Offline- und Online-Anwendungsfälle:
Offline: Sie sendeten 2K- bis 3K-Anfragen gleichzeitig und maßen den Ausgabedurchsatz (Tokens/Sekunde). Das heißt, die Anzahl der ausgegebenen Token geteilt durch die Gesamtdauer. Der synthetische Datensatz, den sie testeten, stammte aus dem ShareGPT-Datensatz. Beispielsweise stellt I-512-O-1024 einen Datensatz mit einer durchschnittlichen Eingabe von 512 Token und einer durchschnittlichen Ausgabe von 1024 Token dar. Die fünf Testdatensätze sind:

Datensatz 1: I-243-O-770;
Datensatz 2: I-295-O-770;

    Datensatz 3: I-243-O-386;
  • Datensatz 4: I-295-O-386;
  • Datensatz 5: I-221-O-201.
  • Online: Sie senden Anfragen mit einer Rate von 1 bis 16 Anfragen pro Sekunde (RPS), was die mittlere End-to-End-Latenz misst. Sie verwenden den synthetischen Datensatz I-292-O-579.
  • Sie verwendeten vLLM 0.5.2 (mit Standardparametern) und TensorRT-LLM (mit empfohlenen Parametern und angepasster Batchgröße). Das Präfix-Caching ist für alle Engines deaktiviert. Der Zweck besteht darin, die Grundleistung ohne zusätzliche Funktionen wie spekulative Dekodierung oder Caching zu vergleichen. Sie verglichen SGLang und vLLM mit OpenAI-kompatiblen APIs und TensorRT-LLM mit der Triton-Schnittstelle.

Llama-8B läuft auf einem A100 (bf16)

Die Forscher begannen mit Tests mit einem kleinen Modell Llama-8B. Die folgende Grafik zeigt den maximalen Ausgabedurchsatz, den jede Engine in der Offline-Einstellung für fünf verschiedene Datensätze erreichen kann. Sowohl TensorRT-LLM als auch SGLang können einen Durchsatz von etwa 4000 Token pro Sekunde erreichen, während vLLM etwas dahinter liegt.
Die Online-Benchmark-Grafik unten zeigt ähnliche Trends wie im Offline-Fall. TensorRT-LLM und SGLang weisen eine vergleichbare Leistung auf und halten RPS > 10 aufrecht, während die Latenz von vLLM bei höheren Anforderungsraten deutlich ansteigt.
贾扬清点赞:3K star量的SGLang上新,加速Llama 405B推理秒杀vLLM、TensorRT-LLM
Llama-70B läuft auf 8 A100s (bf16)

Beim größeren Llama-70B-Modell mit Tensorparallelität auf 8 GPUs ist der Trend ähnlich wie bei 8B. In den folgenden Offline-Benchmarks erreichen sowohl TensorRT-LLM als auch SGLang einen hohen Durchsatz.
贾扬清点赞:3K star量的SGLang上新,加速Llama 405B推理秒杀vLLM、TensorRT-LLM
In den Online-Ergebnissen unten zeigt TensorRT-LLM dank effizienter Kernel-Implementierung und Laufzeit eine geringere Latenz.
贾扬清点赞:3K star量的SGLang上新,加速Llama 405B推理秒杀vLLM、TensorRT-LLM
Llama-70B läuft auf 8 H100 (fp8)

Jetzt die FP8-Leistung testen. Sowohl vLLM als auch SGLang verwenden den FP8-Kernel von CUTLASS. In einer Offline-Umgebung ist der Batch-Scheduler von SGLang sehr effizient und kann den Durchsatz mit zunehmender Batch-Größe weiter skalieren, wodurch in diesem Fall der höchste Durchsatz erreicht wird. Andere Systeme können den Durchsatz oder die Stapelgröße aufgrund von OOM, fehlender umfangreicher manueller Abstimmung oder anderem Overhead nicht skalieren. Dies gilt auch online, wo SGLang und TensorRT ähnliche mittlere Latenzen aufweisen.
贾扬清点赞:3K star量的SGLang上新,加速Llama 405B推理秒杀vLLM、TensorRT-LLM
贾扬清点赞:3K star量的SGLang上新,加速Llama 405B推理秒杀vLLM、TensorRT-LLM
Llama-405B läuft auf 8 H100 (fp8)

Abschließend haben wir die Leistung verschiedener Methoden am größten 405B-Modell verglichen. Da das Modell groß ist, wird die meiste Zeit für die GPU-Kernel aufgewendet. Die Lücke zwischen verschiedenen Frameworks wird verringert. Der Grund für die schlechte Leistung von TensorRT-LLM könnte darin liegen, dass das 405B-Modell gerade erst herausgekommen ist und die in der Abbildung verwendete Version einige der neuesten Optimierungen noch nicht integriert hat. SGLang bietet sowohl online als auch offline die beste Leistung.
贾扬清点赞:3K star量的SGLang上新,加速Llama 405B推理秒杀vLLM、TensorRT-LLM
贾扬清点赞:3K star量的SGLang上新,加速Llama 405B推理秒杀vLLM、TensorRT-LLM
SGLang-Übersicht

SGLang ist ein Service-Framework für groß angelegte Sprachmodelle und visuelle Sprachmodelle. Es basiert auf vielen der besten Designs mehrerer Open-Source-LLM-Service-Engines, darunter LightLLM, vLLM und Guidance, und erweitert diese. Es nutzt leistungsstarke Aufmerksamkeits-CUDA-Kernel von FlashInfer und integriert Torch.compile, das von gpt-fast inspiriert ist.

Darüber hinaus stellten die Forscher auch einige innovative Technologien vor, wie RadixAttention für die automatische Wiederverwendung des KV-Cache und eine komprimierte Zustandsmaschine für eine schnelle Dekodierung von Einschränkungen. SGLang ist bekannt für seinen effizienten Batch-Scheduler, der vollständig in Python implementiert ist. Für einen fairen Vergleich testete dieser Blog die Basisleistung dieser Service-Engines mit bestimmten Szenario- oder Arbeitslastoptimierungen wie Präfix-Caching und spekulativer Dekodierung, die deaktiviert waren. Die Beschleunigung von SGLang wird durch die richtige Technik erreicht. Der effiziente Python-basierte Batch-Scheduler von SGLang lässt sich gut skalieren und ist häufig mit in C++ erstellten Closed-Source-Implementierungen vergleichbar oder sogar besser.

Tabelle 1 vergleicht verschiedene Aspekte von SGLang, TensorRT-LLM und vLLM. Hinsichtlich der Leistung sind sowohl SGLang als auch TensorRT-LLM hervorragend. In Bezug auf Benutzerfreundlichkeit und Anpassbarkeit erleichtert der leichte und modulare Kern von SGLang die Anpassung, während der komplexe C++-Technologie-Stack und die Setup-Anweisungen von TensorRT-LLM die Verwendung und Änderung erschweren. Der Quellcode von SGLang ist vollständig Open Source, während TensorRT-LLM nur teilweise Open Source ist. Im Vergleich dazu hat vLLM einen höheren CPU-Planungsaufwand.
贾扬清点赞:3K star量的SGLang上新,加速Llama 405B推理秒杀vLLM、TensorRT-LLM
Die Forscher sagten außerdem, dass sie in Zukunft auch neue Funktionen wie Long Context und MoE-Optimierung entwickeln werden.

Comment utiliser

Vous pouvez facilement servir le modèle Llama en suivant les étapes ci-dessous :

1. Installez SGLang en utilisant pip, le code source ou Docker : https://github. .com/sgl -project/sglang/tree/main?tab=readme-ov-file#install

2. Démarrez le serveur :
# Llama 8Bpython -m sglang.launch_server --model-path meta-llama/Meta-Llama-3.1-8B-Instruct# Llama 405Bpython -m sglang.launch_server --model-path meta-llama/Meta-Llama-3.1-405B-Instruct-FP8 --tp 8

3. Utilisez l'API compatible OpenAI pour envoyer. une demande :
curl http://localhost:30000/v1/completions \-H "Content-Type: application/json" \-d '{"model": "default","prompt": "Say this is a test","max_tokens": 7,"temperature": 0  }'

4. Exécution du benchmark :
python3 -m sglang.bench_serving --backend sglang --num-prompts 1000

Annexe : Configuration détaillée du benchmark

Les instructions pour reproduire le benchmark se trouvent sur sglang/benchmark/blog_v0_2 .

Pour tous les benchmarks, les chercheurs ont défini ignore_eos ou min_length/end_id pour garantir que chaque moteur génère le même nombre de jetons. Ils ont essayé d'utiliser vLLM 0.5.3.post1, mais celui-ci plantait fréquemment sous une charge élevée et les performances de vLLM 0.5.3.post1 semblaient être à peu près identiques, voire pires, par rapport à vLLM 0.5.2 dans certains benchmarks. Par conséquent, ils rapportent les résultats pour vLLM 0.5.2. Même s'ils savaient que différentes configurations de serveur pouvaient avoir un impact significatif sur les performances du service, ils ont principalement utilisé les paramètres par défaut de chaque moteur pour simuler la situation des utilisateurs ordinaires.

Pour les modèles 8B et 70B, ils utilisent les points de contrôle méta-llama/Meta-Llama-3-8B-Instruct et méta-llama/Meta-Llama-3-70B-Instruct bf16, ainsi que neuralmagic/Meta -Llama -3-70B-Instruct-FP8 point de contrôle fp8. Pour le modèle 405B, ils ont utilisé des poids factices dans tous les tests de référence. Étant donné que la dernière image TensorRT-LLM r24.06 ne prend pas en charge la quantification fbgemm_fp8 dans le point de contrôle officiel meta-llama/Meta-Llama-3.1-405B-FP8, ils utilisent la quantification fp8 par couche dans tous les frameworks et ne prennent pas en charge lm_head sauf fbgemm_fp8. quantification. Toutes les couches ont été quantifiées. Ils pensent que cela permet une comparaison équitable de tous les moteurs. Les GPU A100 et H100 sont des versions SXM de 80 Go.

Lien de référence : https://lmsys.org/blog/2024-07-25-sglang-llama3/

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn