用來運行 Llama 3 405B 優勢明顯。
最近,Meta 開源了最新的 405B 模型(Llama 3.1 405B),把開源模型的性能拉到了新高度。由於模型參數量很大,許多開發者都關心一個問題:怎麼提高模型的推理速度? 時才每隔兩天,LMSYS Org 團隊就出手了,推出了全新的 SGLang Runtime v0.2。這是一個用於 LLM 和 VLM 的通用服務引擎。在運行 Llama 3.1 405B 時,它的吞吐量和延遲表現都優於 vLLM 和 TensorRT-LLM。 在某些情況下(運行 Llama 系列模型),它的吞吐量甚至能達到 TensorRT-LLM 的 2.1 倍,vLLm 的 3.8 倍。 LMSYS Org 團隊是一個由加州大學柏克萊分校、加州大學聖地牙哥分校、卡內基美隆大學的學生與教職員共同組成的公開性質的研究團體。他們所發展的大模型評測平台 ——Chatbot Arena 已成為檢驗大模型能力的重要平台,也被認為是相對公平的評測方式。 SGLang 是該團隊開發的一個用於大型語言模型和視覺語言模型的快速服務框架,於今年 1 月份正式推出,在 GitHub 上已經收穫了超過 3k 的 star 量。
這次的更新效果驚艷,知名AI 研究者、Lepton AI 聯合創始人兼CEO 賈揚清評價說「我一直被我的博士母校加州大學柏克萊分校驚艷,因為它不斷交付最先進的人工智慧和系統協同設計成果。他們在部落格中提到,「我們已經運行Chatbot Arena 平台一年多,為數百萬用戶提供服務。我們深知高效服務對人工智慧產品和研究的重要性。透過營運經驗和深入研究,我們不斷增強底層服務系統,從高級多模型服務框架 FastChat 到高效率服務引擎SGLang Runtime (SRT)。 。創建一個不僅用戶友好、易於修改,而且性能一流的服務引擎。和H100 GPU 上使用FP8 和FP16 時,在線上和離線場景下都能持續提供卓越或有競爭力的效能。 SGLang 的效能始終優於 vLLM,在 Llama-70B 上的吞吐量最高是前者的 3.8 倍。它也經常與 TensorRT-LLM 不相上下,甚至超過 TensorRT-LLM,在 Llama-405B 上的吞吐量最高是前者的 2.1 倍。更重要的是,SGLang 是完全開源的,由純 Python 編寫,核心調度器只用了不到 4K 行程式碼就實現了。 SGLang 是一個開源項目,採用 Apache 2.0 授權授權。它已被 LMSYS Chatbot Arena 用於支援部分模型、Databricks、幾家新創公司和研究機構,產生了數萬億 token,實現了更快的迭代。 基準設定
,即輸出token 數除以總持續時間。他們測試的合成資料集來自 ShareGPT 資料集。例如,I-512-O-1024 表示平均輸入 512 個 token、平均輸出 1024 個 token 的資料集。五個測試資料集分別為:
資料集1:I-243-O-770;
資料集2:I-295-O-770; :I-243-O-386;
資料集4:I-295-O-386;
資料集5:I-221-O-201。
-
在線:他們以每秒 1 到 16 個請求 (RPS) 的速率發送請求,測量端到端延遲的中位數。他們使用合成資料集 I-292-O-579。
他們使用 vLLM 0.5.2(帶預設參數)和 TensorRT-LLM(帶有推薦參數和調整後的批次大小)。所有引擎都關閉了前綴快取。目的是在沒有任何附加功能(如推測解碼或快取)的情況下,對基本效能進行基準測試。他們使用與 OpenAI 相容的 API 對 SGLang 和 vLLM 進行基準測試,並使用 Triton 介面對 TensorRT-LLM 進行基準測試。
- Llama-8B 在一個 A100 上運行(bf16)
研究者從小型模型 Llama-8B 開始測試。下圖顯示了每個引擎在五個不同資料集的離線設定下所能達到的最大輸出吞吐量。 TensorRT-LLM 和 SGLang 都能達到每秒約 4000 個 token 的吞吐量,而 vLLM 則稍遜一籌。
下面的線上基準圖顯示了與離線情況類似的趨勢。 TensorRT-LLM 和 SGLang 的效能相當,可以保持 RPS > 10,而 vLLM 的延遲在請求率較高時顯著增加。
Llama-70B 在 8 個 A100 上運行(bf16)至於在 8 個 GPU 上進行較張量並行的大型 Llama-Hlama-lama-D 相似度。在下面的離線基準測試中,TensorRT-LLM 和 SGLang 都能達到很高的吞吐量。 在下圖的線上結果中,TensorRT-LLM 憑藉高效的核心實現和運行時間,顯示出較低的延遲。 Llama-70B 在 8 個 H100 上運行(fp8)現在來測試 FP8 效能。 vLLM 和 SGLang 都使用了 CUTLASS 的 FP8 核心。在離線設定中,SGLang 的批次調度器非常高效,可以隨著批次規模的增加而繼續擴展吞吐量,在這種情況下實現了最高吞吐量。其他系統則由於 OOM、缺少大量手動調整或存在其他開銷而無法擴展吞吐量或批次大小。在線上情況下也是如此,SGLang 和 TensorRT 的中位數延遲相似。 Llama-405B 在 8 個 H100 上運行(fp8)最後,研究者在最大的基準測試方法上進行了最大測試方法。由於模型較大,大部分時間都花在了 GPU 核心上。不同框架之間的差距縮小了。 TensorRT-LLM 表現不佳的原因可能是 405B 模型剛剛問世,而圖中使用的版本尚未整合一些最新優化。在線上和離線情況下,SGLang 的性能都是最好的。 SGLang 是大型語言模型和視覺語言模型的服務框架。它基於並增強了多個開源 LLM 服務引擎(包括 LightLLM、vLLM 和 Guidance)的許多優秀設計。它利用了來自 FlashInfer 的高性能注意力 CUDA 內核,並整合了受 gpt-fast 啟發的 torch.compile。 此外,研究者還引入了一些創新技術,如用於自動 KV 快取重用的 RadixAttention 和用於快速約束解碼的壓縮狀態機。 SGLang 以其完全以 Python 實現的高效批次調度器而聞名。為了進行公平比較,本部落格測試了這些服務引擎在關閉特定場景或工作負載最佳化(如前綴快取和推測解碼)後的基本效能。 SGLang 的提速是透過適當的工程設計來實現的。 SGLang 基於 Python 的高效批次調度器具有良好的擴展性,通常可與使用 C++ 建構的閉源實作相媲美,甚至更勝一籌。 表 1 比較了 SGLang、TensorRT-LLM 和 vLLM 的各個面向。在性能方面,SGLang 和 TensorRT-LLM 都非常出色。在可用性和可自訂性方面,SGLang 的輕量級和模組化核心使其易於定制,而 TensorRT-LLM 複雜的 C++ 技術堆疊和設定說明使其更難使用和修改。 SGLang 的原始碼完全開源,而 TensorRT-LLM 僅部分開源。相較之下,vLLM 的 CPU 調度開銷較高。 研究者也表示,未來他們還將開髮長上下文和 MoE 最佳化等新功能。以下の手順に従って簡単にLlamaモデルを提供できます: 1. pip、ソースコード、またはDockerを使用してSGLangをインストールします: https://github .com/sgl -project/sglang/tree/main?tab=readme-ov-file#install2. サーバーを起動します:
# 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. OpenAI 互換 API を使用して送信します。リクエスト:
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. ベンチマークの実行:
python3 -m sglang.bench_serving --backend sglang --num-prompts 1000
登入後複製
ベンチマークを再現する手順は、次の場所にあります。 sglang/ベンチマーク/blog_v0_2 。
すべてのベンチマークについて、研究者は、各エンジンが同じ数のトークンを出力するように、ignore_eos または min_length/end_id を設定しました。彼らは vLLM 0.5.3.post1 を使用しようとしましたが、高負荷時に頻繁にクラッシュし、一部のベンチマークでは vLLM 0.5.3.post1 のパフォーマンスは vLLM 0.5.2 とほぼ同じかそれよりも劣るようでした。したがって、vLLM 0.5.2 の結果が報告されます。彼らは、さまざまなサーバー構成がサービスのパフォーマンスに大きな影響を与える可能性があることを認識していましたが、主に各エンジンのデフォルトのパラメーターを使用して、一般ユーザーの状況をシミュレートしました。
8B および 70B モデルの場合、meta-llama/Meta-Llama-3-8B-Instruct および metal-llama/Meta-Llama-3-70B-Instruct bf16 チェックポイント、および neuralmagic/Meta を使用します。 -ラマ -3-70B-命令-FP8 fp8 チェックポイント。 405B モデルの場合、すべてのベンチマークでダミー ウェイトを使用しました。 TensorRT-LLM の最新イメージ r24.06 は、公式の metal-llama/Meta-Llama-3.1-405B-FP8 チェックポイントで fbgemm_fp8 量子化をサポートしていないため、すべてのフレームワークでレイヤーごとの fp8 量子化を使用し、fbgemm_fp8 を除く lm_head をサポートしていません。すべてのレイヤーが量子化されました。彼らは、これによりすべてのエンジンを公平に比較できると信じています。 A100 および H100 GPU は 80GB SXM バージョンです。
参考リンク:https://lmsys.org/blog/2024-07-25-sglang-llama3/以上是賈揚清點讚:3K star量的SGLang上新,加速Llama 405B推理秒殺vLLM、TensorRT-LLM的詳細內容。更多資訊請關注PHP中文網其他相關文章!