【AICon】硅谷视野+中国实践,汇聚全球顶尖技术的 AI 科技盛会 >>> 了解详情
写点什么

苹果公司开源机器学习框架 MLX,针对 Silicon 芯片进行了优化

作者:Sergio De Simone

  • 2024-01-10
    北京
  • 本文字数:1139 字

    阅读完需:约 4 分钟

大小:571.58K时长:03:15
苹果公司开源机器学习框架MLX,针对Silicon芯片进行了优化

苹果公司的机器学习框架MLX结合了开发者熟悉的 API、可组合的函数转换和惰性计算,部分灵感源于 NumPy 和 PyTorch,并针对苹果的 Silicon 进行了优化。该框架使用 Python 和 C++实现,旨在为在苹果 Silicon 上训练和部署机器学习模型提供用户友好且高效的解决方案。


根据苹果公司的说法,MLX 是由机器学习研究人员为机器学习研究人员设计的,并基于 MIT 发布许可,可以很容易地被扩展和改进。它支持转换语言模型训练、使用 Mistral 进行大规模文本生成、使用 Stable Diffusion 进行图像生成以及使用 Whisper 进行语音识别。


MLX 提供了受 NumPy 启发的底层 Python API 和一个完整的与之密切对应的 C++ API。此外,它还提供了一个高级 API,可用于根据 PyTorch API 创建更复杂的模型。


该框架支持自动微分、自动向量化和计算图优化,可组合的函数使得构建复杂数组转换变得更加容易。MLX 还支持惰性计算,这意味着它可以只在必要时才计算数组,以提高计算效率。同样,计算图是动态构建的,因此修改函数参数并不会触发缓慢的编译过程。


MLX 的一个独有的特性是使用了苹果 Silicon 的统一内存,这让它有别于其他的 ML 框架。这意味着数组位于共享内存中,可以在 CPU 或 GPU 上执行数组操作,无需在内存之间传输数据。例如,在创建一个数组时,你不需要指定位置,因为它位于统一内存中,而在执行操作时可以选择在 CPU 或 GPU 上执行转换:

a = mx.random.normal((100,))
b = mx.random.normal((100,))
mx.add(a, b, stream=mx.cpu)
mx.add(a, b, stream=mx.gpu)
复制代码


MLX 可在任意的苹果 Silicon CPU 上运行,包括 M1,并可以利用集成的 GPU,因此研究人员可以选择最适合其需求的硬件。


MLX 的代码库中包含了一些针对不同模型的示例,包括 BERT、Llama、Mistral、Stable Diffusion 等。每个示例都在requirements.txt文件中列出所需的依赖项,并提供了现成的 CLI 工具。例如,要使用 Stable Diffusion 生成图像,首先安装所有必需的依赖项,然后运行txt2image.py命令:

pip install -r requirements.txt

python txt2image.py "A photo of an astronaut riding a horse on Mars." --n_images 4 --n_rows 2


苹果尚未公开发布基准测试,因此我们目前不知道它与PyTorch/MPS或 Georgi Gerganov 的Llama.cpp相比表现如何。


不过,Stable Diffusion 示例中包含了使用 PyTorch 和 MLX 运行 UNet 的性能比较。MLX 在批次大小为 16 时的吞吐量比 PyTorch 高约 40%,最佳批次大小大 15%左右。


然而,PyTorch 在较小的批次大小时表现更好,批次大小为 1 时吞吐量高约 50%,批次大小为 4 时高约 10%。根据苹果公司的说法,PyTorch 在这些情况下的优势要归因于在模型还没有被加载到内存中且 PyTorch 的 MPS 图内核未被缓存时的编译速度。


如果你有兴趣体验 MLX,请参阅其快速入门指南完整文档


原文链接

https://www.infoq.com/news/2023/12/apple-silicon-machine-learning/

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2024-01-10 08:007830

评论

发布
暂无评论

多线程详解第3讲:线程状态

Java 程序员 后端

阿里技术官限产的MySQL高级笔记及面试宝典,简直开挂

Java MySQL 数据库 程序员

奉劝那些想把编程学好的学弟学妹们!呕心沥血,袒露心声,掏心掏肺

Java 程序员 后端

040022-week3-design

InfoQ_70156470130f

大战618,决胜双十一 高并发秒杀系统解密—后端java程序员力荐

Java 程序员 后端

大神万字总结:InnoDB 锁类型及其详细分析

Java 程序员 后端

多层次存储器

Java 程序员 后端

多线程详解第4讲:线程同步(重点)

Java 程序员 后端

大专生出身,做Java程序员真的没有春天吗?冲刺拼多多终拿下Offer

Java 程序员 后端

天哪!手动编写mybatis雏形竟然长这样

Java 程序员 后端

在线文本中英文数字清除工具

入门小站

工具

好好编程-物流项目04【Mybatis逆向工程】

Java 程序员 后端

大年初三,我带着Spring事务管理详解来给大家拜年啦-!

Java 程序员 后端

太悲伤了,女朋友面试惨遭面试官吊打,半夜偷偷摸摸躲在被子里抹眼泪刷题

Java 程序员 后端

头条二面:你确定ThreadLocal真的会造成内存泄露?

Java 程序员 后端

头条五面惨败,被虐到怀疑人生!面试官三十六连击,你能答出多少?

Java 程序员 后端

Go语言,垃圾回收、三色标记原理,终于能跟面试官扯皮了!

微客鸟窝

垃圾回收 Go 语言 11月日更

女生适合学编程吗?

Java 程序员 后端

备战明年金三银四,阿里P8大佬总结的这份Java面试文档,你可一定要好好看看

Java 程序员 后端

天天curd,怎么才能成长,跳离CRUD的苦海?

Java 程序员 后端

太强了!这是我见过最通俗易懂的一篇Spring知识点总结

Java 程序员 后端

奉劝各位学弟学妹们,该打造你的技术影响力了!

Java 程序员 后端

复习一周,字节跳动三场技术面+HR面,不小心拿了offer

Java 程序员 后端

大厂炸锅了!这份全程无尿点的Java彩版面试开挂攻略在GitHub火了

Java 程序员 后端

太强了,阿里P8面试官用1个多月,总结1000道题的Java面试文档!

Java 程序员 后端

云原生 DevOps,模型化应用交付能力很重要!

阿里巴巴云原生

DevOps 云原生 模型 应用交付

JavaScript 中对象处理之Object.freeze 与 Object.seal

devpoint

JavaScript Object 11月日更

好好编程-物流项目01【搭建maven工程】

Java 程序员 后端

大厂面试必备:JVM-垃圾回收机制—垃圾回收中的概念

Java 程序员 后端

linux检测系统是否被入侵(上)

入门小站

Linux

太刺激了,面试官让我手写跳表,而我用两种实现方式吊打了TA

Java 程序员 后端

苹果公司开源机器学习框架MLX,针对Silicon芯片进行了优化_芯片_InfoQ精选文章