科技领域日新月异。最新的焦点是Mojo编程语言。它的目标是提高基于Python的项目执行速度,为开发者提供媲美C语言的速度体验。
Python是顶级的编程语言之一。它功能强大且易于学习,为编程初学者打开了一扇通往计算机科学的大门。
同时,对于有经验的开发者来说,它也是创建复杂应用程序的理想选择。然而,Python最显著的缺点之一就是其执行速度。 这正是Mojo的用武之地。
本文将介绍Mojo及其与Python生态系统的关系。 让我们开始吧。
什么是Mojo?
Mojo是一种现代高级编程语言。它拥有直观的设计,可以帮助开发者快速创建应用程序。此外,它旨在弥合生产和研究之间的差距,允许用户使用Python的语法和生态系统,同时使用元编程功能和系统编程。
它大量借鉴了Rust的优点,并为Python生态系统提供了更快的执行速度。从技术上讲,Mojo是Python的超集,可以直接访问Python的功能。
Mojo背后的团队来自人工智能基础设施公司Modular。 这也意味着它是一种面向AI开发者的编程语言。除了Mojo编程语言外,他们还引入了Inference Engine,它可以让开发者改进工作流程,扩展AI产品并减少推理延迟(稍后会详细介绍)。
据Modular首席执行官Chris Lattner称,Mojo比Python快35,000倍。他也是编程语言快速发展的幕后推手。Mojo之所以能实现如此高的速度提升,得益于其使用LLVM编译器工具链和MILR(多级中间表示概述)编译器基础架构。
Mojo编程语言的目标包括:
- 与Python生态系统完全兼容。
- 使开发者能够将部分代码部署到加速器。
- 低级控制,以确保可预测的性能。
- 确保没有生态系统碎片化。
要尝试Mojo,你需要通过其基于云的托管环境Mojo Playground使用它。 它会要求你登录,然后你就可以获得一个工作环境!
为什么我们需要Mojo?
Mojo背后的核心理念是通过提供一种跨堆栈工作的编程语言来统一ML/AI基础设施。此外,它通过消除编写MLIR代码的需求来确保易用性。
根据Modular的说法,Mojo将提供可扩展的创新编程模型。通过这种方式,人工智能领域的用户会发现使用加速器和异构系统变得非常容易。
从技术角度来看,它使得Mojo成为一种支持编译时元编程的语言。它还支持其他功能,例如编译过程中的缓存,自适应编译技术等。这些功能在其他编程语言中是不常见的。
如果您想了解更多关于Mojo理念的信息,请查看Modular的文档 – 为什么选择Mojo🔥
Mojo编程语言的特点
在本节中,我们将探讨Mojo编程语言的主要特性。
#1. 与Python完全兼容
Mojo的目标是与Python生态系统协同工作,而不是与之竞争。这一点可以从Mojo使用与Python提供的相同函数、库和特性中看出来。因此,你可以在Mojo中使用任何你想要的Python库。
要导入库,你需要使用以下代码:
from PythonInterface import Python
完成导入后,你可以使用 Python.import_module()
导入任何Python库。
例如,要导入numpy,你需要使用以下代码行。
let np = Python.import_module("numpy")
在Python中,你需要执行”import numpy as np”。
导入后,你就可以使用它来创建数组、进行计算等。
array = np.array([1, 2, 3]) print(array)
同样,你可以导入matplotlib.pyplot,或者在Mojo中创建绘图。
这是我在Mojo Playground中运行代码时的样子。
如果你想尝试代码,请从下面复制粘贴。
from PythonInterface import Python let np = Python.import_module("numpy") array = np.array([1, 2, 3, 4, 5]) print(array)
#2. MILR
MILR代表多级中间表示。 Mojo支持MILR。反过来,这使开发者能够获得一套全新的高级功能。这些功能包括AI硬件单元、线程和向量。
MILR由于并发性而提高了性能,使得Mojo比Python更快。此外,它还允许开发者利用多核。
#3. 所有权和借用检查器
Python的内存管理是安全的。它使用垃圾回收器,因此程序员需要确保代码不会遇到竞争条件。
Mojo与Rust类似,实现了严格的所有权和借用检查模型。目前,它已部分实施。使用该模型背后的想法是提高并发性并提供出色的内存管理。
所有权模型还确保了线程安全的方法,这是提供出色的并发支持的理想选择。这样,程序就不会遇到竞争条件。此外,借用检查器确保在运行时始终检查变量。
#4. 零抽象成本
Mojo提供零成本抽象,允许开发者完全控制存储。在这里,程序员可以对结构进行内联分配值。
#5. 自动调整
Mojo还提供自动调整功能。这可以确保根据目标硬件自动设置参数的最佳值。
自动调整消除了根据目标硬件手动优化代码的需求。
速度:Mojo语言有多快?
Python是一种旨在易于使用和维护的高级编程语言。不幸的是,与其他解决方案或编程语言相比,这使得它的速度较慢。
在Modular的测试中,他们发现Mojo的速度提升了35000倍。他们使用了Mandelbrot算法,并在一个配备了英特尔至强处理器的AWS实例上运行了该算法。他们测试了PYPY,SCALAR C++和MOJO以及Python。结果非常惊人,你可以在下面看到结果。
资料来源:modular.com
要了解更多关于Mojo速度的信息,请查看Julilang社区的这篇文章。
Modular推理引擎 – 以低成本运行AI模型
Modular还在开发一种模块化推理引擎,可以降低在生产环境中运行AI模型的成本。Mojo默认支持Modular Inference Engine。它使团队能够简化工作流程。 它还可以让开发者减少推理延迟,从而轻松扩展AI产品。
此外,开发者无需更改模型即可使用该引擎。加载后,它可以增强PyTorch和TensorFlow模型,能够在广泛的硬件支持下运行高性能。
它会取代Python吗?
Mojo是一种新兴的语言,看起来很有发展潜力。因此,它需要时间才能被数据科学家或编程语言等目标受众所接受。确实,它为AI爱好者和学习者解决了一些具体问题。但是,也有许多类似的解决方案可以提高Python的速度。 例如,你会发现Jax、Codon和Julia——一种面向数据科学的语言。
因此,可能会发生两种情况。 一种情况是,它的功能呈指数级增长,并且社区接纳了它。 另一种结果是,它成为一种利用Python库和模块化推理引擎的临时性编程语言。
那么,Mojo会取代Python吗? 只有时间才能证明。
接下来,看看有用的Python单行代码,以简化常见任务。