编译器大佬Chris Lattner全新编程语言「Mojo」:兼容Python核心功能...

共 6983字,需浏览 14分钟

 ·

2023-05-05 06:33

点击关注公众号,Java干货 及时送达b5532cfca88b36282fa21a4360d27d9e.webp

机器之心报道

编辑:蛋酱、陈萍
它可与 Python 无缝衔接,但克服了很多 Python 的缺点。Jeremy Howard 试用后表示:「Mojo 可能是几十年来最大的编程进步。」
对于全球各地开发者来说,Chris Lattner 这个名字绝对不陌生。 3a815eeb189c4ad54e4a09c9f1bd3136.webp 他曾是许多大型技术项目的领导者,包括 LLVM 编译器基础结构项目、Clang C 和 C++ 编译器、MLIR 机器学习基础结构等编译器技术,以及为苹果生态系统提供支持的程序设计语言 Swift。此外,Chris Lattner 还为 Google Brain 和 TensorFlow 建立和管理了一系列与 AI 相关的编译器、运行时和编程语言团队。 十多年来,Chris Lattner 的职业履历算是相当丰富,变动也算频繁:
  • 2011-2017 年,任苹果开发部高级总监、架构师
  • 2017.1-2017.6,任特斯拉副总裁,负责自动驾驶
  • 2017.8-2020.1,任谷歌 Google Brain 高级总监
  • 2020.1,加入芯片创业公司 SiFive 负责平台工程
2022 年 1 月,Chris Lattner 正式宣布创业,和 Tim Davis 共同建立了「Modular AI」,希望自下而上重建全球 ML 基础设施。在这家新生的公司中,Chris Lattner 以 CEO 身份领导团队。 其实,Chris Lattner 每一次跳槽的选择都颇受关注。对于「Modular AI」,业界也是寄予厚望。 近日,Chris Lattner 的创业之路有了重要动态。这一次,他官宣的是全新的编程语言「Mojo」。 ffc273640fc37fea36ad74f847eb8d1d.webp 「Mojo 结合了 Python 的可用性与 C 的性能,释放了 AI 硬件无与伦比的可编程性和 AI 模型的可扩展性」—— 它与 Python 一样易于使用,但具有 C++ 和 Rust 的性能。此外,Mojo 提供了利用整个 Python 库生态系统的能力。 Mojo 的出世,在 AI 领域迅速引起了热议。Jeremy Howard 试用后,在一篇博客文章中表示,Mojo 可能是几十年来最大的编程进步。 028581e376fbc0f7da79d3d4d0a5d361.webp「感觉编程被颠覆了。」在 Jeremy Howard 的记忆中,上次有这样的感觉,还是他首次上手 Visual Basic v1.0。而在 Mojo 中编写代码,让他重温了这种「神奇」的感觉。 为什么会有 Mojo? 关于「Mojo」这项工作的背景,Chris Lattner 和 Tim Davis 在博客中进行了详细的说明:
机器学习基础设施已经为数十亿美元的商业提供动力,并且正在迅速增长。但是,它要么由硬件团队为特定的设备集合构建,要么是由工业研究实验室构建,许多系统是不兼容技术的集合。
现有的单体系统很难在其最初的领域目标之外进行扩展或通用,这种情况迫使硬件制造商建立自己的技术栈。造成的结果就是,人工智能部署行业是非常分散的,工具链就有几十个,各自有不同的权衡和限制。更重要的是,这些设计模式也因其可用性、可移植性和难以扩展而减缓了创新的步伐。
不幸的是,我们也看到,构建和部署这些应用程序的技术复杂性仍然太高。部署人工智能仍然是全栈专家的领域,而最前沿的应用只有那些自己建立 ML 技术的最大科技公司的人可以使用。
大一统的设想注定会失败吗?今天人工智能的现实世界的复杂性是否使得它不可能解决这个问题? Chris Lattner 并不这么认为。他表示,软件行业会经历周期,我们以前也见过并解决过这样的问题:
20 世纪 90 年代的软件世界有过类似于我们今天看到的人工智能的碎片化问题。当时,C 和 C++ 已经建立起了社区,但却被分散在几十个专有编译器中。每一个都有供应商的扩展、粗糙的边缘、奇怪的边角案例和不完整的实现。当时,构建跨平台的软件是如此困难,以至于推动业界出现了一些工具来帮助开发者应对碎片化,使其更容易安装、构建和配置软件(例如 autoconf)。
「GCC」就是其中一员。凭借其对跨平台的支持、良好的性能和稳定性,以及免费性,GCC 在 90 年代获得了巨大的成功。GCC 的成功推动了工具行业的整合浪潮,由此产生的碎片整理使其功能成为事实上的标准,从而带来了一波新的创新。它催化了软件(直接促成了 Linux 等开放源码软件社区的迅速崛起)和硬件(促成了指令集架构和新商业模式的创新)的革命,使前者从零散的 C/C++ 实现中解放出来,使后者不必追赶快速发展的 C/C++ 语言标准。
如今,Mojo 的诞生也承担了这样一份希冀。
当我们创办 Modular 时,我们没有打算建立一种新的编程语言。但是,当我们在建立我们的平台,打算统一世界上的 ML/AI 基础设施时,我们意识到,在整个堆栈中编程太复杂了。另外,我们用手写了很多 MLIR,但并不愉快。
我们想要的是一个创新的、可扩展的编程模型,可以针对加速器和其他机器学习中普遍存在的异构系统。这意味着一种具有强大的编译时元编程的编程语言,整合自适应编译技术,在整个编译流程中进行缓存,以及其他现有语言不支持的东西。
尽管加速器很重要,但最普遍的、有时被忽视的加速器之一是主机 CPU。今天,CPU 有很多类似张量核心的加速器块和其他 AI 加速单元,但它们也是专门加速器无法处理的运算的后备力量,如数据加载、前后处理以及与国外系统的集成。因此,很明显,我们不能用一种只与特定处理器一起工作的「加速器语言」来提升人工智能。应用 AI 系统需要解决所有这些问题,我们认为没有理由不通过一种语言来完成。
在这种情况下,Mojo 诞生了。 Mojo:比 Python 快 35000 倍的编程语言 在编程语言领域,Python 可以说是非常受欢迎了。如今,这个领域又迎来一位新的竞争者:Mojo。 Mojo 是一门新的编程语言,其将 Python 的易用性和 C 的性能结合起来,弥合了研究和生产之间的差距。使用 Mojo,用户可以编写比 C 语言更快的可移植代码,并与 Python 生态系统无缝互操作,其目标是成为 AI 研究和生产的理想选择。 我们先看一个示例。下图展示的是 Mojo 与 Python 无缝互操作:

