Hugging Face 加速推理 API 優化
Hugging Face 已實施一系列優化策略,在其加速推理 API 中實現了 transformer 推理性能 100 倍的提升。這項改進對於將大規模 NLP 模型部署到生產環境至關重要,因為在這些環境中,即時消費者應用的延遲是主要的限制因素。
高層級函式庫與流水線優化
Hugging Face 通過利用 Transformers 和 Tokenizers 函式庫中最有效的方法,在不依賴目標硬體的情況下,實現了最初的 10 倍加速。
高效的模型流水線
該 API 利用優化的模型流水線來減少每次前向傳播(forward pass)期間的計算量。對於基於 GPT 的文本生成任務,這涉及通過僅專注於每次傳播中最後一個 token 的新注意力(attention)來減少注意力矩陣計算的維度。
基於 Rust 的分詞(Tokenization)
由於分詞通常是推理效率的瓶頸,Hugging Face 通過 🤗 Tokenizers 函式庫採用了模型分詞器的 Rust 實現。結合智能緩存,這種方法在整體延遲方面提供了高達 10 倍的加速。
硬體特定編譯與低層級調優
為了超越最初的收益並實現進一步的 10 倍性能提升,Hugging Face 應用了針對特定模型架構和目標硬體(CPU 或 GPU)的低層級優化。
CPU 的靜態圖優化
對於基於 CPU 的推理,團隊採用了靜態圖技術來最大化計算效率。這些技術包括:
- Graph Optimization:移除模型圖中未使用的數據流。
- Layer Fusion:使用特定的 CPU 指令來組合層。
- Quantization:優化操作以降低精度和計算需求。
自定義 ONNX Runtime 實現
雖然可以使用像 ONNX Runtime 這樣的開源工具來配合 Transformers 使用,但 Hugging Face 指出,開箱即用的功能可能會導致次優的結果或顯著的精度損失,特別是在量化(quantization)期間。團隊通過手動調優 Transformers 代碼和 ONNX Runtime 配置,使其與特定模型架構對齊,從而實現了額外的加速。
針對大規模模型架構的擴展性
模型規模的快速增長——從 BERT 的 1.1 億個參數增長到 GPT-3 的 1750 億個參數——使得生產環境部署變得日益具有挑戰性。Hugging Face 利用其作為 Transformers 和 Tokenizers 函式庫維護者的地位,並與包括 Intel、NVIDIA、Qualcomm、Amazon 和 Microsoft 在內的硬體和雲端供應商建立合作夥伴關係,利用最新的硬體優化技術來調優模型與基礎設施的交集。