DataLearner logoDataLearnerAI
Latest AI Insights
Model Evaluations
Model Directory
Model Comparison
Resource Center
Tool Directory

加载中...

DataLearner logoDataLearner AI

A knowledge platform focused on LLM benchmarking, datasets, and practical instruction with continuously updated capability maps.

产品

  • Leaderboards
  • 模型对比
  • Datasets

资源

  • Tutorials
  • Editorial
  • Tool directory

关于

  • 关于我们
  • 隐私政策
  • 数据收集方法
  • 联系我们

© 2026 DataLearner AI. DataLearner curates industry data and case studies so researchers, enterprises, and developers can rely on trustworthy intelligence.

隐私政策服务条款
  1. Home/
  2. Blog List/
  3. Blog Detail

重磅!苹果官方发布大模型框架:一个可以充分利用苹果统一内存的新的大模型框架MLX,你的MacBook可以一键运行LLaMA了

2023/12/06 22:05:25
2,663 views
MLX统一内存架构苹果苹果大模型

苹果刚刚发布了一个全新的机器学习矿机MLX,这是一个类似NumPy数组的框架,目的是可以在苹果的芯片上更加高效地运行各种机器学习模型,当然最主要的目的是大模型。

  • MLX框架简介
  • 目前MLX支持的模型和使用方式
  • 预训练模型的使用
  • MLX性能实测
  • MLX的相关资源和链接

MLX框架简介

根据官方的介绍,MLX的设计受到PyTorch、Jax和ArrayFile的启发,目的是设计一个对用户极其友好,但同时在训练和部署上也非常高效的框架。所以,它的接口你会非常熟悉,因为它的Python接口与NumPy很相似,而它的神经网络模型的接口和PyTorch非常类似。所以如果此前你使用Python编写相关模型代码,几乎是没有障碍的使用和切换。

MLX的关键特性如下:

熟悉的API:MLX 有一个 Python API,紧密遵循 NumPy。MLX 还有一个功能齐全的 C++ API,与 Python API 非常相似。MLX 拥有像mlx.nn和 mlx.optimizers这样的高级包,其 API 紧密遵循 PyTorch,以简化构建更复杂的模型。

可组合的函数转换:MLX 具有可组合的函数转换,用于自动微分、自动向量化和计算图优化。

延迟计算:MLX 中的计算是延迟的。数组仅在需要时才实体化。

动态图构建:MLX 中的计算图是动态构建的。更改函数参数的形状不会触发缓慢的编译,调试简单直观。

多设备:操作可以在任何支持的设备上运行(目前是 CPU 和 GPU)。

统一内存:MLX 与其他框架的一个显著区别是统一内存模型。MLX 中的数组存在于共享内存中。对 MLX 数组的操作可以在任何支持的设备类型上执行,无需移动数据。

从上面的描述中可以看到,MLX与其它框架的最大的不同点是可以充分使用苹果的统一内存来计算,而不需要搬运数据。关于统一内存架构相比显存和内存的方式运行大模型参考:https://www.datalearner.com/blog/1051698716733526

目前MLX支持的模型和使用方式

从官方的示例看,苹果的MLX框架完成度很高,它支持transformer架构模型的训练、当前预训练模型如何LLaMA的推理、基于LoRA的高效参数微调、支持载入使用多模态大模型Stable Diffusion和Whisper等。

此外,MLX还有个配套框架教MLX Data,这是一个不依赖特定框架的数据加载库,可以与PyTorch、Jax 或 MLX 一起使用。MLX Data数据加载库的目标是高效但同时也具有灵活性,例如能够每秒加载和处理数千张图片,同时也能在生成的批次上运行任意 Python 转换。这个库的推出很有可能与苹果的统一内存数据的使用有关,有了它应该可以更加高效地在苹果设备上读写数据。

下图是一个Transformer语言模型的MLX代码样例:

MLX-TransformerLM代码实例
MLX-TransformerLM代码实例

可以看到,这个代码风格和PyTorch极其相似。

此外MLX支持的特性很新,例如,它还提供了一个官方的RoPE实现(Rotary Positional Encoding (RoPE) 是一种在自然语言处理和其他序列建模任务中用于编码序列位置信息的技术。它主要用于 Transformer 模型中,用来增强模型对序列中元素位置的理解。RoPE 的核心思想是将位置信息编码到每个元素的表示中,而不是像传统,这是2021年推出的算法),还有MultiHeadAttention的官方实现。

在官方的实例中,还有一个306行的LLaMA1的推理代码,非常简洁,不仅适合学习MLX,也适合理解LLaMA模型。

预训练模型的使用

从官方的代码示例看,MLX代码运行LLaMA的预训练模型需要先做一次模型权重的转换操作:

python convert.py <path_to_torch_weights> mlx_llama_weights.npz

这里的convert.py脚本是官方提供的torch转mlx的代码,其实非常简单,核心方法也就20行左右。但是,每一个预训练结果可能都要定制这样的代码才能运行,这对于大多数人来说可能门槛还是略高官方如果不能提供通用一点的方法那估计是一个障碍

目前官方的提供的样例中包含了LLaMA、Mistral、Stable Diffusion、Whisper四个模型的推理代码。其中LLaMA提供了基于LoRA微调的代码。

MLX性能实测

尽管发布才几个小时,但已经有人测试,M2 Pro Mac电脑使用MLX运行Stable Diffusion 2.1模型50个steps要55秒~

另外,还有网友测试M2 Ultra 64 GB电脑运行Mistral模型每秒25个tokens!

MLX的相关资源和链接

MLX开源协议是MIT,意味着这是一个完全自由商用协议的框架,目前官方开源了MLX框架和MLX Data框架,并在官方GitHub上提供了以MLX的示例,预计未来会加入更多模型的实例。

MLX官方GitHub地址:https://github.com/ml-explore/mlx MLX Data官方GitHub地址:https://github.com/ml-explore/mlx-data MLX Examples的地址:https://github.com/ml-explore/mlx-examples

下图展示了MLX的Stars数量,可以看到几个小时突破了2.5K个:

Star History Chart
Star History Chart

DataLearner WeChat

Follow DataLearner WeChat for the latest AI updates

DataLearner 官方微信二维码
Back to Blog List

Related Blogs

  • 苹果最新的M3系列芯片对于大模型的使用来说未来价值如何?结果可能不太好!M3芯片与A100算力对比!
  • PyTorch终于支持苹果的M1芯片了!

Hot Blogs

  • 1Dirichlet Distribution(狄利克雷分布)与Dirichlet Process(狄利克雷过程)
  • 2回归模型中的交互项简介(Interactions in Regression)
  • 3贝塔分布(Beta Distribution)简介及其应用
  • 4矩母函数简介(Moment-generating function)
  • 5普通最小二乘法(Ordinary Least Squares,OLS)的详细推导过程
  • 6使用R语言进行K-means聚类并分析结果
  • 7深度学习技巧之Early Stopping(早停法)
  • 8手把手教你本地部署清华大学的ChatGLM-6B模型——Windows+6GB显卡本地部署