Mojo:比 Python 快 35000 倍的 AI 编程语言

简介: Mojo是一门刚刚发布的面向 AI 开发人员的编程语言。Mojo 被设计为 Python 的超集,所以如果你已经掌握了 Python,学习 Mojo 会很容易。关键是 Mojo 将 Python 的易用性与 C 语言的性能相结合,速度比 Python 快35000倍!让你鱼与熊掌兼得。如果您对 AI 感兴趣并且已经了解 Python,那么 Mojo 绝对值得一试。 这篇文章将带给你有关 Mojo 的所有信息。

Mojo:比 Python 快 35000 倍的 AI 编程语言

Mojo是一门刚刚发布的面向 AI 开发人员的编程语言。

Mojo 被设计为 Python 的超集,所以如果你已经掌握了 Python,学习 Mojo 会很容易。关键是 Mojo 将 Python 的易用性与 C 语言的性能相结合,速度比 Python 快 35000 倍!让你鱼与熊掌兼得。

如果您对 AI 感兴趣并且已经了解 Python,那么 Mojo 绝对值得一试。 这篇文章将带给你有关 Mojo 的所有信息。

400efe31cf1f430a946cecbba504f1bf (1).png

既生Python,何生Mojo?

Python 的简洁和强大使其成为数据科学、机器学习和人工智能等领域的首选语言。 它有大量的包,几乎涵盖所有场景和功能,对任何类型的开发者都非常有用。但对于需要极致性能的场景,Python 仅充当胶水语言,绑定到 C、C++ 和其他性能更好的语言上。

这促成了 numpy 和 TensorFlow 等库的诞生。 然而,这样做存在一个缺点:构建这些库非常复杂,需要对 CPython 的内部结构有底层的了解,且需要扎实的 C/C++ 知识等。

根据 Mojo 文档,Python 带来的问题更深层次,尤其是对 AI 领域的影响。

仅靠 Python 无法解决应用人工智能系统所需的所有问题,这就是 Mojo 的诞生理由。 Mojo 是一种结合了 Python 的易用性和 C 语言性能的编程语言。堪称鱼与熊掌兼得,两全其美的!

但 Mojo 并不是一个凭空冒出来的项目。 事实上,Mojo 来自一家名为 Modular 的公司,该公司由 Chris Lattner 共同创立,他是 Swift 编程语言和 LLVM 的创建者。 这就是为什么我认为这个项目值得关注的原因。 现在让我们看看 Mojo 的一些绝佳功能。

Mojo的特性

Mojo 附带了许多开箱即用的有趣功能,下面列举几个我认为很酷的功能特性。

1. Mojo 被设计为 Python 的超集

Mojo 旨在与 Python 生态系统完全兼容。

这意味着如果您是 Python 程序员,您可以轻松地上手 Mojo,因为这两种编程语言有许多共同的功能、特性和库。

Mojo 中还提供了 numpy、pandas 和 matplotlib 等库。 下面代码演示了如何使用 Mojo 完成 matplotlib 绘图。

