Py学习  »  Python

比 Python 快 35000 倍!LLVM&Swift 之父宣布全新编程语言 Mojo:编程被颠覆了

程序员的那些事 • 11 月前 • 144 次点击  

推荐关注↓

转自:InfoQ

“Mojo 可能是近几十年来最大的编程语言进步。”

近日,由 LLVM 和 Swift 编程语言的联合创始人 Chris Lattner 创办的新公司 Modular AI 发布了一种名为 Mojo 的新编程语言。

Mojo 将大家喜爱的 Python 特性,同 C、C++ 和 CUDA 的系统编程功能结合了起来,并通过其所谓“极限加速”与其他 Python 速度增强方案区分了开来。凭借着硬件加速,它在运行 Mandelbrot 等数字算法时比原始 Python 快上 3.5 万倍!

更重要的是,作为 LLVM 的缔造者, Chris Lattner 良好的出身为 Mojo 奠定了成功的基础。数据科学家、fast.ai 的创始研究员 Jeremy Howard 评价 Mojo 为“Mojo 可能是近几十年来最大的编程语言进步。”

1 为什么会有 Mojo?

对于全球各地开发者来说,我们应该都熟悉 Chris Lattner 这个名字。

Chris Lattner 曾先后效力于苹果、谷歌和特斯拉等公司,参与创建了我们今天所依赖的许多项目:开发了 LLVM 编译器工具链、共同创建了 MLIR 编译器,并带头开发出 Swift 编程语言。

最初,作为他博士论文的一部分,他开始了 LLVM 的开发。LLVM 最终从根本上改变了编译器的创建方式,构成了当今世界上许多应用广泛的语言生态系统的基础。然后他继续推出 Clang,这是一个位于 LLVM 之上的 C 和 C++ 编译器。

Chris 发现 C 和 C++ 并没有真正充分利用 LLVM 的强大功能,因此在苹果工作期间,他设计了一种名为“Swift”的新语言,他将其描述为“LLVM 的语法糖”。Swift 已经成为世界上使用最广泛的编程语言之一,特别是作为当今为 iPhone、iPad、MacOS 和 Apple TV 创建 iOS 应用程序的主要方式。

不幸的是,苹果对 Swift 的控制意味着它还没有真正在苹果之外的世界大放异彩。Chris 在谷歌工作了一段时间,试图将 Swift 带出苹果的舒适区,希望它成为人工智能模型开发中 Python 的替代者,但遗憾的是他没有得到苹果或谷歌所需的支持,最终也没有成功。

话虽如此,Chris 在谷歌期间还开发了另一个取得巨大成功的项目:MLIR。MLIR 是现代多核计算和 AI 工作负载的 LLVM IR 的替代品。这对于充分利用 GPU、TPU 和越来越多地添加到服务器级 CPU 的矢量单元等硬件的强大功能至关重要。

2022 年 1 月,Chris Lattner 正式宣布创业,和 Tim Davis 共同建立了“Modular AI”,希望自下而上重建全球 ML 基础设施。Tim Davis 曾经执掌谷歌机器学习项目,负责管理谷歌的机器学习 API、编译器和运行时基础设施。

他们在构建自己的平台以此统一世界上的 ML/AI 基础设施时,却意识到,在整个堆栈中编程太复杂了。“这些系统严重碎片化,硬件种类繁多,每个都有定制的工具”。

“我们想要的是一个创新的、可扩展的编程模型,可以针对加速器和其他机器学习中普遍存在的异构系统。这意味着一种具有强大的编译时元编程的编程语言,整合自适应编译技术,在整个编译流程中进行缓存,以及其他现有语言不支持的东西。”

所以在这种情况下,这家初创公司一口气公布了两个相关项目:Mojo,一种建立在 Python 基础上的编程语言,号称拥有与 C 比肩的速度优势;还有可移植、高性能 Modular 推荐引擎,能够在生产中以更低成本运行 AI 模型(所谓推理,就是经过训练的模型在实际场景中的使用过程)。

该公司表示,“Mojo 将研究人员喜爱的 Python 特性,同 C、C++ 和 CUDA 的系统编程功能结合了起来。”

“Mojo 建立在下一代编译器技术之上。当您向程序中添加类型时,该技术能够显著提高性能,帮助您定义零成本抽象、受益于 Rust 级别的内存安全特性,并支持独特的自动调优和编译时元编程能力。”

“Mojo 从 Rust 和 Swift 中学到了很多东西,并更进了一步。”

2 Mojo:比 Python 快 35000 倍的编程语言

Mojo 是 Python 家族的一员,但有着远大的目标——想要与 Python 生态系统完全兼容,因此开发人员可以继续使用自己熟悉的工具。Mojo 旨在通过保留 Python 的动态特性,同时为系统编程添加新原语,逐渐成为 Python 的超集。

这些新的系统编程原语将允许 Mojo 开发人员构建当前需要 C、C++、Rust、CUDA 和其他加速器系统的高性能库。

