使用 Optimum Intel 與 fastRAG 的 CPU 優化嵌入
Hugging Face 與 Intel 展示了一種方法,利用 Optimum Intel 函式庫與 fastRAG 框架,在 Intel Xeon CPU 上顯著加速嵌入模型。透過將模型在訓練後靜態量化至 int8,這些優化相較於基線 bf16 模型,可將延遲降低最高 4.5 倍,吞吐量提升最高 4 倍。
加速 RAG 的嵌入模型
嵌入模型在檢索增強生成 (RAG) 流程中扮演關鍵角色,主要執行三項功能:離線文件索引、即時查詢編碼,以及對檢索到的文件進行重新排序。相較於稀疏檢索(如 BM25),語意檢索能更好地捕捉上下文,但計算需求較高。
優化這些模型在 CPU 後端是必須的,原因包括:
- 文件索引:提升吞吐量,以更快地索引大型集合。
- 查詢編碼:降低延遲,實現即時回應的檢索。
- 重新排序:加速候選集合的處理,以符合時間敏感的應用需求。
透過 Optimum Intel 與 IPEX 的技術優化
Optimum Intel 是一個開源函式庫,旨在加速 Intel 硬體上的 Hugging Face 流程。它利用 Intel 的 Advanced Vector Extensions 512 (AVX-512)、Vector Neural Network Instructions (VNNI) 與 Advanced Matrix Extensions (AMX) 來最佳化深度學習工作負載。
量化工作流程
量化流程聚焦於將精度從 fp32 降至 int8,具體步驟如下:
- 安裝:使用
optimum[neural-compressor]與intel-extension-for-transformers。 - 訓練後靜態量化:此過程使用校準集(例如
qasper資料集的子集)來確定權重與激活的動態範圍,從而在轉換至int8時將準確度損失降至最低。 - 推論:透過
IPEXModel載入量化模型,使用 Intel Extension for PyTorch (IPEX) 進行最佳化的執行時運行。
BGE 模型的效能基準
評估使用 BGE(北京人工智慧學院)模型進行,模型規模分為小型(45M)、基礎(110M)與大型(355M),測試平台為第 4 代 Intel Xeon 8480+ CPU。
準確度保持
將模型量化至 int8 後,與 fp32 模型相比,在 MTEB(Massive Text Embedding Benchmark)任務中的準確度下降極小:
- 重新排序:錯誤率低於 1%。
- 檢索:錯誤率低於 1.55%。
延遲與吞吐量
相較於基線 PyTorch bf16 實作,int8 量化模型展現出顯著提升:
- 延遲:最高提升 4.5 倍。小型與基礎模型的延遲低於 10 毫秒,大型模型則維持在 20 毫秒以下。
- 吞吐量:最高提升 4 倍。所有模型尺寸在文件長度 256 token、批次大小 128 時達到最高吞吐量。
與 fastRAG 的整合
fastRAG 是 Intel Labs 的研究框架,用於最佳化 RAG 流程,且相容於 Haystack。最佳化的嵌入模型透過兩個特定模組整合至 fastRAG:
QuantizedBiEncoderRetriever:用於從稠密索引中進行文件的索引與檢索。QuantizedBiEncoderRanker:用於重新排序檢索到的文件,以提升相關性。
這些模組讓開發者能輕鬆在基於 Haystack 的流程中,將標準嵌入模型替換為 Intel 最佳化版本,從而提升索引與檢索階段的效率。