当前位置: 首页 > article >正文

从头造轮子 or 重复造轮子?苹果开源 MLX,为自家芯片专属定制机器学习框架

苹果:现在上车还来得及吗?

北京时间 12 月 6 日,苹果机器学习研究中心 (Apple machine learning research) 在 GitHub 上开源 MLX。

苹果机器学习研究中心研究科学家 Awni Hannun 在个人 Twitter 宣布这一消息

苹果芯片「专属定制版」机器学习框架

MLX 是一个专为苹果芯片设计的机器学习框架,旨在保证用户友好的前提下,支持高效地在苹果芯片上训练及部署模型。

MLX 设计理念简单,参考了 NumPy、PyTorch、Jax 和 ArrayFire 等框架,其关键功能包括:

  • 熟悉的 API:MLX 的 Python API 跟 NumPy 非常类似,同时 MLX 还有一个功能齐全的 C++ API,此外 MLX 还有类似 mlx.nnmlx.optimizer 这些更高阶的包,跟 PyTorch API 很像,可以简化复杂模型的构建。

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

  • 延迟计算 (Lazy computation):MLX 中的计算是延迟执行的,Array 只在需要的时候才会创建。

  • 动态图构建:MLX 中的计算图是动态构建的,更改函数参数的 shapes 不会降低编译速度,调试也更简单直观。

  • 多设备支持:Operations 可以在任意支持的设备上运行(目前支持 CPU 和 GPU)。

  • 统一内存:统一内存模型 (unified memory model) 是 MLX 和其他框架的显著区别。MLX 中的 Array 保存在共享内存中,无需移动数据就可以在任意支持的设备上执行操作。

根据官方 GitHub Repo 介绍,MLX 已更新多个热门教程,包含:

  • Transformer 语言模型训练

  • 用 LLaMA 生成大规模文本,并用 LoRA 进行 finetuning

  • 用 Stable Diffusion 生成图像

  • 用 OpenAI Whisper 进行语音识别

详情可访问:
https://github.com/ml-explore/mlx/tree/main/examples

从头造轮子 or 重复造轮子?

针对苹果此次发布的 MLX,呈现了两种截然不同的声音。

✅ 正方代表:

在这里插入图片描述

MLX 作为一个针对苹果芯片优化的 PyTorch-style 神经网络架构,可能是苹果在 AI 开源领域,迄今为止最重要的举措。

在这里插入图片描述

2018 年图灵奖得主、Meta 首席 AI 科学家 Yann LeCun 也直呼干得漂亮

在这里插入图片描述

盼着能给英伟达点儿压力,降价提效、推出更好的消费级 GPU

在这里插入图片描述

苹果对 AI 开源的承诺值得赞扬,MLX 称得上是在苹果芯片上进行深度学习的一场变革。

在这里插入图片描述

Cool!啥时候才能有可以在本地运行的类似 GPT-4 这样的高质量模型啊!MLX 带来了巨大的想象力。

❌ 反方代表:

在这里插入图片描述

他们本可以跟 @PyTorchTeam 合作,发布针对苹果芯片优化的 PyTorch 后端!!

现在开发者不得不打两份工了,既要支持这个,又要构建一个 wrapper 同时支持 PyTorch 和 MLX!

在这里插入图片描述

这东西怎么用于部署啊?除非它能跟英伟达、AMD 等支持的框架兼容,不然 MLX 对机器学习生态就是一种伤害(没有 MacBook 就不能进行机器学习)

在这里插入图片描述

苹果,又㕛叒叕重复造轮子

在这里插入图片描述

一图胜千言 图片

GitHub Issue:晚点吵先把 Bug 修了

Talk is cheap. Show me the code.

在尝试从 MacBook 终端安装运行 MLX 的过程中,我们发现官方提供的安装代码出现报错,MLX GitHub Repo 中也有多位工程师遇到类似问题。

在这里插入图片描述

截止发稿,已有 10 位工程师在该 Issue 下反馈了安装报错问题

无论 MLX 能否一举成为开发者在苹果设备上进行模型训练及部署的实用框架,咱就是说能不能先把 Bug 修了啊?!

在线等,挺急的。


http://www.kler.cn/a/160805.html

相关文章:

  • Linux手动安装nginx
  • Docker网络和overlay的基础讲解
  • 计算机网络分析题
  • Python酷库之旅-第三方库Pandas(206)
  • 华为网络设备这些“危险命令”,切记不能瞎操作!
  • 软件测试学习记录 Day1
  • 【Java】实现顺序表基本的操作(数据结构)
  • Pytorch CIFAR10图像分类 ShuffleNetv2篇
  • Java数据结构之《构造哈夫曼树》(难度系数85)
  • Java多线程技术二:线程间通信——InheritableThreadLocal的使用
  • BGP/Border Gateway Protocol
  • MySQL系列(一):索引篇
  • Java聊天
  • 浅聊代理(应用部署)
  • 【JavaEE】生产者消费者模式
  • YAML文件入门
  • 计算机网络体系的形成
  • 【问题思考】泰勒公式证明题如何选展开点?【对称美】
  • idea新建spring boot starter
  • 近期复习三
  • 【7】PyQt布局layout
  • 低多边形建筑3D模型纹理贴图
  • 安装和初始化 VyOS 虚拟机
  • VUE2+THREE.JS 模型上方显示信息框/标签(CSS3DSprite精灵模型)
  • c++遍历算法的transform算法
  • Python-上下文管理器