Hugging Face Kernel Hub 發佈

Hugging Face 已推出 Kernel Hub,一個集中式倉庫,允許機器學習從業者直接從 Hugging Face Hub 載入預編譯、最佳化的計算核心。這消除了手動管理依賴、複雜的建置旗標以及耗時的本地低階程式碼編譯需求。

Kernel Hub 概念

Kernel Hub 是一個高效能程式碼片段(核心)的倉庫,旨在加速特定的 GPU 操作。它的運作方式類似於 Model Hub,但專注於低階計算核心,而非模型權重。

支援的核心類型

  • 注意力機制:例如 FlashAttention,可節省記憶體並提升速度。
  • 量化核心:針對 INT8 或 INT4 等低精度資料類型的最佳化核心。
  • 混合專家 (Mixture of Experts, MoE):為 MoE 層所需的複雜路由與計算模式設計的專用核心。
  • 激活與正規化:如 LayerNorm 與 RMSNorm 等激活函數與正規化層的最佳化實作。

主要優勢

  • 即時存取:使用者可載入針對 NVIDIA 與 AMD GPU 最佳化的核心,無需本地編譯。
  • 簡化部署kernels 套件會自動偵測使用者的 Python、PyTorch 與 CUDA 版本,以下載相符的預編譯二進位檔。
  • 降低阻礙:例如,手動編譯 FlashAttention 可能需要約 96 GB 記憶體,且耗時 10 分鐘至數小時;Kernel Hub 可將此過程縮減為一次函式呼叫。
  • 社群共享:開發者可在 Hub 上分享自行最佳化的核心,供他人重複使用。

技術實作與使用方式

kernels 套件提供與 Hub 互動的主要介面。核心函式為 get_kernel(),負責取得、快取並載入二進位檔。

基本整合

要載入最佳化的激活核心,可使用以下模式:

from kernels import get_kernel
activation = get_kernel("kernels-community/activation")
# Run the kernel
activation.gelu_fast(y, x)

透過裝飾器整合模型

為了更順暢地整合至 PyTorch 模型,套件支援如 @use_kernel_forward_from_hub 的裝飾器。這可讓開發者自動將標準的 PyTorch forward 方法替換為最佳化的核心版本。

效能基準測試:RMSNorm 案例研究

Hugging Face 提供了一項基準測試,將基礎的 PyTorch RMSNorm 實作與來自 kernels-community/triton-layer-norm 倉庫的基於 Triton 的 RMSNorm 核心進行比較。

基準結果

在使用 float16 精度的 L4 GPU 上,隨著批次大小增加,最佳化核心顯示出顯著的加速效果:

批次大小 基線時間 (ms) 核心時間 (ms) 加速比
256 0.2122 0.2911 0.72x
1024 0.8946 0.6864 1.30x
4096 0.44318 2.2467 1.97x
16384 18.6992 9.8805 1.89x
65536 73.588 39.593 1.86x

:效能提升在相容硬體(例如 NVIDIA Ampere 或 Hopper GPU)且為記憶體受限工作負載以及低精度類型時最為顯著。

真實世界應用

kernels 套件已整合至多個 Hugging Face 主要專案:

  • 文字生成推論 (Text Generation Inference, TGI):使用此套件載入最佳化的核心,以提升文字生成任務的效率。
  • Transformers:已整合,使得可直接使用最佳化層,無需修改底層模型程式碼。

快速開始

要開始使用 Kernel Hub,使用者可透過 pip install kernels torch numpy 安裝必要的相依套件。可用的核心可在 Hugging Face Hub 上的 kernels 標籤或 kernels-community 組織中找到。

Sources