写点什么

Mojo 语言:AI 的新编程语言

作者:3D建模设计
  • 2023-09-08
    湖北
  • 本文字数:2671 字

    阅读完需:约 9 分钟

Mojo语言:AI的新编程语言

推荐:使用NSDT场景编辑器快速搭建 3D 应用场景

Mojo 的主要功能包括:

  • 类似 Python 的语法和动态类型使 Python 开发人员易于学习 Mojo,因为 Python 是现代 AI / ML 开发背后的主要编程语言。

  • 使用 Mojo,您可以导入和使用任何 Python 库,确保与 Python 的完全互操作性。

  • 它支持实时 (JIT) 和提前 (AOT) 编译。Mojo 编译器应用高级优化,甚至 GPU / TPU 代码生成。

  • Mojo 可以完全控制内存布局、并发性和其他低级细节。

  • 通过结合动态和系统语言功能,Mojo 遵循统一的编程模型,该模型对初学者友好且可扩展,适用于基于加速器的各种用例。

Mojo 目前是一种不完整的语言,不向公众开放。该文档面向具有系统编程经验的开发人员。

然而,随着语言的发展,他们打算让它变得更加用户友好,并且初学者程序员更容易访问。

Mojo Lang 入门

Mojo 不是公开的,但您可以通过注册模块化产品来访问 Mojo Playground。注册时,请确保您在模块化产品兴趣中选择 Mojo。

图片来自模块化:立即开始

注册后,您将收到一封电子邮件,允许您在一小时内访问 Mojo 游乐场。Mojo Playground 是一个 JupyterHub 环境,用户可以在其中访问相同的 Mojo 标准库。但是,用户有一个私有卷来编写和保存他们的 Mojo 程序。

图片来自 Mojo Playground

当 Mojo 开源并公开可用时,您可以从终端运行 Mojo 程序。它既是解释语言,也是编译语言。

您可以保存文件或 .test.mojotest.🔥

是的,您可以使用火表情符号保存文件。如您所见,我们创建了一个简单的 Mojo 文件并在终端中运行它。test.🔥


Mojo Lang 和 Python

Mojo 是 Python 的超集,其语法与 Python 几乎相似。它还引入了新功能,如、、、,并定义变量、结构和函数以使其性能更高。letvarstructfn

let 和 var 声明

在为 Mojo 编写代码时,您可以使用关键字声明特定变量,这类似于您在 Rust 中声明变量的方式。letvar.

关键字表示变量不可更改,而表示可以修改。这通过在编译时强制实施限制来提高性能。letvar

结构类型

Mojo 使用的关键字类似于 Python 的。Python 中的类是动态且缓慢的,类型更类似于 C/C++ 和 Rust。它们具有在编译时确定的固定内存布局,针对计算机本机性能对其进行优化。structclassstruct

FN 定义

使用定义函数将创建一个 Python 函数,具有与 Python 相关的所有动态性和灵活性。另一方面,关键字定义了具有更多限制的 Mojo 函数。这意味着默认情况下参数是不可变的,并且需要显式键入和声明局部变量等。deffn

语法比较示例

在示例中,我们将创建一个 Mojo 函数,该函数将添加两个参数。

要运行 Mojo 函数,请执行以下操作:

  • 必须为函数的参数指定类型。

  • 必须使用箭头声明返回类型。

使用 Python 编程时,我们可以选择定义函数而无需显式声明参数和输出类型。它使过程更加动态和直接。但是,相比之下,Mojo 的功能比.fndef

Matplotlib in Mojo

Mojo 不仅增强了性能,还使开发人员能够导入任何 Python 库并将其与 Mojo 函数集成。通过使用 CPython 解释器,Mojo 无缝支持当前可用的所有 Python 模块。

在下面的示例中,我们导入并可视化了线图。有关高级示例,请查看 Mojo 中的 Mandelbrotmatplotlib.pyplot


人们普遍认为,Python 是 AI/ML 最流行的语言。 参加机器学习科学家与 Python 职业轨道将为你提供必要的 Python 技能,以获得机器学习科学家的工作。

与 Mojo Lang 一起编程

Mojo 是 Python 的超集,就像 TypeScript 是 JavaScript 的超集一样。除了新的关键字和函数,任何 Python 程序员都可以理解并使用它构建程序。

