乐于分享
好东西不私藏

Mojo 开源了,AI 编程的 Python 时刻要来了吗

Mojo 开源了,AI 编程的 Python 时刻要来了吗

"

Mojo不是被创造出来做AI的Python,它是从第一天就为AI和高性能计算设计的

📌 本文看点

01Mojo编译器正式开源Apache 2.002Python语法+C级别性能03AI高性能计算原生语言
01

TECH

终于开源了

Mojo 开源了,AI 编程的 Python 时刻要来了吗

事情是这样的。

上周我在刷 GitHub 的时候,看到 Modular 的仓库突然热闹了起来。点进去一看,Mojo 的编译器源码全部放出来了,Apache 2.0 协议,整个工具链一起端上来。

我当时愣了一下。

不是那种惊讶,是那种「终于来了」的感觉。Mojo 从 2023 年发布到现在,一直吊着大家的胃口。你可以用它的 playground,可以看它的文档,但编译器一直是个黑盒子。你相信它很快,相信它解决了 Python 的 GIL 问题,但你没法真正去研究它底层怎么做到的。

现在不一样了。

所有源码都在那里,你可以 fork,可以编译,可以研究它的 MLIR 层是怎么把 Python 风格的代码翻译成能在 GPU 上跑的指令。这种透明感,对于做 AI 基础设施的人来说,就像一个之前只给你看菜单的厨师,现在直接把后厨的门打开了。

而且时间点很有意思。Mojo 刚刚在上周达到了 1.0 版本,也就是说源码已经稳定了,不再是大改大动的状态。然后紧接着就开源了。这个节奏我觉得是刻意的,先让自己的代码立得住,再拿出来给大家看。

Mojo 的定位我一直觉得挺有意思的。它不是什么全新的语言,它的语法很大程度上就是 Python。你写 Mojo 的代码,看起来跟 Python 差不多,用 def 定义函数,用 import 引用库,甚至很多标准库的接口都跟 Python 对齐。但它的底层完全不一样,它跑在 MLIR 上,可以直接调用 GPU 的算力,可以做到接近 C 和 Rust 级别的性能。

我试过几个 benchmark,同样的算法,Python 跑要十几秒,Mojo 几十毫秒就搞定了。差距就是这么大。

02

DEEP

Python语法C性能

当然,现在说 Mojo 要取代 Python 还为时过早。Python 最强大的地方不是语言本身,是它的生态。NumPy、PyTorch、TensorFlow、Transformers、Scikit-learn,这些库积累了几十年的工程智慧和社区贡献。Mojo 现在最大的挑战不是技术,是生态。它能不能让这些库在它上面跑起来,能不能让 AI 社区的开发者愿意迁移过来,这些才是真正的考验。

但这次开源的策略,我觉得是走对了方向。

Apache 2.0 协议加 LLVM 例外,这个组合很聪明。Apache 2.0 保证了商业友好,大公司可以放心使用和贡献。LLVM 例外解决了编译器领域的特殊问题,如果用 GPL 协议的编译器编译出来的代码,理论上会传染 GPL,但 LLVM 例外把这个顾虑去掉了。这样 GPU 厂商、云厂商、硬件公司都可以放心地把 Mojo 集成到自己的产品里。

说到这个,我想到一个历史画面。

当年 Python 刚出现的时候,没人觉得它能成。那时候的编程世界是 C 和 C++ 的天下,Java 是新兴贵族。Python 这种解释型、动态类型、慢得要命的语言,怎么跟这些大佬竞争?但它靠一件事情赢了,它让程序员写代码写得快。你不需要关注内存管理,不需要关注类型声明,你只需要关注你的逻辑。这种「以人为本」的设计哲学,让 Python 成为了数据科学家和 AI 研究者的首选语言。

Mojo 的故事有点像是这个逻辑的延续。

