如何為 LLM 推論選擇最佳 GPU:基準測試洞察

如何為 LLM 推論選擇最佳 GPU:基準測試洞察

重點摘要

  • 高推論成本:大規模模型推論仍然昂貴,限制了可擴展性,儘管整體成本持續下降。
  • GPU 選擇挑戰:市場上多樣化的 GPU 使得選擇過程複雜化,常導致基於表面指標的次優選擇。
  • 客觀評估框架:標準化的評估方法有助於找出符合特定業務需求且具成本效益的 GPU 解決方案。
  • 效能指標:專注於延遲(首個 Token 時間)與吞吐量(每秒 Token 數),以優化使用者體驗。
  • 成本效益分析:評估每百萬 Token 成本搭配效能指標,能將解決方案清楚劃分至有效的四個象限。
  • 實際測試:對主流模型(Llama 3.1 系列)在主要 GPU(H100、A100、RTX 4090)上進行測試,產出可操作的見解。
  • 最佳實踐:選擇推論硬體與最佳化推論引擎的建議,有助於提升效率並降低成本。
  • 探索 Novita AI:如需了解更多大型模型推論服務,請造訪 Novita AI。

引言

大型模型推論的成本雖持續下降,但仍相當高昂,推論速度與使用成本嚴重限制了營運的可擴展性。身為大型模型推論服務的提供者,我們持續投入以提升推論速度並降低推論成本。

我們深入探索推論硬體的選擇與推論引擎的最佳化,為客戶提供最具成本效益的推論解決方案。本文將重點介紹選擇推論硬體的理論方法與最佳實踐,並呈現我們的初步結論。

可用於大型模型推論的 GPU 種類繁多,要找到符合特定業務需求的 GPU 極具挑戰性。在部署營運時,眾多 GPU 常讓人感到困惑,僅能基於 GPU 算力、記憶體容量、頻寬與價格等指標進行靜態比較。這種主觀認為某 GPU 看起來不錯就選擇的做法,可能嚴重誤導並對業務產生負面影響。

我們在早期階段也遇到了這個問題。然而,隨著業務成長與擴展,我們逐漸發展出一套客觀公正的 GPU 評估標準與對應的評估方法。透過這種標準化方式進行多次評估,我們能夠從眾多 GPU 中找出最符合不同業務需求且具成本效益的解決方案。再搭配最佳化的推論引擎,最終為客戶提供既快速又具成本效益的大型模型推論服務。

評估方法

簡而言之,「最佳成本效益 GPU」需滿足兩個條件:最低價格與最高效能。在開始評估前,我們精確定義這些標準。

定義「最低價格」

最低價格並非 GPU 硬體成本或資料中心中的雲端伺服器租賃費用,而是推論服務的成本。這是我們在官方網站上使用模型 API 時看到的價格,定義為每消耗一百萬 Token 的費用(每百萬 Token 美元)。數值越低表示價格越低。

理解「最高效能」

最高效能指的是大型模型推論的速度,越快越好。必須與模型效能區分,後者通常包含兩個子指標:延遲與吞吐量。

延遲與吞吐量指標

  • 延遲:衡量首個 Token 時間(TTFT),即使用者從發起請求到收到第一個 Token 所等待的時間。
  • 吞吐量:指示從第一個 Token 開始,每秒平均接收的 Token 數量(TPS)。

評估方法

為了使評估與業務需求一致,我們在評估時將推論系統視為黑箱,根據系統的輸入與輸出計算延遲與吞吐量。下圖說明了延遲與吞吐量的計算方式。

關鍵考量

  • 較低的延遲與較高的吞吐量表示推論效能較佳。
  • 在實際情境中,吞吐量遠比延遲重要。

關鍵考量

請求管理

一般而言,較低的延遲與較高的吞吐量表示推論效能較佳。然而,在實際情境中,吞吐量遠比延遲重要。

只要延遲保持在 2 秒以下,使用者對其並不敏感。即使等待幾毫秒才看到第一個 Token,也不會明顯影響體驗。

另一方面,吞吐量的變化對使用者體驗影響極大,使用者傾向於選擇吞吐量較高的系統。因此,在評估推論解決方案的效能指標時,我們專注於比較吞吐量的差異,同時讓延遲保持在可接受的範圍內。

在實際營運中,推論系統會同時處理多個使用者請求,以提升整體系統負載。然而,並發程度不應過高,過高的並發反而可能降低推論效能。此外,使用者請求的長度與返回的 Token 數量也會影響效能指標。

