ekzhang/jax-js

JAX in JavaScript – ML library for the web, running on WebGPU & Wasm

解決的問題

jax-js 是一個專為瀏覽器設計的機器學習框架,旨在將高效率的數值計算與 JAX 風格的操作帶入網頁端。它讓開發者無需後端伺服器,即可利用 CPU 與 GPU 加速,在客戶端直接執行複雜的數學應用、神經網路與模擬程式。

工作原理

該框架將陣列運算轉換為編譯器表示,然後為 WebAssembly (Wasm) 與 WebGPU 合成最佳化的內核。支援多種裝置後端:

  • WebGPU:高效率與神經網路處理的首選推薦。
  • Wasm:多執行緒 CPU 後端。
  • WebGL:舊版瀏覽器的備用方案。
  • CPU:用於除錯的解釋型 JS 後端。

為優化效能,框架提供 jit() 函數實現內核融合,將多個運算合併為單一 GPU 呼叫,以減少記憶體頻寬瓶頸。同時實作手動參考計數記憶體模型(.ref.dispose()),用於在 JavaScript 的垃圾回收環境中管理大型陣列。

適用對象

適合希望在瀏覽器中建構可移植、高效率 ML 應用的開發者,例如互動式視覺化、語音助理或瀏覽器內 LLM 推論,同時保持與 NumPy 與 JAX 的 API 相容性。

主要亮點

  • JAX 風格轉換:支援 grad() 自動微分、vmap() 自動向量化、jit() 內核融合。
  • 高效率:CPU 上的矩陣乘法速度接近 OpenBLAS,高階 Apple Silicon 上透過 WebGPU 實現超過 7000 GFLOP/s 的效能。
  • 廣泛相容:支援 Chrome、Firefox、Safari 以及 Node.js/Deno,相容 Float16、Float32 與 Float64。
  • 零依賴:完全從零構建,無外部依賴。
  • 生態系統:包含用於載入 Safetensors、匯入 ONNX 模型,以及實作 Adam 與 SGD 等最佳化器的輔助函式庫。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案