Mojo语言适用于AI开发者 – 比Python更快
科技世界一直在变化。最新加入的是mojo编程语言。它承担了提高基于python的项目执行速度的任务,为开发人员提供了与c类似的速度。
python是最受欢迎的编程语言之一。它是一种多用途、易于学习的编程语言,为新学习者提供了进入编程/计算机科学的门户。
此外,它也是对于能够使用它创建复杂应用程序的有能力的开发人员来说是一种优秀的编程语言。然而,python最大的缺点之一是其执行速度。这就是mojo的用武之地。
本文介绍了mojo及其与python生态系统的关系。让我们开始吧。
什么是mojo?
mojo是一种高级现代编程语言。它提供了直观的设计,帮助开发人员快速创建应用程序。此外,它旨在通过允许用户使用元编程功能和python的语法和生态系统进行系统编程,弥合生产和研究之间的差距。
它大量借鉴了rust,并为python生态系统提供了快速的执行速度。从技术上讲,mojo是python的超集,让你可以访问。
mojo背后的团队来自modular,这是一家ai基础设施公司。这也意味着它是为ai开发人员开发的一种编程语言。除了mojo编程语言,他们还推出了interference engine,它能够帮助开发人员改进工作流程、扩展ai产品并减少推断延迟(稍后会详细介绍)。
根据modular的首席执行官chris lattner的说法,mojo比python快35,000倍。他还参与了swift编程语言的开发。这种速度提升是因为mojo如何使用llvm编译器工具链和milr(多级中间表示概述)编译器基础设施。
mojo编程语言的目标包括:
- 与python生态系统完全兼容。
- 使开发人员能够将代码子集部署到加速器。
- 低级控制,以确保可预测的性能。
- 确保没有生态系统碎片化。
要尝试mojo,您需要通过它们的基于云的托管环境,即mojo playground使用它。它会要求您登录,然后您就可以获得一个工作环境了!
为什么我们需要mojo?
mojo背后的核心思想是通过提供跨栈工作的编程语言来统一ml/ai基础设施。此外,它通过消除编写mlir代码的需要来确保易用性。
根据modular的说法,mojo将提供一种可扩展和创新的编程模型。通过这样做,ai领域的用户将发现使用加速器和异构系统变得容易。
从技术上讲,这使mojo成为一种支持编译时元编程的编程语言。它还支持其他功能,例如编译流程中的缓存、自适应编译技术等。这些功能在其他编程语言中都不存在。
如果您想了解更多关于mojo哲学的内容,请查看modular docs – why 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算法,并在一台由intel xeon处理器驱动的aws实例上运行它。他们测试了pypy、scalar c++、mojo和python。结果非常快速,您可以在下面看到结果。
要了解有关mojo速度的更多信息,请查看julialang社区上的这篇文章。
modular推理引擎-便宜运行ai模型
modular还正在开发一种modular推理引擎,可以更便宜地运行生产中的ai模型。mojo默认支持modular推理引擎。它使团队能够简化工作流程。它还允许开发人员减少推理延迟,从而简化了扩展ai产品的过程。
此外,开发人员无需更改其模型即可使用该引擎。一旦加载,它可以为高性能运行,并具有广泛支持的硬件,例如pytorch和tensorflow模型。
它会取代python吗?
mojo是新的。它看起来很有前途。因此,它需要时间来吸引目标受众,如数据科学家或编程语言。是的,它可以解决ai爱好者和学习者的特定问题。然而,存在许多类似的解决方案来改善python的运行速度。例如,您会发现jax、codon和julia等面向数据科学的语言。
所以,可能会有两种情况发生。首先,它在功能方面呈指数增长,并被社区采用。另一种结果是,它成为一种使用python库和modular推理引擎的特定编程语言。
那么,mojo会取代python吗?只有时间能告诉我们。
接下来,查看有用的python一行代码,以简化常见任务。