Hugging Face: 優化 10 億次分類的成本與延遲

每日處理超過十億次分類或嵌入主要是一項財務挑戰。Hugging Face 已開發出一種方法來計算並優化大規模推理的成本與延遲,證明正確的硬體、批次大小和平行性組合可以顯著降低雲端支出。

10 億次輸入的成本基準

使用 NVIDIA L4 GPU(每小時 0.8 美元),處理 10 億次輸入的成本會根據模型架構和任務而劇烈變化:

使用案例 模型 硬體 10 億次輸入的成本
分類 lxyuan/distilbert-base-multilingual-cased-sentiments-student nvidia-L4 $253.82
嵌入 Alibaba-NLP/gte-modernbert-base nvidia-L4 $409.44
視覺嵌入 vidore/colqwen2-v1.0-merged nvidia-L4 $44,496.51

技術優化框架

為達成這些成本,Hugging Face 為部署和負載測試使用了特定的技術棧:

  • 推理伺服器: Infinity,因其能夠服務多模態嵌入並支援各種硬體(AMD、Nvidia、CPU、Inferentia)而被選擇。
  • 部署: Hugging Face Inference Endpoints 以靈活選擇硬體,以及 Hugging Face Hub Library 用於程式化部署。
  • 負載測試: k6 來自 Grafana,使用 shared-iterations 執行器來模擬平行客戶請求並測量吞吐量和 P95 延遲。

關鍵優化參數

效率由三個主要變數驅動:

  1. INFINITY_BATCH_SIZE:決定有多少文件進行前向傳遞。過低會導致 GPU 未充分利用;過高會超過 GPU 容量。
  2. Virtual Users (VUs):模擬平行客戶請求以確保批次大小被充分利用。
  3. 硬體選擇:發現 NVIDIA L4 在現代工作負載中提供最佳的性價比,優於 NVIDIA T4 和 CPU。

使用案例分析

文本分類

對於輕量級分類任務,評估了 DistilBERT。處理 10 億次輸入的最具成本效益配置(253.82 美元)使用了 NVIDIA L4 GPU,批次大小為 64,以及 448 個 VUs,使用預設的 Infinity 映像。

文本嵌入

ModernBERT 因其支援 Flash-Attention-2 和 8k 上下文窗口而被用於嵌入任務。處理 10 億次輸入的最佳配置(409.44 美元)使用了 NVIDIA L4 GPU,批次大小為 32,以及 256 個 VUs。

視覺嵌入

使用 ColQwen2 的視覺嵌入任務由於模型的 2.21B 參數規模以及 ColBERT 風格的多向量表示(為每個 token 返回一個向量,而不是每個輸入一個向量)而顯著昂貴。處理 10 億次輸入的最便宜配置為 44,496.51 美元,使用了 NVIDIA L4,批次大小為 4,以及 4 個 VUs。

核心發現與權衡

  • 硬體效率: NVIDIA L4 是現代編碼器工作負載的首選,優於 T4。
  • 延遲-成本權衡: 提高允許的延遲通常可以提高吞吐量,從而降低總體成本。此關係可透過 Pareto 曲線視覺化。
  • 視覺成本罰則: 基於圖像的檢索相比文字任務大約貴兩個數量級,原因是模型規模更大、架構更複雜(包括解碼器)以及圖像資料的 API/出站成本較高。
  • 擴展策略: 要水平擴展,在建立單一 GPU 基準後,可以透過增加副本 GPU 來提高吞吐量。

Sources