专栏名称: 程序员专栏
点击关注,进实战技术交流群!分享技术文章、工具资源、精选课程、视频教程、热点资讯、学习资料等。
目录
相关文章推荐
蛋先生工作室  ·  今年蛋价的低谷是二季度,而非一季度 ·  19 小时前  
网购投诉平台  ·  春节网购狂欢背后的隐忧 ... ·  昨天  
亿邦动力  ·  轮到年轻人来教育白酒了 ·  3 天前  
老高电商圈子  ·  金冠俱乐部焕新:再一次,改变电商 ·  3 天前  
起飞的金牌运营  ·  速卖通精品运营流程(一) ·  3 天前  
起飞的金牌运营  ·  速卖通精品运营流程(一) ·  3 天前  
51好读  ›  专栏  ›  程序员专栏

危!比 Python 快 90,000 倍的 Mojo 官宣开源

程序员专栏  · 公众号  ·  · 2024-04-06 18:00

正文

架构师大咖
架构师大咖,打造有价值的架构师交流平台。分享架构师干货、教程、课程、资讯。架构师大咖,每日推送。
公众号

AI 时代,在各大公司“卷”大模型之际,也有人从工具层“发力”编程语言。

2023 年, Swift 之父、编译器大神 Chris Lattner 和 Google 前员工 Tim Davis 带领其背后的初创团队 Modular 加入 AI 战局,先是火速发布了比 Python 快 35000 倍的 Mojo 编程语言,而后又拿下 1 亿美元的融资,进而推出围绕 Mojo 打造的商业人工智能平台 MAX,最终希望 Mojo 能成为一款所有 AI 程序员都在使用的编程语言。

