面向 AI 开发人员的 Mojo 语言

科技领域日新月异。最新的焦点是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单行代码,以简化常见任务。