簡化評估模式

為了從複雜的業務場景中提取模式,我們的評估方法在緊密貼合業務設定的同時進行適當簡化。

固定比例與長度

我們為請求的輸入與輸出設定固定比例與長度,例如 (1000,100)、(3000,300)、(5000,500),並在發送請求時精確控制輸入與輸出長度。

測試輪次與指標計算

準備好數萬個請求後,我們以固定的批次大小將請求發送至推論伺服器進行測試輪次,模擬大量使用者持續發送請求,並維持推論系統穩定的並發程度。

效能指標

根據每個測試輪次的資料,我們計算所有請求的延遲與吞吐量指標,並統計 P50、P90、P99 等不同百分位指標,以反映更真實的效能。

此外,我們計算測試輪次中所有輸入與輸出 Token 的總吞吐量,結合硬體成本,推導出推論系統每百萬 Token 的價格。

成本效益分析

根據此評估方法,我們根據不同的輸入輸出長度與批次大小產生多組測試資料,發送至推論服務,並計算兩個關鍵指標:每百萬 Token 價格與每個請求的每秒輸出 Token 速率(TPS)。

接著,我們將這些指標繪製在圖表上,以價格為 X 軸,TPS 為 Y 軸。使用相同方法評估更多硬體規格並將結果繪製在圖表上,即可建立成本效益的整體概覽。

為便於比較不同解決方案,我們將圖表劃分為四個象限:

左上:領先者象限,效能最高且價格最低。

左下:跟隨者象限,價格吸引人但效能有待提升。

右上:挑戰者象限,效能領先但價格較高,可能來自尖端且昂貴的硬體解決方案;若價格下降,可能挑戰領先者。

右下:過時解決方案,在價格與效能上均無優勢。

成本效益分析

實作方法

我們的評估目標是找出最具成本效益的 GPU 硬體。為確保比較有意義,我們將固定模型、推論引擎與請求資料,僅在相同測試條件下更換 GPU 硬體。評估過程中,我們將選擇主流開源模型、資料集與推論引擎,主要使用 NVIDIA 系列 GPU 硬體。

模型選擇

我們將使用 Llama 3.1 系列模型,具體為 Llama 3.1–70B 模型(Hugging Face 連結)。此模型大小通常需要多 GPU 推論,適合評估 GPU 間的通訊效能。

推論引擎

推論引擎將使用 vLLM v0.6.3。資料集方面,我們將聚焦於問答對,選擇 ShareGPT-v3-unfiltered 作為最合適的選項。在建構請求資料時,我們會遍歷 ShareGPT 資料集,根據輸入長度過濾問答對,僅保留長度等於或超過指定值的項目,並僅保留問題(若過長則適當截斷)作為請求提示。

GPU 規格選擇

在選擇 GPU 規格時,我們將評估主流 GPU,具體為 H100、A100 與 RTX 4090,涵蓋低、中、高階類別。常見做法是在雲端平台上租用 8 卡配置的 GPU 伺服器,例如我們的網站 Novita AI,提供方便的按需付費選項。此外,我們可能納入更多 GPU 規格以擴大評估範圍,最終目標是讓四個象限中充滿各種 GPU 與推論策略。

開始評估

完成準備工作後,可依照以下步驟啟動評估:

步驟 1:啟動推論引擎

在目標 GPU 伺服器上啟動 vLLM 推論引擎,您可以快速建立 Docker 容器實例。對於 8 卡 4090 GPU 伺服器,使用以下指令:

docker run -d --gpus all --net=host vllm/vllm-openai:v0.6.3 --port 8080 --model meta-llama/Llama-3.1-70B-Instruct --tensor-parallel-size 8 --swap-space 16 --gpu-memory-utilization 0.9 --dtype auto --served-model-name llama31-70b --max-num-seqs 32 --max-model-len 32768 --enable-prefix-caching --enable-chunked-prefill --disable-log-requests

步驟 2:建構與發送請求

在客戶端,根據輸入/輸出長度與批次大小建構請求,並大量發送至伺服器。我們也可以參考 vLLM 提供的內建測試案例來編寫符合我們評估需求的測試腳本。

建構請求時需注意以下重點:

  • 從 ShareGPT 過濾資料