现如今,Modular 再次展开布局,官宣开源 Mojo 核心组件 (https://github.com/modularml/mojo) 。基于开源开放的方式,这一项目在短短时间内迅速吸引全球开发者的关注,GitHub Star 数攀升到 19.2k,Fork 达 2.3k

对此,不少网友持以期待:“ Mojo 现已开源。Python 已经很棒了。Mojo 将其提升到了一个全新的水平。我们正在使用 Python 构建 AGI。想象一下当我们加快速度时的可能性!”


AI 编程语言 Mojo 正式开源标准库

Mojo 自 2023 年 5 月首次面世以来,一直在稳步迭代。它是一种专为 AI 设计的编程语言,可以将 Python 的易用性与 C 的性能相结合,释放 AI 硬件强大的可编程性和 AI 模型的可扩展性。

简单来看,使用 Mojo 可以编写比 C 更快、可移植的代码,并与 Python 生态系统无缝交互。最重要的是,Mojo 具备了使用 Python 库整个生态系统的能力。

之所以选择开源的方式,Modular 在官方公告中写道,“在 Modular,开源已根植于我们的 DNA 中。我们坚信,Mojo 要充分发挥其潜力,就必须开源。我们一直在逐步开源更多 Mojo 和 MAX 平台的部分内容,今天我们很高兴地宣布在 Apache 2 许可证下发布 Mojo 标准库的核心模块!我们始终相信,公开构建 Mojo 会带来更好的结果,因为它允许其设计受到更广泛社区的反馈的影响。”

Modular 开源的 Mojo 组件构成了该语言标准库。这是编程语言的一部分,包括其核心语法元素和其他基本功能。Mojo 的标准库包含优化 AI 超参数等任务的功能,这些设置决定神经网络如何处理数据。

和其他开源项目有所不同,Modular 团队这次除了提供标准库的源代码之外,还 开放标准库的修订历史记录、发布 Mojo 编译器的夜间构建版本(软件的每日构建版本),提供了公共持续集成服务(public CI ) ,并通过 GitHub 拉取请求允许外部贡献。

遵循 Apache 2 LLVM 许可

在遵循的开源协议上,Mojo 使用的 Apache 2,它包含了专利授权条款,为软件的用户和贡献者提高了法律保护。

不过,在使用 Apache 2 许可证时,Modular 团队基于 LLVM 项目经验也发现了两个问题:

  • 其一,有人担心 Apache 2 许可证可能无法与 GPL2 代码(例如 Linux 内核)不太兼容;

  • 其二,Apache 2 许可证要求你承认在衍生项目中使用了代码。

对此,Modular 团队表示,“我们希望你可以在不需要承认使用 Modular 或 Mojo 的情况下使用 Mojo,并且明确表明与 GPL2 代码混合是可以接受的。因此,我们包含了专门设计用于解决这些问题的 LLVM exception。

我们认为这代表了语言和工具项目的开源许可证的最新技术水平,并建议其他 Mojo 开源项目采用相同的方法。我们已经在我们现有的开源代码中使用了这种方法,并将继续以相同的方式发布更多的代码。”

对标 Python?也许搞错了

Mojo 作为一门新语言,如今选择开源的方式吸引全球开发者参与其中,无疑对其生态发展有极大的好处,但是就这门语言而言,也有不少人存有争议,毕竟自其发布以来,也有不少人将其对标因 AI 发展而风生水起的 Python 语言,而 Mojo 官方也多次将其与 Python 的运行速度相比较:

  • 2023 年 5 月,在用最先进的编译器和异构运行时,Mojo 能够利用硬件的全部功能,包括多核、向量单元和加速器单元,在不复杂的前提下,实现与 C++ 和 CUDA 相当的性能。与此同时, 根据官网测试结果,Mojo 比 Python 快 35000 倍。

  • 同年 9 月 7 日,Modular 公司宣布 Mojo 初步登陆 Linux 系统之际介绍称,Mojo 将动态与静态语言的优点结合起来,一举将性能提升达 Python 的 68000 倍。

  • 在 10 月,Mojo 推出了支持 Mac 平台的版本,Chris Lattner 发文表示:Mojo + Apple Silicon 是强强联合,强上加强。

    彼时 Mojo 团队fa,Mojo 语言可以充分利用 Mac CPU 内核和矢量单元来实现加速。根据他们提供的测试 —— 使用 matmul.mojo 运行一个矩阵乘法示例。在 Apple MacBook Pro M2 Max 上,与纯 Python 实现的版本相比,Mojo 的速度大约比 Python 快 90,000 倍。

基于此,也有人担心自己刚学了 Python,难道又要开始学 Mojo?

其实对于这个问题, Mojo 之父 Chris Lattner 早些时候也直率地回应过, 「Mojo 对 Python 没有威胁: 它提升了 Python 的水平并赋予 Python 程序员超能力 。如果有人应该害怕的话,那就应该是 C++ ,这种很难使用加速器语言。Python 是开发人员所喜爱的:当你需要性能时,C++ 基本上是一种实用的必要之恶。」

现实来看,也确实如此,Mojo 可以视为是 Python 的一个超集,甚至视为 Python++,它弥补了 Python 的一些不足之处。

要知道过往 20 年间,Python 凭借其简单的语法和广泛的生态系统,巩固了其作为 AI 领域主导语言的地位。然而,性能不佳是它的一个重大缺陷,尤其是在人工智能等计算密集型领域。

至于 Python 性能为什么不好,主要还是和它最初的设计有关,Python 起初优先考虑了生产力和简单的语法,导致它:

  • 是一门解释性语言。解释性语言本质上较慢,因为解释器执行代码而不是直接与硬件交互。相比之下,编译型语言生成机器码,直接由硬件执行,使它们快了几个数量级。

  • Python 的动态类型意味着变量数据类型在运行时确定,引入了类型检查和处理的开销,这导致了语言的慢速。

  • Python 使用引用计数来管理内存。虽然对编程很方便,但解释器必须跟踪内存并清理未使用的对象,这会产生额外开销。

  • 现代 CPU 具有多个核心,要最大化性能需要利用这些多个执行线程。虽然 Python 支持多线程,但全局解释器锁(GIL)阻止多个线程同时运行,使大量性能提升未能实现。不过,Python 正在逐步尝试缩小 GIL 的范围,例如在 Python 3.12 中引入了针对每个解释器的 GIL,这意味着各个 Python 解释器不再共享同一个 GIL。

  • 一些如数值计算等操作,在 Python 中可能比 C 或 FORTRAN 等编译型语言慢。

针对其中一些问题有解决方法。例如,性能关键的代码可以用 C 或 C++ 等编译型语言编写,并从 Python 调用。许多机器学习库,如 Numpy、Scipy、TensorFlow 和 PyTorch,就是这样做的。由于这些库是用 C/C++ 实现的,它们还利用 SIMD 指令来改善执行数值计算的性能。

不过,并非所有人都精通 C 语言编写。即使他们能写一些 C,优化以实现最大硬件输出的技能也是极少数人拥有的。诸如 Cython 和 Numba 之类的工具已被开发出来以简化这些问题,但它们无法保证在所有情况下进行优化,也无法针对如今用于部署人工智能应用的各种硬件目标进行优化,比如 CPU、GPU、TPU和定制 FPGA。

后来,Modular 使 Mojo 成为一种更方便的替代方案。它提供了与 Python 类似的相对易于使用的语法,但运行代码的速度快了数千倍。结果是开发人员可以编写快速的 AI 模型,而无需学习 C++ 等复杂技术。

在性能方面,Mojo 提供与 C、Rust 一样快的性能,同时还提供了 Python 的易用性。Mojo 是静态类型的,这可以让编译器能够进一步优化代码,并在编译时执行错误检查。此外,它还支持强大的编译时元编程,允许将通用代码编译成多个由类型参数化的专门版本,类似于其他语言中的泛型,但更强大。

与此同时,Mojo 构建在 MLIR 框架之上,进而可以移植到广泛的硬件设备上,包括 CPU、GPU 和 TPU。这种兼容性使得可以在不同的设备上编译相同的代码而无需修改,使 Mojo 成为构建 AI 应用的优秀选择。

Mojo 开源初起步

截至目前,对于发布不足一年的 Mojo 而言,有数据显示,其已经建立超过 175000 名开发者和 50000 个组织的用户群,可见它的演进速度并不慢。鉴于此次标准库的开源,也有不少用户翘首期盼 Mojo 编译器开源的那一天。







请到「今天看啥」查看全文