Basalt 项目介绍
项目概述
Basalt 是一个全新的从零开发的机器学习框架,基于纯 Mojo 编写。Mojo 是一种面向未来的人工智能开发语言,其底层构建在 MLIR 技术之上,而非传统的 GCC 和 LLVM 方法。Mojo 的语法类似于 Python,但在性能上接近于 Rust 或 C++。它支持参数化函数和编译时参数,使得计算图可以被静态编译,这为性能优化提供了更多可能。
项目特色
虽然 Basalt 仍处于初期开发阶段,但其性能已能与 PyTorch 等成熟框架相媲美。项目中展示的基准测试结果显示,它的速度足够引以为傲,并且团队正在不断进行改进和优化。
为什么选择Basalt
- 现代语言基础:利用 Mojo 的强大功能和未来潜力,这为进行机器学习提供了更高效的开发和执行环境。
- 高性能表现:尽管处于初期阶段,Basalt 在性能测试中表现不俗,具有与主流框架相竞争的潜力。
- 社区支持和持续改进:Basalt 由社区成员共同开发,鼓励用户参与建议和优化,从而不断提高框架的质量和功能。
快速上手
Basalt 提供了一些基准测试代码,可以用来快速体验其性能:
mojo -I . examples/housing.mojo
mojo -I . examples/sin_estimate.mojo
mojo -I . examples/mnist.mojo
如果希望与 PyTorch 实现进行比较,则可以执行以下命令:
python examples/housing.py
python examples/sin_estimate.py
python examples/mnist.py
在此之前,请确保在 Python 环境中安装了 python-requirements.txt
中列出的依赖。
项目规划
v0.1.0
完成了矩阵乘法和卷积核的改进、切换到自定义张量及形状实现等。
v0.2.0 (进行中)
未来的计划包括增加新的操作符、更好的层支持和更多激活函数、图子模块及图连接等。
长期目标
Basalt 的长期目标包括更好的并行化处理、GPU 支持、重新构建数据加载器、自动调优功能和与 ONNX / Max 的兼容性。
参与贡献
Basalt 项目依赖于社区的贡献与支持。如果您有兴趣进行小的修复或改进,欢迎随时加入。如果计划进行大型贡献,建议通过 Discord 与我们联系,以便更顺畅的沟通。对于发现的 Bug 或新功能的建议,请利用我们的问题跟踪系统。创建新的问题之前,请先确认该问题是否已存在。
提交拉取请求
- Fork 项目
- 创建您的功能分支
- 提交变更
- 推送到分支
- 开启一个拉取请求
在提交请求前,请确保这些变更不会破坏任何单元测试,并为新的大功能增加测试。
许可
Basalt 在 Apache 2.0 许可下发布(包含 LLVM 例外)。详细信息请参阅许可证文件。
鸣谢
Basalt 基于 Mojo 构建,由 Modular 创建和支持。