在遍歷 ShareGPT 資料集中所有對話條目時,請注意每個對話的第一個元素是問題,第二個元素是對應的答案。您只需要問題作為請求的提示。

為確保問題中的 Token 數量符合輸入長度要求,您可能需要適當截斷問題。此外,在每個請求的參數列表中,將 max_tokens 設定為指定的輸出長度,並將 ignore_eos 設為 true,以強制推論引擎輸出指定數量的 Token。

  • 一致的批次大小

在每個測試輪次中,始終維持相同的批次大小。為達到此目的,客戶端應並行發送固定數量的請求,並在一個請求完成後立即重新發送一個請求。這可確保測試條件保持一致,從而進行準確的效能測量。

每個請求的參數可設定如下:

{
  "model": "llama31-70b",
  "prompt": prompt_content,
  "temperature": 0.8,
  "top_p": 1.0,
  "best_of": 1,
  "max_tokens": output_len,
  "ignore_eos": true
}

步驟 3:收集指標資料

所有請求完成後,應收集以下關鍵指標:

  • 每個請求:首個 Token 延遲(TTFT)= 首個 Token 時間 — 發送請求時間
  • 每個請求:每秒 Token 數(TPS)= 總輸出 Token 數 / (完成請求時間 — 首個 Token 時間)
  • 一輪測試:系統總吞吐量 = 總和(每個請求的輸入 Token 數 + 輸出 Token 數) / 總秒數

其中 TTFT 與 TPS 針對每個請求,為方便計算,您可以使用測試輪次中所有請求的 P90 百分位數。

系統總吞吐量表示推論服務每秒能處理的 Token 總數(包括輸入與輸出 Token)。將對應 GPU 伺服器的價格除以總吞吐量,即可得出每百萬 Token 的成本。

在實際情境中,伺服器使用率與請求波動也可能影響吞吐量,可以應用一個因子來考慮這些影響,不過這通常不會影響評估結論。

GPU 效能與成本效益的主要發現

我們使用上述測試方法對主要 GPU(H100、A100、RTX 4090)進行了深入評估。對於每個 GPU,我們計算了在不同輸入/輸出長度與批次大小下的效能指標(TTFT、TPS),並得出 P50、P90 與 P99 百分位數。我們也參考了主流 GPU 雲端平台的租賃價格(可在 Novita AI 取得),以計算每百萬 Token 的成本。這些資料將作為進一步成本效能評估的基礎,並引導我們得出最終的評估結論。

單一推論效能比較

主要關注延遲(首個 Token 延遲)與吞吐量(每秒 Token 數)。延遲越低越好,TPS 越高越好。我們在三個 GPU 上評估了 Llama-3.1–8B 與 Llama-3.1–70B 模型的 BF16 與 FP8 版本,設定每個請求的輸入/輸出長度為 5000/500,並測試不同的批次大小。以下是 Llama-3.1–8B 模型的效能比較結果,使用 P50 資料進行分析。

  1. 首個 Token 延遲:

速度排名從最快到最慢為 H100、A100、RTX 4090。當批次大小設為 1 時,A100 的速度是 RTX 4090 的 1.25 倍,H100 則是 1.66 倍。

隨著批次大小增加,RTX 4090 與其他兩個 GPU 之間的差距顯著擴大。當批次大小達到 10 時,RTX 4090 的延遲超過 3.5 秒(P90 百分位數),這對許多業務應用來說是不可接受的。相比之下,A100 與 H100 的延遲保持在 0.5 秒以下,表現穩定。

2. 每秒 Token 數(TPS):

此指標反映引擎的生成速度,速度排名相同:H100、A100、RTX 4090。批次大小為 1 時,A100 的 TPS 約為 RTX 4090 的 1.48 倍,H100 的 TPS 約為 RTX 4090 的 2.44 倍,顯示 H100 的生成效率最高。

隨著批次大小增加,由於系統負載增加且每個請求的資源減少,單一請求的 TPS 逐漸下降。當批次大小為 10 時,TPS 降至批次大小為 1 時的約 70%。

3. FP8 模型量化:

FP8 版本的權重檔案比 BF16 減半,大幅降低系統資源開銷,從而改善了延遲與吞吐量。第二組長條圖清楚說明了這個結論,尤其是在 TPS 指標上,同樣 GPU 下 FP8 版本的效能約為 BF16 版本的 1.4 倍。

4. RTX 4090 對批次大小的敏感度:

