专为AI开发的新编程语言Mojo,号称比Python快35000倍

Swift语言创始人Chris Lattner在2021年离开Swift核心团队。他在2022年1月时与Tim Davis共同创立Modular AI,目标是开发人工智能系统开发平台,希望能从根本改进人工智能的程序开发性、可用性、可扩展性以及运算方式。前几天它们正式发布了新编程语言Mojo,号称在在执行特定的演算法,Mojo甚至能够比Python快35,000倍。

官方网站:https://www.modular.com/mojo

Mojo官方手册:https://docs.modular.com/mojo

[t-danger icon='']Mojo[/t-danger]

Mojo官网提到,该语言同时拥有Python的可用性,以及C语言的高效能。由于Mojo专门为在AI硬件上编程而设计的,例如运行CUDA和其他加速器的GPU,因此运算效能大幅超越Python,在执行特定的演算法,Mojo甚至能够比Python快35,000倍。

Mojo的设计目标是提供高效、易用、安全的AI开发环境。它支持Python API,可以轻松地与现有的Python代码进行集成。此外,Mojo还支持多线程和分布式计算,使得在大规模数据处理时可以更好地发挥其优势。Mojo是Modular AI的一个正式的专案,所有Modular核心也都以Mojo编写,官方表示,这也是Modular模组化推理引擎高效能和高可移植性的原因。

[t-danger icon='']Mojo优劣[/t-danger]

在 MLIR 上,Mojo 代码可以访问各种 AI 调优的硬件功能,例如 TensorCores 和 AMX 扩展。因此,对于某些特定算法类型,它的速度要远远超过原始 Python——它在 AWS r7iz.metal-16xl 上运行 Mandelbrot 算法只需 0.03 秒,而 Python 3.10.9 则需要 1027 秒(约 17 分钟)。

一、优势

  • 高效的代码生成和执行速度:Mojo的代码生成和执行速度非常高,这是它成为AI开发语言的重要原因之一。在大规模数据处理时,Mojo可以比Python更快地完成计算,从而提高开发效率和性能。
  • 兼容Python API:Mojo支持Python API,这意味着可以使用现有的Python代码并集成到Mojo中。这对于那些已经有大量Python代码库的开发人员来说,是一个非常有吸引力的特点。同时,Mojo还支持Python的科学计算库,如NumPy、SciPy和Pandas等,使得开发人员可以轻松地迁移现有的Python项目。
  • 多线程和分布式计算支持:Mojo支持多线程和分布式计算,这使得它可以在大规模数据处理时更好地发挥其优势。开发人员可以利用Mojo的多线程和分布式计算功能,使得计算更加并行化和高效。
  • 安全性和易用性:Mojo在安全性和易用性方面也表现出色。Mojo的类型系统非常强大,能够防止许多常见的编程错误。同时,Mojo的语法简单、易学,使得开发人员可以更快地掌握它。

二、劣势

  • 还处于早期阶段,还没有完全兼容 Python 语法和运行时,也没有开源代码,因此缺乏社区的支持和反馈,也难以评估其真实的效果和潜力。
  • 它可能会遇到编程语言设计上的大坑,比如如何平衡 Python 的动态性和 C 的静态性,如何把 Rust 的所有权、生存期和借用检查融入 Python 的语法,如何处理部署时对 Python 包的依赖等
  • 它可能会面临激烈的竞争,因为 Python 生态已经有很多成熟的 AI 框架和编译器,比如 PyTorch、TensorFlow、Jax、Codon 等,它们也在不断地优化性能和扩展功能,mojo 语言要想脱颖而出并不容易。
  • 它可能会引起一些 Python 用户的抵触或反感,因为它可能会让他们觉得自己的原生语言不够好或者需要被取代,也可能会让他们觉得 mojo 语言太复杂或者不符合他们的习惯。

三、其他

Modular AI提到,Python虽然是一个强大的语言,也支持各种人工智能研究,但可扩展性是Python最终无法在生产中使用的主要问题,Python难以被用在大型工作负载,也无法在边缘装置中顺畅执行,生产环境的人工智能终究还是需要使用C++以及CUDA等其他语言。这样的状况导致人工智能软件环境碎片化,降低人工智能应用从研究阶段,进入生产阶段的速度,进而减少了人工智能开发人员的生产力。

Mojo建立在现代编译技术之上,其具有类型设计,大幅增加程序的执行速度,也让开发者能够定义零成本抽象,并且拥有类似Rust语言的记忆体安全性。特别的是,Mojo还拥有自动调优(Autotuning)编译时元编程(Compile-Time Metaprogramming)功能。自动调优会在程序编译过程,自动优化程序性能,而编译时元编程则允许开发者在编译阶段生成代码,而不是在运行时生成代码。

受益于Modular的高效能Runtime,且充分应用MLIR(Multi-Level Intermediate Representation)技术,Mojo能够直接操作各种AI硬件,像是存取执行线程、TensorCores和AMX扩充等低阶硬件功能,官方提到,在执行像是Mandelbrot这类演算法,Mojo比Python快35,000倍。

即便Mojo与Python有不少区别,但是官方称使用Mojo就像是Python一样。开发者可以在Mojo上使用Python的函式库,包括Numpy、Pandas、Matplotlib,甚至是现有的其他Python代码。 Mojo非常灵活,开发者不需要重新编译框架或是编写任何C++或CUDA代码,就拥有执行核心融合(Kernel Fusion)、图重写(Graph Rewrites)以及形状函数(Shape Functions)等能力。

[t-danger icon='']结语[/t-danger]

人工智能非营利研究组织Fast.ai创办人,同时也是Modular AI顾问的Jeremy Howard解释,当Mojo最终完成时,将相当于Python的严格超集,他认为,Mojo可能是近十年最大的编程语言进步。目前的 Mojo 仍有一定缺失,比如包管理和构建系统——这也是 Python 社区长久以来一直努力解决的需求。另外,Mojo 语言尚未指定开源许可,但相信只是时间问题。

(文中一些观点来源:知乎IThome

我们将24小时内回复。
取消