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

本文主要是介绍从头造轮子 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 修了啊?!

在线等,挺急的。

这篇关于从头造轮子 or 重复造轮子?苹果开源 MLX,为自家芯片专属定制机器学习框架的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/466034

相关文章

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

修改若依框架Token的过期时间问题

《修改若依框架Token的过期时间问题》本文介绍了如何修改若依框架中Token的过期时间,通过修改`application.yml`文件中的配置来实现,默认单位为分钟,希望此经验对大家有所帮助,也欢迎... 目录修改若依框架Token的过期时间修改Token的过期时间关闭Token的过期时js间总结修改若依

SpringBoot定制JSON响应数据的实现

《SpringBoot定制JSON响应数据的实现》本文主要介绍了SpringBoot定制JSON响应数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录前言一、如何使用@jsonView这个注解?二、应用场景三、实战案例注解方式编程方式总结 前言

Redis 多规则限流和防重复提交方案实现小结

《Redis多规则限流和防重复提交方案实现小结》本文主要介绍了Redis多规则限流和防重复提交方案实现小结,包括使用String结构和Zset结构来记录用户IP的访问次数,具有一定的参考价值,感兴趣... 目录一:使用 String 结构记录固定时间段内某用户 IP 访问某接口的次数二:使用 Zset 进行

Spring Boot 整合 ShedLock 处理定时任务重复执行的问题小结

《SpringBoot整合ShedLock处理定时任务重复执行的问题小结》ShedLock是解决分布式系统中定时任务重复执行问题的Java库,通过在数据库中加锁,确保只有一个节点在指定时间执行... 目录前言什么是 ShedLock?ShedLock 的工作原理:定时任务重复执行China编程的问题使用 Shed

Oracle数据库使用 listagg去重删除重复数据的方法汇总

《Oracle数据库使用listagg去重删除重复数据的方法汇总》文章介绍了在Oracle数据库中使用LISTAGG和XMLAGG函数进行字符串聚合并去重的方法,包括去重聚合、使用XML解析和CLO... 目录案例表第一种:使用wm_concat() + distinct去重聚合第二种:使用listagg,

MySQL中删除重复数据SQL的三种写法

《MySQL中删除重复数据SQL的三种写法》:本文主要介绍MySQL中删除重复数据SQL的三种写法,文中通过代码示例讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下... 目录方法一:使用 left join + 子查询删除重复数据(推荐)方法二:创建临时表(需分多步执行,逻辑清晰,但会

MyBatis框架实现一个简单的数据查询操作

《MyBatis框架实现一个简单的数据查询操作》本文介绍了MyBatis框架下进行数据查询操作的详细步骤,括创建实体类、编写SQL标签、配置Mapper、开启驼峰命名映射以及执行SQL语句等,感兴趣的... 基于在前面几章我们已经学习了对MyBATis进行环境配置,并利用SqlSessionFactory核

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用