在这一部分中,我们将介绍使其高性能和安全的 Mojo 编程功能。

低级编程

Mojo 是一种高级编程语言,它通过 MLIR(多级中间表示)提供对低级基元的访问,这是一种可扩展的中间表示格式。这使得 Mojo 程序员能够实现零成本抽象,同时仍然利用强大的编译器优化。

切片优化和自动调谐

Mojo 有一个内置的平铺优化工具,通过将计算划分为适合快速缓存内存的较小平铺来改善缓存局部性和内存访问模式。

Mojo 中的自动调谐模块提供了用于自适应编译的接口。它通过自动调整代码来帮助您找到目标硬件的最佳参数。

所有权和借款

Mojo 使用所有权和借用系统来管理内存,无需垃圾收集器并确保一致的运行时性能。Mojo 的编译器通过静态分析分析变量生存期,并在不再使用数据时立即释放数据。

手动内存管理

Mojo 还提供了一个使用类似于 C++ 和 Rust 的指针的手动管理系统。

魔术中的矩阵乘法

矩阵乘法示例中,我们观察到将 Python 代码导入 Mojo 导致性能提高了 17.5 倍

通过在 Python 实现中引入类型,性能进一步提高了 1866.8 倍

此外,他们还利用矢量化、并行化、平铺和自动调谐等技术实现了 14050.5 倍的性能提升。这太棒了。即使是 Julia 和 Rust 也无法提供这种级别的优化。

魔郎代码示例

在这个汽车示例中,我们将创建一个使用 Mojo 语法的类。CAR

  1. 我们将使用 创建一个类。CARstruct

  2. 使用 启动突变变量。var

  3. 设置变量类型。“速度”是 Float32,“模型”是字符串。字符串不是内置类型,因此我们必须导入它。

  4. 我们将创建两个类似于 Python 但使用该函数的初始化函数。一个只有车速,另一个只有车速和车型。fn

  5. 之后,使用 300 速度创建一个对象。CAR

  6. 打印汽车模型。


正如你可能观察到的,Mojo 的编程风格和功能与 Python 相似。它作为 Python 的扩展,增强了其性能和内存管理功能。借助 Mojo,您可以快速训练模型,实现更快的模型推理(即使使用 CPU),在几秒钟内分析海量数据集,并实时模拟。

您可以查看模块化文档上的所有代码示例,并在操场上的 Jupyter 笔记本上运行它们。

Mojo 会取代 Python 吗?

目前,由于 Mojo 的早期开发阶段和缺乏必要的功能,很难确定 Mojo 作为通用编程语言的潜力。但是,它可能有能力在高性能至关重要的机器学习和 AI 应用程序中超越 Python。

尽管如此,Mojo 不太可能很快完全取代 Python 在数据科学和其他软件开发领域的领导地位。

Mojo 专为机器学习应用程序而设计,不适用于其他领域,例如 Web 后端、流程自动化或 Web 设计。虽然开发人员将来可能会扩展其功能,但 Mojo 目前的重点是针对机器学习应用程序进行优化。

此外,值得注意的是,与 Python 相比,Mojo 的模块和库选择有限,Python 受益于庞大的开发人员社区不断为 AI 和数据科学创建新的和改进的工具。Mojo 可能需要数年时间才能赶上 Python 的发展水平。

通过参加 DataCamp 的生成式 AI 概念课程,了解如何开发生成 AI 模型以及它们将如何影响社会向前发展。

结论

总之,虽然 Mojo 作为一种为 AI / ML 量身定制的快速,与 Python 兼容的语言显示出前景,但它不太可能在不久的将来完全取代 Python。Python 受益于庞大的生态系统、社区以及数据科学和 ML 领域的根深蒂固。充其量,Mojo 可能会成为 Python 的补充语言,用于速度至关重要的地方。


原文链接:Mojo语言:AI的新编程语言 (mvrlink.com)

发布于: 刚刚阅读数: 4
用户头像

还未添加个人签名 2023-04-14 加入

还未添加个人简介

评论

发布
暂无评论
Mojo语言:AI的新编程语言_编程_3D建模设计_InfoQ写作社区