与 Python 无缝衔接:提速35000倍

简介: 与 Python 无缝衔接:提速35000倍

前言


机器之心报道 编辑:蛋酱、陈萍


它可与 Python 无缝衔接,但克服了很多 Python 的缺点。Jeremy Howard 试用后表示:「Mojo 可能是几十年来最大的编程进步。」


正文


对于全球各地开发者来说,Chris Lattner 这个名字绝对不陌生。
6.png
他曾是许多大型技术项目的领导者,包括 LLVM 编译器基础结构项目、Clang C 和 C++ 编译器、MLIR 机器学习基础结构等编译器技术,以及为苹果生态系统提供支持的程序设计语言 Swift。此外,Chris Lattner 还为 Google Brain 和 TensorFlow 建立和管理了一系列与 AI 相关的编译器、运行时和编程语言团队。

十多年来,Chris Lattner 的职业履历算是相当丰富,变动也算频繁:

  • 2011-2017 年,任苹果开发部高级总监、架构师
  • 2017.1-2017.6,任特斯拉副总裁,负责自动驾驶
  • 2017.8-2020.1,任谷歌 Google Brain 高级总监
  • 2020.1,加入芯片创业公司 SiFive 负责平台工程


2022 年 1 月,Chris Lattner 正式宣布创业,和 Tim Davis 共同建立了「Modular AI」,希望自下而上重建全球 ML 基础设施。在这家新生的公司中,Chris Lattner 以 CEO 身份领导团队。

其实,Chris Lattner 每一次跳槽的选择都颇受关注。对于「Modular AI」,业界也是寄予厚望。

近日,Chris Lattner 的创业之路有了重要动态。这一次,他官宣的是全新的编程语言「Mojo」。

网络异常,图片无法展示
|

「Mojo 结合了 Python 的可用性与 C 的性能,释放了 AI 硬件无与伦比的可编程性和 AI 模型的可扩展性」—— 它与 Python 一样易于使用,但具有 C++ 和 Rust 的性能。此外,Mojo 提供了利用整个 Python 库生态系统的能力。

Mojo 的出世,在 AI 领域迅速引起了热议。Jeremy Howard 试用后,在一篇博客文章中表示,Mojo 可能是几十年来最大的编程进步。

8.png

「感觉编程被颠覆了。」在 Jeremy Howard 的记忆中,上次有这样的感觉,还是他首次上手 Visual Basic v1.0。而在 Mojo 中编写代码,让他重温了这种「神奇」的感觉。


为什么会有 Mojo?


关于「Mojo」这项工作的背景,Chris Lattner 和 Tim Davis 在博客中进行了详细的说明:

机器学习基础设施已经为数十亿美元的商业提供动力,并且正在迅速增长。但是,它要么由硬件团队为特定的设备集合构建,要么是由工业研究实验室构建,许多系统是不兼容技术的集合。 现有的单体系统很难在其最初的领域目标之外进行扩展或通用,这种情况迫使硬件制造商建立自己的技术栈。造成的结果就是,人工智能部署行业是非常分散的,工具链就有几十个,各自有不同的权衡和限制。更重要的是,这些设计模式也因其可用性、可移植性和难以扩展而减缓了创新的步伐。不幸的是,我们也看到,构建和部署这些应用程序的技术复杂性仍然太高。部署人工智能仍然是全栈专家的领域,而最前沿的应用只有那些自己建立 ML 技术的最大科技公司的人可以使用。


大一统的设想注定会失败吗?今天人工智能的现实世界的复杂性是否使得它不可能解决这个问题?

Chris Lattner 并不这么认为。他表示,软件行业会经历周期,我们以前也见过并解决过这样的问题:

20 世纪 90 年代的软件世界有过类似于我们今天看到的人工智能的碎片化问题。当时,C 和 C++ 已经建立起了社区,但却被分散在几十个专有编译器中。每一个都有供应商的扩展、粗糙的边缘、奇怪的边角案例和不完整的实现。当时,构建跨平台的软件是如此困难,以至于推动业界出现了一些工具来帮助开发者应对碎片化,使其更容易安装、构建和配置软件(例如 autoconf)。「GCC」就是其中一员。凭借其对跨平台的支持、良好的性能和稳定性,以及免费性,GCC 在 90 年代获得了巨大的成功。GCC 的成功推动了工具行业的整合浪潮,由此产生的碎片整理使其功能成为事实上的标准,从而带来了一波新的创新。它催化了软件(直接促成了 Linux 等开放源码软件社区的迅速崛起)和硬件(促成了指令集架构和新商业模式的创新)的革命,使前者从零散的 C/C++ 实现中解放出来,使后者不必追赶快速发展的 C/C++ 语言标准。


如今,Mojo 的诞生也承担了这样一份希冀。

当我们创办 Modular 时,我们没有打算建立一种新的编程语言。但是,当我们在建立我们的平台,打算统一世界上的 ML/AI 基础设施时,我们意识到,在整个堆栈中编程太复杂了。另外,我们用手写了很多 MLIR,但并不愉快。 我们想要的是一个创新的、可扩展的编程模型,可以针对加速器和其他机器学习中普遍存在的异构系统。这意味着一种具有强大的编译时元编程的编程语言,整合自适应编译技术,在整个编译流程中进行缓存,以及其他现有语言不支持的东西。尽管加速器很重要,但最普遍的、有时被忽视的加速器之一是主机 CPU。今天,CPU 有很多类似张量核心的加速器块和其他 AI 加速单元,但它们也是专门加速器无法处理的运算的后备力量,如数据加载、前后处理以及与国外系统的集成。因此,很明显,我们不能用一种只与特定处理器一起工作的「加速器语言」来提升人工智能。应用 AI 系统需要解决所有这些问题,我们认为没有理由不通过一种语言来完成。


