Hugging Face @huggingface/kernels 發布
Hugging Face 發布了 @huggingface/kernels,這是一個 JavaScript 函式庫,也是包含 207 個優化 WebGPU 核心的集合。此次發布旨在透過提供一層高效能 GPU 操作的基礎層來加速本地 AI 推論,這些操作可以直接從 Hugging Face Hub 中探索、進行版本控制與測試。
優化 WebGPU 核心集合
Hugging Face 已將 207 個核心作為獨立儲存庫發布在 Hub 上的 webgpu-kernels 組織中。這些核心涵蓋了廣泛的機器學習架構和工作負載,並利用 WebGPU API 和 WGSL (WebGPU Shading Language) 在現代瀏覽器中實現可攜式、高效能的執行。
每個核心都被視為一個有版本控制的軟體成品,而不是簡單的著色器。每個儲存庫包含:
manifest.json:操作契約的唯一真實來源,定義了輸入、輸出、屬性、型別限制和形狀推導規則。metadata.json:記錄核心識別碼、摘要和出處。test.json:包含用於驗證實作行為的正確性測試案例。bench.json:包含用於評估的基準測試與調校案例。*.wgsl.jinja:參數化的 WGSL 實作,用於為特定裝置和請求生成著色器。
@huggingface/kernels 載入器
@huggingface/kernels npm 套件提供了 Hub 儲存庫與 JavaScript 應用程式之間的橋樑。它允許開發者透過其 Hub 儲存庫 ID 和契約版本載入核心,然後使用型別化的輸入資料和張量形狀來執行它。
例如,載入器可以自動從 manifest 契約中推導出輸出形狀和邏輯資料型別。它還支援多種核心變體(例如,向量化與純量處理),以確保能根據當前的呼叫和裝置選擇最有效率的實作,而無需更改面向應用程式的 API。
效能基準測試
在 Apple M4 GPU 上與 ORT WebGPU(使用 ONNX Runtime Web 1.30.0-dev.20260826-b1f76d586a)的正面交鋒比較中,Hugging Face 核心展現了顯著的加速效果。在 809 個匹配的測試案例中,這些核心的幾何平均速度快了 2.57 倍,且中位數速度快了 1.90 倍。
特定操作的加速效果包括:
| 操作 | 比較案例數 | 我們的 WebGPU 核心 | ORT WebGPU | 加速倍率 |
|---|---|---|---|---|
| Add | 5 | 0.064 ms | 0.227 ms | 3.52x |
| MatMul | 29 | 0.115 ms | 0.131 ms | 1.14x |
| Softmax | 12 | 0.114 ms | 0.240 ms | 2.11x |
| LayerNormalization | 6 | 0.061 ms | 0.135 ms | 2.22x |
在極端情況下,專用核心提供了巨大的效能提升:一個雙線性 Einsum 案例執行速度快了超過 10,000 倍(0.136 ms 對比 1,396 ms),而逐行 CumSum 快了 301 倍(0.016 ms 對比 4.784 ms)。
Fleet:群眾外包的硬體證據
由於 WebGPU 效能在不同的 GPU、瀏覽器和驅動程式之間存在顯著差異,Hugging Face 推出了 Fleet,這是一個瀏覽器內的基準測試與測試套件。Fleet 允許社群在自己的硬體上執行正確性和效能檢查,並私下貢獻測試證據。這些群眾外包的資料幫助 Hugging Face 團隊識別特定裝置的故障、比較核心變體,並為真實世界的硬體優化選擇規則。
整合與生態系統
這些 WebGPU 核心是更廣泛的 Hub 生態系統的一部分,該生態系統還包含用於 CUDA、ROCm 和 Metal 的核心。透過獨立發布核心,Hugging Face 提供了一個共享的基礎,在這裡可以檢查契約並改進實作,而無需將每個著色器直接嵌入到執行階段中。Hugging Face 也正在與 ONNX Runtime 團隊合作,將這些改進上游貢獻到更廣泛的 ONNX Runtime Web 生態系統中。