描述
Shumai 是一个专为 JavaScript 和 TypeScript 设计的可微分张量库,它利用 Bun 的速度和 Flashlight 的强大功能。它旨在使数据操作、模型训练和高级推理逻辑在 JavaScript 生态系统中的开发人员更加易于访问和高效。通过利用原生类型数组和 Bun 的即时编译 (JIT) 编译器,Shumai 为从数据集创建到训练小型机器学习模型的任务提供了高性能的解决方案。
该库提供了核心张量操作、用于梯度计算的自动微分,以及与 JavaScript 原生数组的无缝转换。这使得开发人员可以直接在 JavaScript 中处理数据,将其准备成 GPU 兼容的数组,然后在不离开环境的情况下训练模型。Shumai 的架构旨在最大限度地减少开销,使 JavaScript 在训练和推理过程中(尤其是在小型模型上)能够高效运行。
主要功能包括标准的数组实用程序、张量创建、数学运算和梯度跟踪。用户可以为需要梯度计算的张量启用梯度,执行操作,然后访问计算出的梯度。该库还提供了内存管理调优功能,允许用户调整垃圾回收参数,以根据硬件能力优化性能。此外,Shumai 还包含一个统计信息收集系统,可以将操作性能记录到控制台或通过 HTTP,并提供作用域分析和堆栈跟踪收集选项。
Shumai 对那些已经在 JavaScript 生态系统中工作并希望集成机器学习功能而无需面对其他语言或框架陡峭学习曲线的软件工程师和研究人员尤其有益。其性能基准显示,在各种操作中,尤其是在 Apple M1 Pro 和 Nvidia GPU 上,它比 TensorFlow.js 等库具有显著优势。该项目是实验性的,欢迎贡献以改进其功能和稳定性。
Shumai的核心功能
为 JavaScript 和 TypeScript 构建的快速、可微分的张量库
基于 Bun 和 Flashlight 构建,实现高性能
支持自动微分以进行梯度计算
张量与 JavaScript 原生数组之间的无缝转换
针对训练小型模型和高级推理逻辑进行了优化
利用原生类型数组和 JIT 编译
内存使用调优以优化性能
内置统计信息收集,用于操作分析
作用域统计信息收集,用于隔离分析
实验性软件,积极开发中
通过 ArrayFire 后端支持 GPU 计算(Linux 上的 CUDA,macOS 上的 CPU)
可扩展的统计信息日志记录,提供控制台和 HTTP 选项
Shumai入门
安装 Bun 和 ArrayFire:遵循 macOS 和 Linux 的平台特定说明。
安装 Shumai:运行 `bun install @shumai/shumai`。
导入 Shumai:在您的 TypeScript/JavaScript 代码中使用 `import * as sm from '@shumai/shumai'`。
创建张量:使用 `sm.randn()` 或 `sm.tensor()` 等函数创建张量。
执行操作:应用数学运算,如 `matmul()`、`mul()` 和 `sum()`。
启用梯度:为需要梯度跟踪的张量设置 `tensor.requires_grad = true`。
计算梯度:在损失张量上调用 `.backward()` 来填充梯度。
调优内存:使用 `util.memoryOptions()` 调整内存选项以优化性能。
Shumai的使用案例
- 数据集创建
- 模型训练
- 推理逻辑
- 数据预处理
- 研究原型开发
- 应用程序开发








