[转帖]比 Python 快 35000 倍!LLVM&Swift 之父宣布全新编程语言 Mojo:编程被颠覆了
https://www.infoq.cn/article/GFfVLVpkIGOcKYB85Opb
“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 可能是近几十年来最大的编程语言进步。”
为什么会有 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 中学到了很多东西,并更进了一步。”

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-modularity
https://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/
[转帖]比 Python 快 35000 倍!LLVM&Swift 之父宣布全新编程语言 Mojo:编程被颠覆了的更多相关文章
- [转帖]推荐一款比 Find 快 10 倍的搜索工具 FD
推荐一款比 Find 快 10 倍的搜索工具 FD https://www.hi-linux.com/posts/15017.html 试了下 很好用呢. Posted by Mike on 2018 ...
- Python 之父爆料:明年至少令 Python 提速 1 倍!
大概在半年前,我偶然看到一篇文章,有人提出了给 Python 提速 5 倍的计划,并在寻找经费赞助.当时并没有在意,此后也没有看到这方面的消息. 但是,就在 5 月 13 日"2021 年 ...
- grep之字符串搜索算法Boyer-Moore由浅入深(比KMP快3-5倍)
这篇长文历时近两天终于完成了,前两天帮网站翻译一篇文章“为什么GNU grep如此之快?”,里面提及到grep速度快的一个重要原因是使用了Boyer-Moore算法作为字符串搜索算法,兴趣之下就想了解 ...
- Hadoop3.0新特性介绍,比Spark快10倍的Hadoop3.0新特性
Hadoop3.0新特性介绍,比Spark快10倍的Hadoop3.0新特性 Apache hadoop 项目组最新消息,hadoop3.x以后将会调整方案架构,将Mapreduce 基于内存+io+ ...
- delphi-json组件,速度非常快,要比superobject快好几倍
delphi-json组件,速度非常快,要比superobject快好几倍https://github.com/ahausladen/JsonDataObjectshttp://bbs.2ccc.co ...
- OpenCV Haar AdaBoost源代码改进(比EMCV快6倍)
这几天研究了OpenCV源代码 Haar AdaBoost算法,作了一下改进 1.去掉了全部动态分配内存的操作.对嵌入式系统有一定的速度提升 2.凝视覆盖了大量关键代码 3.降低了代码一半的体积,而且 ...
- grep之字符串搜索算法Boyer-Moore由浅入深(比KMP快3-5倍)(转)
这篇长文历时近两天终于完成了,前两天帮网站翻译一篇文章“为什么GNU grep如此之快?”,里面提及到grep速度快的一个重要原因是使用了Boyer-Moore算法作为字符串搜索算法,兴趣之下就想了解 ...
- 一个比Spring Boot快44倍的Java框架!
最近栈长看到一个框架,官方号称可以比 Spring Boot 快 44 倍,居然这么牛逼,有这么神奇吗?今天带大家来认识一下. 这个框架名叫:light-4j. 官网简介:A fast, lightw ...
- 比MR至少快5倍的神器,竟然是它
Hive简介 Hive是一个基于 Hadoop 的开源数据仓库工具,用于存储和处理海量结构化数据.它最初是应Facebook对每天产生的海量新兴社会网络数据进行管理和机器学习的需求而产生和发展的,Hi ...
- MySQL 8.0 正式版 8.0.11 发布:比 MySQL 5.7 快 2 倍
ySQL 8.0 正式版 8.0.11 已发布,官方表示 MySQL 8 要比 MySQL 5.7 快 2 倍,还带来了大量的改进和更快的性能! 注意:从 MySQL 5.7 升级到 MySQL 8. ...
随机推荐
- 【一行代码秒上云】Serverless六步构建全栈网站
摘要:Serverless怎么玩?听一千道一万不如亲手来实践,跟着我们以华为云Serverless实践FunctionGraph来免费体验一下六步构建全栈网站吧 前言: Serverless怎么玩?听 ...
- 云图说丨DDoS防护解决方案:DDoS大流量攻击防得住
摘要:华为云安全服务打造DDoS防护解决方案,助您防患于未然,筑牢业务安全防线. 本文分享自华为云社区<[云图说]第255期 DDoS防护解决方案:DDoS大流量攻击防得住>,作者:阅识风 ...
- 解放重复劳动丨华为云IoT API Explorer对接小程序实现系统化应用
摘要:<物联网平台接口调用实验>详细讲解了API Explorer的应用,根据提供的接口,结合真实案例,制作了一个小程序,真正的把它应用起来,解放重复劳动,小程序是一个很好的平台,作为应用 ...
- 超90万个K8S实例可被发现暴露在公网上,14%位于中国
翻译: SEAL安全 原标题: Over 900,000 Kubernetes instances found exposed online 原文链接: https://www.bleepingcom ...
- ClickHouse 在 UBA 系统中的字典编码优化实践
ClickHouse UBA 版本是字节跳动内部在开源版本基础上为火山引擎增长分析专门深度定制优化的版本.本文介绍在字典编码方向上的优化实践,作者系字节跳动数据平台研发工程师 Jet He,长期致力于 ...
- 火山引擎VeDI助力零售品牌私域运营 实现与会员高效“沟通”
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 小程序正在成为零售品牌与会员高效沟通的第二阵地. 过去,零售品牌多依赖电商平台与会员保持互动联系.消费者通过关注[ ...
- Jmeter软件测试
1.1. 性能测试是什么 基于协议模拟用户发出请求,对服务器形成一定负载,来测试服务器的性能指标是否满足要求 性能指标关注点:时间性能.空间性能 性能测试与页面无关 性能测试定义:指通过自动化的测试工 ...
- Hugging News 年度特刊: Transformers & Gradio 年终大事件总结
Transformers 年终大事件总结 对于 Transformers 来说,这是激动人心的一年.2022 年,我们的每周活跃用户数量增加了两倍,最近的一周用户超过 100 万,平均每日 pip 安 ...
- Go--变量的声明
Go语言是静态类型语言,因此变量(variable)是有明确类型的,编译器也会检查变量类型的正确性. 变量是一段或多段用来存储数据的内存,在go中,变量一旦被定义,一定要使用,不然会报错 内建变量类型 ...
- 【计算机网络】身份认证Oauth2
身份认证Oauth2 https://www.bilibili.com/video/BV1FL411h7es/?spm_id_from=333.999.0.0&vd_source=d11276 ...