def make_plot(m: Matrix):
    plt = Python.import_module("matplotlib.pyplot")
    fig = plt.figure(1,[10,10 * yn // xn],64)
    ax = fig.add_axes([0.0,0.0,1.0,1.0],False,1)
    plt.imshow(image)
    plt.show()

make_plot(compute_mandelbrot())

目前 Mojo 仍处于非常早期的阶段,因此它仍然缺少 Python 的许多功能(例如,它还不支持类)。 希望在未来的更新中,Mojo 能与 Python 完全兼容。

2. 强类型检查

Mojo 利用类型来实现更好的性能和错误检查。

def sort(v: ArraySlice[Int]):
    for i in range(len(v)):
        for j in range(len(v) - i - 1):
            if v[j] > v[j+1]:
                swap(v[j], v[j+1])

尽管你仍然可以像 Python 一样使用灵活的类型,但 Mojo 建议使用严格的类型检查。 这可以使你的代码更加可预测、更易于管理也更安全。

3. 内存所有权和借用检查器

Mojo 支持 owned 参数约定,该约定用于想要独占某个值的所有权的函数。

def reorder_and_process(owned x: HugeArray):
    sort(x)            # 原地更新
    give_away(x^)    # 转移所有权
    print(x[0])        # 错误:x所有权已经移除

这里的概念跟 Rust 类似,相信 Mojo 是借用了 Rust 的部分内存管理思想,提升内存安全性。

4. 自动调节

Mojo 内置自动调整功能,可自动帮你找到参数的最佳值,以便最大化利用目标硬件的性能。

def exp_buffer[dt: DType](data: Arrayslice[dt]):
    # 搜索最佳向量长度
    alias vector_len = autotune(1,4,8,16,32)
    # 用自动调节的最佳值作为矢量化长度
    vectorize[exp[dt, vector_len]](data)

5. Mojo 利用 MLIR

通过使用多级中间表示 (MLIR) ,Mojo 开发人员可以充分利用向量、线程和 AI 硬件单元。这有助于 Mojo 实现出色的性能,因为与单线程执行的 Python 不同,Mojo 可以跨多个内核进行并行处理。

936664d038b249b8bc5632e353370d59 (1).png

这就是 Mojo 比 Python 快 35000 倍的原因之一。

语言 时间 倍数
Python 3.10.9 1027s 1倍
PyPy 46.1s 22倍
Scalar C++ 0.20s 5000倍
Mojo 0.03s 35000倍

如何使用 Mojo

Mojo 仍在开发中,不过你可以在基于 JupyterHub 的 Playground 上试用它。 要试用 Mojo,请访问此网站进行注册。注意,注册时在“Modular Product Interest”这栏请选中 Mojo 。

祝大家编程愉快!

目录
相关文章
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
当语言遇见智慧火花:GPT家族历代模型大起底,带你见证从平凡到卓越的AI进化奇迹!
【10月更文挑战第6天】随着自然语言处理技术的进步,GPT系列模型(Generative Pre-trained Transformers)成为该领域的明星。从GPT-1的开创性工作,到GPT-2在规模与性能上的突破,再到拥有1750亿参数的GPT-3及其无需微调即可执行多种NLP任务的能力,以及社区驱动的GPT-NeoX,这些模型不断进化。虽然它们展现出强大的语言理解和生成能力,但也存在如生成错误信息或偏见等问题。本文将对比分析各代GPT模型的特点,并通过示例代码展示其部分功能。
138 2
|
24天前
|
IDE 数据挖掘 开发工具
Python作为一种广受欢迎的高级编程语言,以其简洁的语法和强大的功能吸引了众多初学者和专业开发者
Python作为一种广受欢迎的高级编程语言,以其简洁的语法和强大的功能吸引了众多初学者和专业开发者
36 7
|
18天前
|
存储 开发者 Python
Python 中的数据结构与其他编程语言数据结构的区别
不同编程语言都有其设计理念和应用场景,开发者需要根据具体需求和语言特点来选择合适的数据结构
|
20天前
|
人工智能 Ubuntu 语音技术
ebook2audiobookXTTS:开源电子书转有声书 AI 工具,支持 16 种语言
ebook2audiobookXTTS 是一款开源的 AI 工具,能够将电子书转换为有声书,支持多种电子书格式和 16 种语言。该工具利用 Coqui XTTS 技术实现高质量的文本到语音转换,并提供命令行、Web 界面和 Docker 容器等多种使用方式。
48 3
ebook2audiobookXTTS:开源电子书转有声书 AI 工具,支持 16 种语言
|
6天前
|
Unix 编译器 C语言
[oeasy]python052_[系统开发语言为什么默认是c语言
本文介绍了C语言为何成为系统开发的首选语言,从其诞生背景、发展历史及特点进行阐述。C语言源于贝尔实验室,与Unix操作系统相互促进,因其简洁、高效、跨平台等特性,逐渐成为主流。文章还提及了C语言的学习资料及其对编程文化的影响。
17 5
|
27天前
|
存储 人工智能 搜索推荐
Memoripy:支持 AI 应用上下文感知的记忆管理 Python 库
Memoripy 是一个 Python 库,用于管理 AI 应用中的上下文感知记忆,支持短期和长期存储,兼容 OpenAI 和 Ollama API。
86 6
Memoripy:支持 AI 应用上下文感知的记忆管理 Python 库
|
16天前
|
人工智能 JSON 自然语言处理
智能化AI工具-语言翻译与本地化
在全球化发展的背景下,语言翻译与本地化需求日益增长。无论是跨境电商、国际合作,还是本地化应用开发,都需要高效、准确的翻译解决方案。阿里云通义千问作为一款强大的大语言模型,不仅具备出色的自然语言理解能力,还能够在多语言翻译和本地化场景中发挥重要作用。本博客将详细介绍如何基于阿里云通义千问开发语言翻译与本地化工具,包括产品介绍、程序代码以及阿里云相关产品的具体使用流程。
51 10
|
12天前
|
存储 人工智能 并行计算
【AI系统】算子开发编程语言 Ascend C
本文详细介绍了昇腾算子开发编程语言 Ascend C,旨在帮助开发者高效完成算子开发与模型调优。Ascend C 原生支持 C/C++标准,通过多层接口抽象、自动并行计算等技术,简化开发流程,提高开发效率。文章还探讨了并行计算的基本原理及大模型并行加速策略,结合 Ascend C 的 SPMD 编程模型和流水线编程范式,为读者提供了深入理解并行计算和 AI 开发的重要工具和方法。
29 2
|
12天前
|
机器学习/深度学习 人工智能 数据挖掘
AI精通Python365天第1课,揭秘难易度
学习Python能显著提升就业竞争力,实现工作自动化,增强数据分析、机器学习、Web开发等技能,促进跨领域应用和个人成长。无论是职场新人还是资深人士,掌握Python都能带来正向的职业发展和收入增长,同时回馈社会。通过AI辅助学习Python,从基础代码开始实践,逐步提升编程能力,让技术成为个人发展的强大助力。
23 1
|
22天前
|
机器人 计算机视觉 Python
Python作为一种高效、易读且功能强大的编程语言,在教育领域的应用日益广泛
Python作为一种高效、易读且功能强大的编程语言,在教育领域的应用日益广泛
37 5