當您使用 GPU 進行模型推理時,您希望獲得盡可能高的性價比。了解利用率是關鍵——高 GPU 利用率意味著需要更少的 GPU 來處理高流量工作負載。您可以使用一些手段來提高利用率,例如更大的批量大小和針對服務優化的模型引擎。您可以在工作區中每個模型的“指標”選項卡中衡量這些更改的影響。
GPU 利用率衡量的是工作負載期間 GPU 資源的使用量。在運行 ML 模型時,我們希望最大限度地提高 GPU 利用率,以降低服務高流量模型端點的成本。如果每個 GPU 的性能更高,則能夠使用更少的 GPU 來處理相同的流量,從而節省模型托管成本。
想象一下,你和整個團隊(假設有 12 個人)在辦公室。你們都需要去參加城鎮另一邊的活動,所以你們預訂了幾輛 Uber。如果每輛車坐 4 個人,你只需要叫 3 輛車。但如果每輛車只有 2 或 3 個人,你就需要更多車了——可能會花費兩倍的錢。
就像這個拼車比喻只有在人數眾多的情況下才有意義一樣,GPU 利用率在高流量工作負載下變得非常重要。當您為模型處理如此多的請求時,您必須啟動額外的實例來處理負載,您需要確保您支付的每個實例都在做盡可能多的工作。
一、如何測量 GPU 利用率
對于 GPU 利用率,有三個主要統計數據需要考慮:
計算使用情況:GPU 運行內核的時間百分比是多少,空閑的時間百分比是多少?
內存使用情況:推理期間有多少 GPU 的 VRAM 處于活動狀態?
內存帶寬使用情況:有多少可用帶寬用于將數據發送到計算核心?
當我們談論提高 LLM 的 GPU 利用率時,我們幾乎總是指增加計算使用率。這是因為內存帶寬通常是推理速度的瓶頸,而計算能力可能會被擱置。雖然總體 VRAM 容量限制了模型大小和并發提示的數量,但它通常不是我們試圖增加的使用量。
運行模型的某些部分受計算限制,這意味著性能瓶頸在于 GPU 計算值的速度。一個受計算限制的過程是 LLM 的預填充階段,在此階段,模型處理完整提示以創建其響應的第一個標記。
但LLM 推理的大部分內容都受內存限制。在第一個 token 之后,LLM 的大部分生成過程都受內存限制,這意味著 GPU 的 VRAM 上的帶寬是限制 token(或圖像、轉錄、音頻文件等)生成速度的因素。
鑒于大多數 LLM 推理都受到內存傳輸限制,我們尋找增加計算利用率的策略,以便我們可以對訪問的每個字節內存運行更多計算。
二、如何提高 GPU 利用率
通常,您可以通過在推理期間增加批處理大小來提高 GPU 利用率。批處理大小決定了 LLM 中同時處理的用戶輸入數量。更大的批處理大小可以讓模型使用更多的計算資源,即使在內存受限的情況下也是如此。從 VRAM 讀取的每個模型權重都會同時應用于更多輸出,從而增加每字節帶寬可以使用的計算量。
增加批處理大小可以提高吞吐量,吞吐量是衡量 GPU 實例每秒可以處理多少請求的指標。但是,增加吞吐量通常會使延遲變得更糟,這意味著用戶必須等待更長時間才能獲得模型輸出。在嘗試最大化利用率時,管理這種權衡很重要。
一旦多個實例的利用率都很高,就值得考慮切換到更強大的 GPU 類型。例如,從 A100 切換到 H100可以節省 20-45% 的工作負載,這些工作負載的利用率很高,流量足以需要多個 A100 GPU。
擴展我們的拼車比喻,切換到 H100 就像為您的 12 人團體叫一輛 Uber XL 車——一輛車有 6 名乘客,您只需要兩輛車,這樣即使 XL 的車費稍微貴一些,也能節省更多錢。
三、如何跟蹤 GPU 利用率
在工作區中,您可以查看每個部署模型的計算和 VRAM 容量(而非帶寬)的 GPU 利用率。這些圖表按時間戳與流量和自動縮放圖表對齊,因此您可以準確地看到實際使用情況如何影響利用率。
在調整模型優化和批量大小時,使用這些指標來查看每個更改對 GPU 利用率的影響。