社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

比 Python 快 35000 倍,Mojo 终于走到 1.0,它会成为 AI 时代的新编程语言吗?

前方智能 • 4 天前 • 31 次点击  

过去十多年里,AI 开发者已经形成了一套约定俗成的技术栈,上层用 Python 写模型、脚本和工具,下层再用 C、C++、CUDA,或者各家硬件厂商提供的 DSL 编写高性能内核。

这种组合已经被证明非常有效,但问题也越来越明显。

随着 AI 模型规模不断扩大,计算硬件变得越来越复杂,从 CPU、GPU 到 TPU,以及越来越多的 NPU、ASIC 和其他专用加速器,开发者需要面对的已经不再是单一的计算平台。一个 AI 系统往往同时涉及多种硬件、多套编程模型和不同的开发工具。

图源:Mojo

于是,一个问题开始摆在开发者面前,那就是有没有可能用一门编程语言,可以把 Python 的易用性和 C++、CUDA 这类底层语言的性能结合起来,同时直接面向 AI 时代越来越复杂的异构计算环境?

那 Mojo 编程语言应运而生,这门新语言从 2023 年正式亮相开始,经过三年左右的发展,最近终于迈过 1.0 这个重要节点。

01

从 Modular 创立到 Mojo 1.0

Mojo 的故事要从 Modular 这家公司说起。创始人之一 Chris Lattner 是编译器和语言圈里的大牛,LLVM、Clang、Swift、MLIR 都出自他之手,也深度参与了谷歌 TPU 等基础设施。另一位创始人 Tim Davis 则长期负责 Google Brain,以及 TensorFlow、XLA 等核心系统。

两人创立 Modular 的初衷很简单,当下的 AI 软件栈过于碎片化,训练、推理、预处理、后处理、部署,各有一套工具和语言;不同硬件又是一套各自为政的编程模型。

但 AI 不会永远只跑在一两种 GPU 上,未来一定是 CPU、GPU、TPU、各家自研 AI 加速器甚至是定制 ASIC 大爆发的时代,而现有软件栈(尤其是 Python + 各种框架 + 各家驱动)根本撑不住这种异构性。

图源:Mojo

如果要做一个横跨这些硬件的统一平台,只在现有的语言上修修补补肯定不够。于是,一个原本不在计划内的决定出现了,干脆自己开发一门新的语言,这就是 Mojo 的起点。

图源:X

在 2023 年刚刚亮相时,Mojo 的一大特点就是既兼容 Python 语法和生态,又能到底层做系统编程和算子内核,很像「Python 化的 C++」,而且在发布之初,凭借可以比 Python 快 35000 倍的实力,在开发者圈刷屏。

从 2023 年起,Mojo 一直以闭源编译器 + 开源标准库的形式在发展。Modular 在内部用 Mojo 写 MAX 推理框架、GPU 内核和大量基础设施,社区则通过标准库和开源 kernel 代码参与贡献。Mojo 在刚刚起步的阶段发展很快,语言语法、类型系统和所有权模型都经历了多轮大改动,但对使用它的开发者就不够友好了,因为 Moji 迭代、更新速度太快,写写短期项目还行,用来写长期项目就得时不时重构。

为了解决这个问题,Modular 在 2024 年提出通向 1.0 的路线。计划先把语言打磨到足够稳定,再给社区一个可以安心使用的版本。

图源:Mojo

这一等就是两年多,这个月 Mojo 正式发布 1.0 版本,标志着语言语义进入「长期稳定」的阶段。紧接着 1.0 发布,Modular 还开源了 Mojo 编译器和全套工具链,并采用 Apache 2.0 许可证。这也意味着各个硬件厂商、云厂商、研究机构都可以自由地在 Mojo 之上扩展和集成,不受商业许可限制。

图源:Mojo

与此同时,在这个关键节点上,高通宣布以约 31 亿美元全股票价格收购 Modular,但会继续保持 Mojo、MAX 和 Modular Cloud 的独立运营,也会保持 Mojo 开源。这基本也打消了业界对 Mojo 被收购后会不会闭源、锁死在高通生态的担忧,

到这里,Mojo 完成了从内部实验语言、到 1.0 正式版、完全开源、融入大厂生态完整一轮进化。

