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 等优化器的辅助库。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目