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 等最佳化器的輔助函式庫。
相關
- 專案
- 專案
- 專案
- 專案
- 專案