由於記憶體與通訊限制,RTX 4090 對批次大小非常敏感。過大的批次大小可能導致內部排隊,造成更高的延遲與更低的吞吐量。在 RTX 4090 上部署工作負載時,必須特別注意批次大小的設定。

RTX 4090 對批次大小的敏感度

RTX 4090 對批次大小的敏感度(2)

我們對 Llama-3.1–70B 模型採用了相同的評估方法,效能比較如下圖所示。

由於 70B 模型規模較大,我們對 BF16 版本使用了 8 張 RTX 4090 GPU,對 FP8 版本使用了 4 張 RTX 4090 GPU。相比之下,A100 與 H100 GPU 擁有 80GB 記憶體,只需 2 張即可有效執行。

從圖中我們可以得出與 Llama-3.1–8B 模型相似的結論:H100 仍是效能最高的 GPU,且 FP8 量化版本約比 BF16 版本快 1.4 倍。

RTX 4090 對批次大小的敏感度(3)

RTX 4090 對批次大小的敏感度(4)

綜合成本效能評估

在實際部署中,不僅需要考慮效能指標,還需要考慮解決方案的整體成本,以找出最佳成本效益比。

例如,RTX 4090 在效能上可能較慢,但其極低的價格可能使整體成本效益具有競爭力。為此,我們需要更科學、專業的評估方法,以準確判斷哪種 GPU 與推論解決方案最具價值。

在我們的「評估方法」中,我們建議將不同推論解決方案的成本與效能指標繪製在二維座標系統上,並將空間劃分為四個象限:領先者、跟隨者、挑戰者與淘汰者。遵循此方法,我們重點測試了 Llama-3.1–70B、Llama-3.1–8B 模型及其 FP8 量化版本。

我們選擇了四種 GPU:RTX 4090、A100、H100 與 H200,設定輸入/輸出長度為 5000/500,批次大小範圍為 1 到 10。我們測試了各種組合以獲得效能與定價資料,最終繪製在以下兩張圖中。

對於 Llama-3.1–70B 模型,各解決方案的成本效益比如圖所示。四個解決方案落在我們定義的領先者象限:

  • Llama3.1–70B-FP8@2xH100
  • Llama3.1–70B-FP8@4xH200
  • Llama3.1–70B@4xH200
  • Llama3.1–70B@2xH100

在圖中,每個解決方案座標點與原點連線的斜率代表效能與價格的比值。斜率越陡,表示成本效益比越高。

因此,解決方案 Llama3.1–70B-FP8@4xH200 在所有評估的推論解決方案中是最具成本效益的選擇。

tps vs price

對於 Llama3.1–8B 模型,由於規模較小,我們所有模型均使用單 GPU 配置部署。各解決方案的成本效益比如下圖所示。H200 的兩種配置落在我們定義的領先者象限。

這主要歸因於 H200 的良好效能(尤其是其領先的記憶體容量與頻寬)以及具有競爭力的定價。兩種 RTX 4090 配置最具成本效益,但由於效能較差,落在跟隨者象限。

tps vs price(2)

結論

GPU 成本佔大型模型推論服務的很大一部分,而市場上 GPU 硬體選擇眾多,選擇最合適的 GPU 可能極具挑戰性。找出針對特定業務需求的最佳成本效益 GPU 與推論解決方案至關重要,它可能決定業務的成敗。

透過提供大型模型推論服務的經驗,我們累積了大量的部署知識,並開發了一套有效的 GPU 評估框架,持續引導業務發展,為客戶提供最佳成本效益的推論服務。

本文提煉了實際應用中的最佳實踐,並對主流大型模型與 GPU 規格進行了實際測試,提供效能比較,以找出最佳成本效益的推論解決方案。

我們的評估方法超越了複雜的硬體指標,專注於實際業務應用,具有高度的通用性與可操作性,尤其適合對各種 GPU 型號或推論引擎進行比較測試。

請查看 Novita AI 以了解更多關於頂級大型模型推論服務與解決方案的資訊!

Novita AI 是一個 AI 雲端平台,為開發者提供使用簡單 API 部署 AI 模型的簡便方式,同時提供負擔得起且可靠的 GPU 雲端以進行建置與擴展。

推薦閱讀

1.KV Sparsity 如何為 vLLM 達到 1.5 倍加速

2.為 Kubernetes 工作負載動態分配 GPU 資源

3.為執行中的 Docker 容器動態新增連接埠對應