019f5eeaaedebc05b4afe908cc9373a5.webp

Mojo 语言具有以下特点: 首先是可用性和可编程性,只用 Mojo 一种语言就能编写所有东西。例如可以编写 Python、大量低级 AI 硬件程序,而不需要 C++ 或 CUDA。

5bd036eb7293176d968937a0f42211d5.webp

第二是性能,Mojo 解锁了 Python 性能。利用最先进的编译器和异构运行时,Mojo 能够充分利用硬件的全部功能,包括多核、向量单元和加速器单元。在任务不复杂的情况下实现与 C++ 和 CUDA 相当的性能。

e7147fd68e148932ae4ac02bd4d2f5ab.webp

并行化:Mojo 利用 MLIR,使 Mojo 开发人员能够利用向量、线程和 AI 硬件单元。 此外,根据测试,Mojo 比 Python 快 35000 倍。 acea7a0b77a3076441b598e33244694c.webpMojo 第三个特点是互操作性,可以访问整个 Python 生态系统,如可以访问 Numpy、Matplotlib 以及用户自定义代码:

e65ce5e8e2bf8493ca32a991f8042d14.webp

第四个特点是可扩展性。使用预处理和后处理操作就能轻松扩展模型,或者用自定义操作替换其他操作。此外,Mojo 还可以利用核融合、图形重写、形状函数等。

f3a1fd7c1447f214bbab5b29b45a599a.webp

模型的可扩展性,Mojo 可以升级模型中的现有操作。 Modular AI 表示,Mojo 仍在开发中,开发者现在可以在 Modular AI 基于 JupyterHub 的 Playground 中试用,用户只需通读教程便可编写自己的 Mojo 代码。 试用地址:https://docs.modular.com/mojo/get-started.html 参考链接:
https://www.modular.com/blog/the-future-of-ai-depends-on-modularity https://www.modular.com/mojo https://www.fast.ai/posts/2023-05-03-mojo-launch.html
    
      

    ac5ec4bb2ce74dd0c06fbaf0bf3587ee.webp

          
            

              

1、社区纠纷不断:程序员何苦为难程序员?

2、该死的单元测试,写起来到底有多痛?

3、互联网人为什么学不会摆烂

4、为什么国外JetBrains做 IDE 就可以养活自己,国内不行?区别在哪?

5、相比高人气的Rust、Go,为何 Java、C 在工具层面进展缓慢?

6、让程序员早点下班的《技术写作指南》

32e02a7e007bd000f7ece00e8ae77766.webp

6e9ce3dd8aca49b66570fb3c2e0e9f70.webp

b396fdb618914f31ab2e96c62e694db7.webp

d1d4fceaf4906e0d2a23b512617f68a9.webp

点在看

浏览 59
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报