使用 Intel Sapphire Rapids 加速 PyTorch Transformers
Intel Sapphire Rapids CPU 與 Hugging Face Optimum Intel 函式庫結合時,可將 PyTorch 變換器推論速度提升至前代 Intel Xeon(Ice Lake)最高 3 倍。此效能提升即使在長文本序列下,也能實現單位數毫秒的預測延遲,這在過去主要只能透過 GPU 達成的基準。
基於 CPU 的推論策略優勢
基於 CPU 的推論是一種可行且常常優於基於 GPU 的推論的替代方案,具體取決於模型大小、任務平行度與成本限制。
- 模型大小:較小的模型通常在 CPU 上運行效率高,而較大的模型則更能受益於 GPU 的龐大計算能力。
- 平行度:GPU 在大規模平行處理方面表現卓越。如果推論任務缺乏高度平行度,CPU 可能更有效。
- 成本與彈性:CPU 通常比 GPU 更具成本效益,特別是對於不需要極低延遲的使用情境。它們也提供更大的彈性,以擴展推論工作者並部署於多樣化的硬體環境。
硬體與軟體配置
為了評估效能提升,我們使用 Amazon EC2 執行個體進行基準測試,規格如下:
- Ice Lake(基線):
c6i.16xlarge執行個體。 - Sapphire Rapids:
r7iz.16xlarge-metal執行個體。
兩個執行個體皆使用 32 顆實體核心(64 個 vCPU),並配置 Ubuntu 22.04、Linux 5.15.0、PyTorch 1.13、Intel Extension for PyTorch 1.13 與 Transformers 4.25.1。Sapphire Rapids 執行個體額外使用 Optimum Intel 函式庫。
基準測試 NLP 模型效能
基準測試在文字分類任務上使用 distilbert-base-uncased、bert-base-uncased 與 roberta-base 模型進行。測試測量了單次與批次推論在短(16 token)與長(128 token)序列上的平均與 p99 預測延遲。
最佳化技術
在 Sapphire Rapids 架構上,透過 Optimum Intel 函式庫套用以下最佳化,以發揮硬體效能:
- bfloat16 模式:已啟用,以利用 Advanced Matrix Extensions(AMX)指令。
- 即時編譯(JIT):設定為
True,以進一步最佳化模型執行。
效能結果
對於 distilbert-base-uncased 模型,在 Sapphire Rapids 上的單次預測相較於前一代 Xeon CPU,顯示 60-65% 的延遲降低(速度提升 60-65%)。硬體與軟體的結合使得即使處理長文本序列,也能達成單位數毫秒的預測延遲。
結論
第四代 Intel Xeon CPU 為 PyTorch Transformers 的推論效能帶來顯著躍進。透過整合 Intel Extension for PyTorch 與 Hugging Face Optimum,開發者能以更具成本效益的方式部署深度學習模型,且其效能可與特定 NLP 任務的 GPU 解決方案相媲美。