在这种情况下,Mojo 诞生了。


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


在编程语言领域,Python 可以说是非常受欢迎了。如今,这个领域又迎来一位新的竞争者:Mojo。

Mojo 是一门新的编程语言,其将 Python 的易用性和 C 的性能结合起来,弥合了研究和生产之间的差距。使用 Mojo,用户可以编写比 C 语言更快的可移植代码,并与 Python 生态系统无缝互操作,其目标是成为 AI 研究和生产的理想选择。

我们先看一个示例。下图展示的是 Mojo 与 Python 无缝互操作:

0.gif


Mojo 语言具有以下特点:

首先是可用性和可编程性,只用 Mojo 一种语言就能编写所有东西。例如可以编写 Python、大量低级 AI 硬件程序,而不需要 C++ 或 CUDA。

00.gif


第二是性能,Mojo 解锁了 Python 性能。利用最先进的编译器和异构运行时,Mojo 能够充分利用硬件的全部功能,包括多核、向量单元和加速器单元。在任务不复杂的情况下实现与 C++ 和 CUDA 相当的性能。

000.gif

并行化:Mojo 利用 MLIR,使 Mojo 开发人员能够利用向量、线程和 AI 硬件单元。

此外,根据测试,Mojo 比 Python 快 35000 倍。

0000.png

Mojo 第三个特点是互操作性,可以访问整个 Python 生态系统,如可以访问 Numpy、Matplotlib 以及用户自定义代码:

12.gif


第四个特点是可扩展性。使用预处理和后处理操作就能轻松扩展模型,或者用自定义操作替换其他操作。此外,Mojo 还可以利用核融合、图形重写、形状函数等。

13.gif

模型的可扩展性,Mojo 可以升级模型中的现有操作。

Modular AI 表示,Mojo 仍在开发中,开发者现在可以在 Modular AI 基于 JupyterHub 的 Playground 中试用,用户只需通读教程便可编写自己的 Mojo 代码。

试用地址:https://docs.modular.com/mojo/get-started.html

相关文章
|
7月前
|
Rust 自然语言处理 前端开发
Python潮流周刊#8:Python 3.13 计划将解释器提速 50%!
Python潮流周刊#8:Python 3.13 计划将解释器提速 50%!
80 2
|
7月前
|
开发者 Python
Python 之父爆料:明年至少令 Python 提速 1 倍!
Python 之父爆料:明年至少令 Python 提速 1 倍!
45 0
|
2月前
|
SQL 机器学习/深度学习 数据库
SQL与Python集成:数据库操作无缝衔接
在开始之前,确保你已经安装了必要的Python库,如`sqlite3`(用于SQLite数据库)或`psycopg2`(用于PostgreSQL数据库)。这些库提供了Python与SQL数据库之间的接口。
|
2月前
|
SQL 机器学习/深度学习 数据采集
SQL与Python集成:数据库操作无缝衔接2a.bijius.com
Python与SQL的集成是现代数据科学和工程实践的核心。通过有效的数据查询、管理与自动化,可以显著提升数据分析和决策过程的效率与准确性。随着技术的不断发展,这种集成的应用场景将更加广泛,为数据驱动的创新提供更强大的支持。
|
2月前
|
SQL 机器学习/深度学习 数据库
SQL与Python集成:数据库操作无缝衔接
1. Python与SQL集成的关键步骤 在开始之前,确保你已经安装了必要的Python库,如`sqlite3`(用于SQLite数据库)或`psycopg2`(用于PostgreSQL数据库)。这些库提供了Python与SQL数据库之间的接口。
|
5月前
|
前端开发 JavaScript API
告别‘老司机’时代,AJAX与Fetch API让你的前端与Python后端无缝对接!
【7月更文挑战第14天】前端与后端交互的关键技术是AJAX和Fetch API。AJAX允许不刷新页面更新内容,而Fetch API提供了Promise基
70 0
|
7月前
|
存储 数据采集 NoSQL
使用Python打造爬虫程序之数据存储与持久化:从网络到硬盘的无缝对接
【4月更文挑战第19天】本文探讨了爬虫中的数据存储与持久化技术,包括文本文件存储、数据库(关系型与非关系型)、NoSQL数据库和键值存储,以及ORM框架的使用。根据数据类型、规模和访问需求选择合适存储方式,并注意数据安全、备份和恢复策略。正确选择和应用这些技术能有效管理和利用爬取数据。
|
7月前
|
监控 测试技术 API
自动化测试工具与电脑桌面监控软件的集成:Selenium与Python的无缝整合
在当今数字化时代,软件质量保证是每个软件开发团队都必须面对的重要挑战之一。自动化测试工具和电脑桌面监控软件的结合,为开发团队提供了一种有效的方式来确保软件的稳定性和性能。本文将介绍如何利用Python编程语言中的Selenium库,与桌面监控软件进行无缝整合,以实现对应用程序的自动化测试和桌面监控。
289 5
|
7月前
|
存储 机器学习/深度学习 缓存
加速Python循环的12种方法,最高可以提速900倍
在本文中,我将介绍一些简单的方法,可以将Python for循环的速度提高1.3到900倍。
269 1
|
缓存 自然语言处理 并行计算
Python 提速大杀器之 numba 篇
你是不是曾经有这样的苦恼,python 真的太好用了,但是它真的好慢啊(哭死) ; C++ 很快,但是真的好难写啊,此生能不碰它就不碰它。老天啊,有没有什么两全其美的办法呢?俗话说的好:办法总是比困难多,大家都有这个问题,自然也就有大佬来试着解决这个问题,这就请出我们今天的主角: numba
1081 0
Python 提速大杀器之 numba 篇