CTranslate2: 針對 Transformer 模型的高性能推理引擎,具備先進的量化與硬體優化功能
CTranslate2: 針對 Transformer 模型的高性能推理引擎,具備先進的量化與硬體優化功能
它解決了什麼問題
CTranslate2 旨在解決 Transformer 模型推理速度慢且耗費記憶體的問題。它提供了一個自定義的運行時(runtime),可在 CPU 和 GPU 上加速執行並減少記憶體使用量,使其比通用型深度學習框架更有效率。
運作原理
該函式庫實現了多種性能優化技術,包括權重量化(支援 FP16、BF16、INT16、INT8 和 INT4/AWQ)、層融合(layer fusion)、移除填充(padding removal)、批次重排序(batch reordering)以及原地操作(in-place operations)。它支援廣泛的模型類型,包括編碼器-解碼器(encoder-decoder,例如 T5、Whisper)、僅解碼器(decoder-only,例如 Llama、Mistral、Gemma)以及僅編碼器(encoder-only,例如 BERT)模型。模型必須使用為 PyTorch (Transformers)、Fairseq 和 OpenNMT 等框架提供的轉換器進行優化格式轉換。
適用對象
它適用於需要在各種硬體架構(x86-64、ARM64)和 GPU 上部署具有高吞吐量和低記憶體佔用之 Transformer 模型的開發人員和生產導向型用戶。
重點功能
- 廣泛的模型支援:支援包括 Llama、Mistral 和 BERT 在內的龐大 Transformer 架構陣列。
- 硬體優化:針對多種 CPU 後端(Intel MKL、oneDNN、OpenBLAS、Ruy、Apple Accelerate)進行了優化,並具備自動 CPU 偵測功能。
- 量化:在極小精度損失的情況下,減少磁碟上的模型大小和記憶體使用量。
- 並行執行:支援在多個 GPU 或 CPU 核心上進行並行與非同步執行,包括針對超大型模型的張量並行(tensor parallelism)。
- 簡單的整合:提供簡單的 Python 和 C++ API,且依賴項極少。
Sources
- undefinedOpenNMT/CTranslate2