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

39440214f4c3b37d6a2503e450efd9dc.png

架构师大咖

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

公众号

该公众号已被封禁

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。

964566270f492f92c2740cb4e6efc957.png

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

1d051762e7eda73f05ec6cc91a718b16.png

bf4200e536c534f1c9e3622e1187389a.png

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 拉取请求允许外部贡献。

a7da5b672e0d506aeac3ad2036b80015.png

遵循 Apache 2 LLVM 许可

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

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

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

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

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

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

e33a11175dbc2da29308a179b22a8846.png

对标 Python?也许搞错了

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

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

ef8e1811fd05df4ac47dd68799d92d79.png

  • 同年 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 倍。

    c727a64517399d5d732062c57bdc409a.png

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

3499a20af6c21795cf9e38f2bbc82294.png

其实对于这个问题,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 应用的优秀选择。

768753a47de19e365ddf06fc0fa0d4a5.png

Mojo 开源初起步

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

此次,Modular 团队虽未明说,但是其在公告中透露,“我们认为这是我们开源之旅的一个重要起点,而不是终点。当我们与社区一起学习时,我们逐步发展和迭代我们的开发和贡献流程。随着时间的推移,我们将开放更多代码,包括更多 Mojo 和更广泛的 MAX 平台的部分内容。”

6868a16b87e3359e21ea6b1c4ff0abb1.png

AI 时代是否还有“卷”编程语言的必要?

最后,在提及 Mojo 语言之际,也有开发者陷入怀疑之中,发出「AI 时代究竟是否还有必要学习编程语言」的灵魂一问。

回看过往一段时间,3 月初,百度 CEO 李彦宏说,以后不会存在程序员了,只要会说话就能具备程序员能力,而未来的编程语言,只会剩下两种,一种叫英文,一种叫中文。

英伟达 CEO 黄仁勋在对孩子的最新寄语中说,生成式 AI 的未来发展大幅降低了学习编程的意义,人类应该专注于更重要的技能,如生物学、教育学、制造业或农业。我们的工作就是创造计算技术,让所有人都不需要编程。而且编程语言可以普及成为人类的语言,现在世界上每个人都是程序员,这就是人工智能的奇迹。

就在昨日阿里云官宣了 AI 员工——通义灵码,工号 AI 001 号。它擅长 Java、Python、Go、JavaScript、TypeScript、C/C++、C# 等 200 多种编程语言,可以辅助程序员写代码、读代码、查 Bug、优化代码等。

e285cf70c3a61370b95ba1482387523f.png

所以,学编程语言究竟是否还有必要,尤其是 Mojo 这样的新语言。带着这样的问题,我们也询问了 ChatGPT,它给出的答案是:

尽管 AI 工具在编程领域的发展和应用可以提供帮助,但程序员仍然需要学习编程语言。以下是几个原因:

22f9b0e96ea9db34042dab54f41d6ca5.png

基于此,你如何看待新出现的开源 Mojo?以及 AI 时代的编程语言是否有必要上手?欢迎留言分享。

参考:

https://www.modular.com/blog/the-next-big-step-in-mojo-open-source

https://github.com/modularml/mojo/tree/nightly?tab=readme-ov-file

https://codeconfessions.substack.com/p/mojo-the-future-of-ai-programming

757d91f5879f30abcb5a5052abe2f640.png

Python入门到精通

Python入门到精通:人生苦短,我用Python!Python每日推送、Python教程、Python资料、Python视频、Python项目、Python学习等。

公众号

该公众号已被封禁

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值