02

Mojo:为 AI 量体裁衣

Mojo 之所以被称为面向 AI 的编程语言,不光因为它能写 AI,主要是它从一开始就针对 AI 工作负载和硬件来设计。

对大多数 AI 团队来说,目前的现状是模型逻辑、训练脚本写在 Python 里,方便试验和协作;性能关键路径(矩阵乘、注意力、编解码内核、调度器)又不得不改用 C/C++、CUDA 或厂商 DSL,甚至写汇编;两层之间通过各种 FFI、扩展模块打通,调试、部署都非常麻烦。

Mojo 则是想打通它们之间的割裂,用一门语言覆盖「高层业务 + 底层算子 + 系统组件」三层,让你既能写推理服务、调度器、工具,也能写 GPU 和专用加速器上的内核。

所谓「面向 AI 的编程语言」,主要体现在以下几个方面:

图源:Mojo

首先是硬件,Mojo 从一开始就假定目标平台不是单一 CPU,而是包含多核 CPU、GPU、各类 Tensor/Matrix 单元乃至近存计算芯片的「异构系统」。语言内建了对向量化、并行计算和设备内核的支持,配合 MLIR 和 MAX,可以用同一种语法写 CPU 和 GPU 内核,而不用在 Python、CUDA、C++、各家 DSL 之间来回切换。

其次是性能模型,在特定条件下,Mojo 比 Python 快 35000 倍,并且在保留高级语法时,在同等算法下逼近甚至超过 C/C++。为此,它采用值语义 + 所有权系统管理内存,在编译期尽量消除引用计数开销,提供零成本抽象,并通过编译期元编程(comptime)做专门化和自动调优,以适配不同硬件。

第三是互操作性,Mojo 在语法上刻意向 Python 靠拢,对 Python 开发者来说,Mojo 看起来非常眼熟,函数、缩进、控制流、列表等也都充满 Python 的味道;你可以直接导入 Python 模块,调用 NumPy、matplotlib,甚至在 Mojo 里嵌入 Python 代码,同时逐步用 Mojo 重写性能关键路径。对开发者来说,可以非常平滑地从 Python 迁移到 Mojo。

从长远路线看,这种全面的特性让 Mojo 可以成为一个既能写 GPU 内核,又能写后端服务,甚至将来能直接承载大量 Python 业务逻辑的通用语言。

03

但替代 Python?还为时过早

展望 Mojo 的未来,大致可以从技术演进、生态扩展这几个方面来思考。

图源:Mojo

技术上,已经公开的路线图提到,即将重点补齐的是更完备的异步编程模型、模式匹配、代数数据类型(Unions)、更友好的包管理和构建系统等。这些功能一方面是向 Rust/Swift 等现代系统语言靠拢,增强其写通用系统和服务端应用的能力,另一方面也是为了降低日常工程开发的负担。

生态上,随着编译器和工具链完全开源,Mojo 能否像 LLVM、Rust 一样吸引高校、芯片厂、云厂商一起扩展,将决定它能走多远。高通自己显然会深度投入,但真正的理想状态,是看到更多硬件厂商、云平台、模型提供方基于 Mojo+MAX 做自己的加速与扩展。

那么问题来了。既然 Mojo 同时拥有 Python 的语法和系统级语言的性能,那「它会取代 Python 吗?」肯定是你接下来会问的问题。

至少现在来看,答案是否定的。

图源:TIOBE

Mojo 仍然年轻,也还在高速发展,从 TIOBE 等通用语言流行度指数来看,Mojo 目前还远远排不上号,和 Python、C、C++、Java、Rust 这种头部语言相比,生态体量还是早期阶段。

短时间里,要说 Mojo 能否取代 Python,那还为时过早,对今天的开发者来说,也许更现实的问题是,在继续用好 Python 的同时,什么时候开始试着用 Mojo 写一两个真正吃性能、吃硬件的模块,亲手感受一下这门「为 AI 时代准备的系统语言」才是能合理的期待。

如今,它才刚刚迈过 1.0 的门槛,刚刚长出萌芽,但放眼未来五年、十年,届时当我们再次谈论 AI 编程语言格局时,或许很难绕开 Mojo 这个名字。




推荐阅读


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/200166