在 MLIR 上,Mojo 代码可以访问各种 AI 调优的硬件功能,例如 TensorCores 和 AMX 扩展。因此,对于某些特定算法类型,它的速度要远远超过原始 Python——它在 AWS r7iz.metal-16xl 上运行 Mandelbrot 算法只需 0.03 秒,而 Python 3.10.9 则需要 1027 秒(约 17 分钟)。

Chris Lattner 在 Hacker News 上表示:“我们的目标不是让动态 Python 神奇地快速。虽然我们在动态代码方面要快得多(因为我们有编译器而不是解释器),但这并不是依靠‘足够智能’的编译器来消除动态性”。

他表示,Mojo 比 Python 快得多的原因是它让程序员可控制静态行为,并且可以在有意义的地方逐步采用它。这样做的关键回报是编译过程非常简单,不需要 JIT,还可以获得可预测和可控的性能。

Mojo 仍在开发当中,但目前已经开放了试用 Jupyter notebook。到全面完成之后,它有望成为 Python 的超集——一个带有系统编程工具包的 Python 生态系统。到那个时候,它应该能够运行一切 Python 程序。但目前,Mojo 还仅支持 Python 的核心功能,包括 async/await、错误处理和可变参数,距离全面兼容还有很长的路要走。

“感觉编程被颠覆了”  

在周四发布的公告中,Fast.ai 联合创始人、数据科学家 Jeremy Howard 表示,“Mojo 可能是近几十年来最大的编程语言进步。”

“‘镇’上出现了一种新的编程语言:Mojo!我对此感到非常兴奋。它像 Python,但没有 Python 的任何问题。你可以像 C 一样快速编写代码,并像 C 一样部署小型独立应用程序。”

“感觉编程被颠覆了。”在 Jeremy Howard 的记忆中,上次有这样的感觉,还是他首次上手 Visual Basic v1.0。

Jeremy Howard 是 Python 的重度使用者,Python 可以并且确实可以做任何事情,但它有一个缺点:性能,它比 C++ 等语言慢数千倍。利用 Python 进行开发需要避免用 Python 来实现性能关键部分,并采用 Python 包装器来覆盖 C、FORTRAN、Rust 等代码。

因此,凭借着生态系统的丰富性,Python 确实在 AI 模型开发领域占据优势,但又因为性能有限,Python 程序员往往最终会将代码指向运行速度更快的其他语言(例如 C/C++ 和 Rust)模块。这种“双语”现实导致机器学习应用程序的分析、调试、学习和部署变得愈发困难。Howard 解释道,Mojo 试图解决的就是 AI 内部这种割裂现实。

“Mojo 的一大亮点在于,开发人员可以随时选择更快的‘模式’,使用‘fn’替代‘def’创建自己的函数。在这种模式下,开发者必须准确声明每个变量的类型,这样 Mojo 就能创建出经过优化的机器码来实现所需函数。”

“此外,如果使用‘struct’来替代‘class’,属性就会被紧密打包到内存中,甚至可以直接在数据结构内使用、而无需到处寻找指针。这些特性让它获得了堪与 C 语言比肩的运行速度,也让 Python 程序员们在稍微学习一点新语法之后就能掌握这处性能宝藏。”

Mojo 的另一个好处,在于能将代码编译成独立且快速启动的二进制文件,使其轻松借助可用核心和加速硬件的优势完成部署。

作为一种编译型语言,Mojo 的部署过程与 C 基本相同。例如,一个包含从头编写的 matmul 版本的示例程序大约在 100k 左右。

“这彻底的颠覆了传统游戏规则。”

当然,目前的 Mojo 仍有一定缺失,比如包管理和构建系统——这也是 Python 社区长久以来一直努力解决的需求。另外,Mojo 语言尚未指定开源许可,但相信只是时间问题。

Howard 在推文中总结道,“Mojo 还没有最终完成——但目前的成果已经令人兴奋,毕竟它是由一支体量极小的团队在短时间内打造而成。Lattner 凭借着多年的 Clang、LLVM 和 Swift 开发经验,为我们奠定了又一块精心构建的语言基石。”

参考链接:

https://www.modular.com/blog/the-future-of-ai-depends-on-modularityhttps://news.ycombinator.com/item?id=35811380

https://twitter.com/jeremyphoward/status/1653924474536984577

https://docs.modular.com/mojo/programming-manual.html#argument-passing-control-and-memory-ownership

https://www.theregister.com/2023/05/05/modular_struts_its_mojo_a/


- EOF -



推荐阅读  点击标题可跳转

0、极客专属:几十款程序员秒懂的T恤/卫衣

1、看完百度文心一言的魔性作图,我愣住了

2、GPT-4 Copilot X 震撼来袭!AI 写代码效率 10 倍提升,码农遭降维打击

3、爆火情侣竟不是真人!新版 Midjourney 效果炸裂,网友:太可怕了


关注「程序员的那些事」加星标,不错过圈内事

点赞和在看就是最大的支持❤️

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/154836
 
144 次点击