Hugging Face Infinity CPU 效能案例研究
Hugging Face Infinity 是一種容器化推論解決方案,旨在降低在 CPU 基礎設施上部署 Transformer 模型時的延遲並提高吞吐量。透過針對特定硬體架構優化模型,它能夠實現即時使用場景,並降低大規模部署的基礎設施成本。
Hugging Face Infinity 的架構
Infinity 由兩個主要組件組成,兩者協同工作以提供硬體加速的推論流水線:
- Infinity Container:一個 Docker 容器,提供硬體優化的推論解決方案並公開 HTTP
/predict端點。 - Infinity Multiverse:一個模型優化服務,可針對目標硬體架構優化 Hugging Face Transformer 模型,以確保與 Infinity Container 的相容性。
每個 Infinity Container 旨在服務單一模型與單一任務。支援的任務包括 token classification、sequence classification、ranking 以及 feature extraction/document embedding。
Intel Ice Lake 上的效能基準測試
在一項使用 Amazon EC2 C6i 執行個體(由搭載 Ice Lake 架構的第 3 代 Intel Xeon Scalable 處理器驅動)的案例研究中,Hugging Face 對 DistilBERT 模型進行了 sequence classification 的基準測試。
端到端測量
與僅測量模型執行的基準測試不同,Infinity 的效能是以端到端流水線來衡量的,涵蓋了預處理、預測與後處理。
關鍵結果
在 Ice Lake 上執行優化容器的 Infinity 相比於其他配置實現了以下改進:
- 相對於 Vanilla Transformers:在 Ice Lake 硬體上,延遲與吞吐量提升高達 800%。
- 相對於 Cascade Lake:與基於 Cascade Lake 架構的執行個體相比,延遲與吞吐量提升高達 34%。
吞吐量比較
當在兩個實體核心上以 batch size 為 1 執行時,Infinity 在所有序列長度下相對於 vanilla Transformers 均展現出顯著的吞吐量增益:
| Sequence Length | Infinity | Transformers | Improvement |
|---|---|---|---|
| 8 | 248 req/sec | 49 req/sec | +506% |
| 16 | 212 req/sec | 16 req/sec | +424% |
| 32 | 150 req/sec | 40 req/sec | +375% |
| 64 | 97 req/sec | 28 req/sec | +346% |
| 128 | 55 req/sec | 18 req/sec | +305% |
| 256 | 27 req/sec | 9 req/sec | +300% |
| 384 | 17 req/sec | 5 req/sec | +340% |
| 512 | 12 req/sec | 4 req/sec | +300% |
延遲指標
對於長度高達 64 個 token 的序列,Infinity 可以提供低至 1-4ms 的延遲。基準測試還顯示,Infinity 在 p95、p99 與最大延遲 (p100) 之間保持一致的效能,偏差極小。
部署影響
能夠針對吞吐量或延遲進行優化,讓企業可以選擇在相同工作負載下降低基礎設施成本,或是實現先前在基於 CPU 的基礎設施上難以實現的即時 AI 應用程式。
Note:截至 2022 年 12 月,Hugging Face Infinity 不再作為商業推論解決方案提供。Hugging Face 現在建議使用 Inference Endpoints 進行託管基礎設施,或使用 Optimum Intel 與 Optimum ONNX Runtime 函式庫進行開源硬體優化。
Sources
相關
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- Dispatch