Python 做了上半场,让写代码变得容易。Mojo 想做下半场,让写出来的代码跑得快。而且它不要求你换语言,你继续用 Python 的语法,继续用 Python 的思维方式,只是底层换了一个更快的引擎。

你想想看,这听起来是不是很像一个历史的重演。

当年 GPU 厂商说,你们不用写 CUDA 了,直接写 Python 就行,PyTorch 会帮你们搞定。后来大家确实不用写 CUDA 了,但 PyTorch 本身是用 C++ 和 CUDA 写的。Mojo 想做的,是把这个「中间人」也干掉,让你直接用 Python 写出来的代码,就能达到接近手写 CUDA 的性能。

我知道有人会质疑。Mojo 从 2023 年发布到现在,社区的声音一直很分裂。有人觉得它是「PPT 语言」,有人觉得它改变了游戏规则。我觉得这两种声音都有道理,但都偏激了。

Mojo 不是 PPT 语言,它真的有东西。它的编译器实现,它的 MLIR 集成,它的内存模型,这些技术细节在源码里都是实打实的。但说它改变了游戏规则,也还为时过早。它还需要时间,需要社区,需要生态的积累。

03

INSIGHT

生态的考验

这次开源Mojo 团队做了一个很务实的决定。编译器暂时不接受外部贡献,标准库从 2024 年开始就已经开放了社区贡献。那结果会怎样呢,你提 PR 修标准库的 bug,去改文档,去加新功能,这些都可以。但编译器的核心设计,他们想先自己把控,等稳定了再开放。这个节奏我觉得是对的,先让房子盖好,再让大家来装修。

想想看,如果 Mojo 真的能成功,那 AI 编程的格局会变成什么样。

现在你做 AI 开发,熟悉的路径是这样的,用 Python 写原型,用 PyTorch 训练模型,性能瓶颈了用 C++ 或者 CUDA 重写关键部分。一个团队里,需要同时有 Python 工程师和 C++ 工程师,需要有人懂 GPU 编程。这种人才结构本身就是一种成本。

Mojo 的愿景是,一个人,用一门语言,就能搞定从原型到生产的所有事情。你不需要在两个语言之间来回切换,不需要在 Python 和 C++ 之间维护两套代码。听起来是不是很诱人?

但我也得说,这个愿景的兑现,不是一朝一夕的事情。Mojo 现在能在各种 benchmark 上跑出漂亮的数字,真正到了生产环境,能不能经得住考验,还要看。它跟现有 Python 生态的互操作性,能不能做到无缝,也是个大问题。

不过至少,这次开源让所有人都能看到它的底牌了。不再是闭门造车,不再是「你信我就好」,而是「代码在这里,你自己看」。这种透明,对于一个想要挑战 Python 生态的语言来说,是第一步,也是最关键的一步。

我始终觉得,Mojo 的故事不是关于「Python 要完蛋了」,而是关于「AI 编程终于有了自己的原生语言」。Python 不是被创造出来做 AI 的,它是在 AI 火了之后被大家硬推到那个位置的。而 Mojo 从第一天就是为了 AI 和高性能计算设计的。这种「原生性」的差异,在未来的十年里会越来越明显。

回到开头那个问题,Mojo开源了,AI 编程的 Python 时刻要来了吗?

我不知道,也没人能确定。但我知道的是,当一门语言的编译器源码全部公开,当你可以在自己的机器上编译它,研究它,给它提 bug,去改它的标准库,那就说明它认真地想要活下来,想要成为一个真正的生态。

而一个认真想要活下来的东西,总是值得关注的。

以上,既然看到这里了,如果觉得不错,随手点个赞、在看、转发三连吧,如果想第一时间收到推送,也可以给我个星标。

/ 作者 Aikstady

THE END

我是 aikstady,相信时间的重量,也着迷于把时间熬成结果的人。

如果你觉得今天这篇有收获,欢迎点赞、在看、转发三连,我们下篇见。

投稿/爆料请联系:17721541314@163.com