MLX
MLX 是一个用于 Apple 芯片上机器学习研究的数组框架,由 Apple 机器学习研究团队为您带来。
MLX 的一些主要特性包括:
-
熟悉的 API:MLX 拥有一个与 NumPy 非常相似的 Python API。MLX 还具有功能齐全的 C++、C 和 Swift API,它们与 Python API 非常相似。MLX 还有更高级的包,如
mlx.nn
和mlx.optimizers
,其 API 与 PyTorch 非常相似,以简化构建更复杂的模型。 -
可组合的函数转换:MLX 支持可组合的函数转换,用于自动微分、自动向量化和计算图优化。
-
惰性计算:MLX 中的计算是惰性的。只有在需要时才会实例化数组。
-
动态图构建:MLX 中的计算图是动态构建的。改变函数参数的形状不会触发缓慢的编译,调试简单直观。
-
多设备支持:操作可以在任何支持的设备上运行(目前支持 CPU 和 GPU)。
-
统一内存:MLX 与其他框架的一个显著区别是统一内存模型。MLX 中的数组存在于共享内存中。可以在任何支持的设备类型上执行 MLX 数组的操作,无需传输数据。
MLX 是由机器学习研究人员为机器学习研究人员设计的。该框架旨在对用户友好,同时仍能高效地训练和部署模型。框架本身的设计在概念上也很简单。我们的目标是让研究人员能够轻松扩展和改进 MLX,以快速探索新想法。
MLX 的设计灵感来自于 NumPy、PyTorch、Jax 和 ArrayFire 等框架。
示例
MLX 示例仓库包含各种示例,包括:
- Transformer 语言模型训练。
- 使用 LLaMA 进行大规模文本生成,以及使用 LoRA 进行微调。
- 使用 Stable Diffusion 生成图像。
- 使用 OpenAI 的 Whisper 进行语音识别。
快速入门
请参阅文档中的快速入门指南。
安装
MLX 可在 PyPI 上获得。要安装 Python API,请运行:
使用 pip
:
pip install mlx
使用 conda
:
conda install -c conda-forge mlx
查看文档以获取有关从源代码构建 C++ 和 Python API 的更多信息。
贡献
查看贡献指南以获取有关为 MLX 贡献的更多信息。请参阅文档以获取有关从源代码构建、运行测试的更多信息。
我们感谢所有贡献者。如果您为 MLX 做出贡献并希望得到认可,请在您的拉取请求中将您的姓名添加到列表中。
引用 MLX
MLX 软件套件最初由 Awni Hannun、Jagrit Digani、Angelos Katharopoulos 和 Ronan Collobert 以同等贡献开发。如果您在研究中发现 MLX 有用并希望引用它,请使用以下 BibTex 条目:
@software{mlx2023,
author = {Awni Hannun and Jagrit Digani and Angelos Katharopoulos and Ronan Collobert},
title = {{MLX}: Efficient and flexible machine learning on Apple silicon},
url = {https://github.com/ml-explore},
version = {0.0},
year = {2023},
}