MLX:苹果发布新的机器学习框架


苹果刚刚进入AI开源竞技场,悄悄发布了他们的新DL框架MLX!
它在Apple Silicon上原生运行代码,只需一个pip安装,没有其他依赖项

MLX 是 Apple 芯片上用于机器学习的阵列框架,由 Apple 机器学习研究团队为您提供。
MLX 的一些主要功能包括:

  • 熟悉的 API:MLX 有一个紧随 NumPy 的 Python API。MLX 还拥有功能齐全的 C++ API,它与 Python API 非常相似。MLX 具有更高级的软件包,例如mlx.nn和 以及mlx.optimizers紧密遵循 PyTorch 的 API,以简化构建更复杂的模型。
  • 可组合函数转换:MLX 具有用于自动微分、自动向量化和计算图优化的可组合函数转换。
  • 惰性计算:MLX 中的计算是惰性计算。数组仅在需要时才会具体化。
  • 动态图构建:MLX 中的计算图是动态构建的。更改函数参数的形状不会触发缓慢的编译,并且调试简单直观。
  • 多设备:操作可以在任何支持的设备上运行(当前为 CPU 和 GPU)。
  • 统一内存:与 MLX 和其他框架的显着区别是统一内存模型。MLX 中的数组位于共享内存中。可以在任何支持的设备类型上执行 MLX 阵列上的操作,而无需移动数据。

MLX 是由机器学习研究人员为机器学习研究人员设计的。该框架旨在用户友好,但仍然可以有效地训练和部署模型。框架本身的设计在概念上也很简单。我们打算让研究人员能够轻松扩展和改进 MLX,以实现快速探索新想法的目标。
MLX 的设计灵感来自 NumPy、 PyTorchJax和 ArrayFire等框架。

网友评论:
它似乎紧跟PyTorch API,并提供了许多开箱即用的有用原语。例如,实现一个只用于解码器的Transformer就是这么简单!

值得注意的是,许多最新的发现都作为库中的原语提供。例如,如果您必须在PyTorch中实现旋转位置编码,则需要自行推出或依赖lucidrains。

对于你的优化,它支持高阶梯度,高效的jvp和像JAX一样的vjp。

如果您不是 Python 爱好者,也有 C++ 头文件和库,但还没有文档。

mlx-examples 存储库似乎拥有所有值得关注的模型和强制性 mnist 模型的示例实现,所有这些都在 MLX 中本地实现。这些实现看起来相当简单。

三个关键概念:示例、缓冲区、流

  • Sample ->以 dicts 编码的单个数据实例
  • Buffer ->可索引的示例容器
  • Stream->可迭代(但不可索引)的示例序列 

MLX-data 库提供了对所有三种类型采取行动的原语。

虽然还为时尚早,但我们应该消除苹果公司在人工智能方面无所作为的说法。与往常一样,苹果正在以苹果的方式做事--谨慎但符合他们的利益。

一旦该框架流行起来,苹果公司将 Apple Silicon 作为数字加速器的替代品,在苹果设备之外单独销售也并非不可想象。在苹果设备中使用 Apple Silicon 可以说是自饮香槟。

这次发布也预示着未来的苹果操作系统将更加以人工智能为中心。因此,如果你正在构建在 iOS/iPadOS/MacOS 基础上添加简单功能的产品,你可要小心了。