编译器大佬Chris Lattner全新编程语言「Mojo」:兼容Python核心功能,提速35000倍

简介: 编译器大佬Chris Lattner全新编程语言「Mojo」:兼容Python核心功能,提速35000倍


编辑:蛋酱、陈萍

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


对于全球各地开发者来说,Chris Lattner 这个名字绝对不陌生。

他曾是许多大型技术项目的领导者,包括 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 可能是几十年来最大的编程进步。

「感觉编程被颠覆了。」在 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 无缝互操作:


Mojo 语言具有以下特点:

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


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

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

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

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


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

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

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

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

参考链接:https://www.modular.com/blog/the-future-of-ai-depends-on-modularityhttps://www.modular.com/mojohttps://www.fast.ai/posts/2023-05-03-mojo-launch.html

相关文章
|
14天前
|
程序员 Python
【随手记】python中各类下划线的作用与功能
【随手记】python中各类下划线的作用与功能
30 0
|
16天前
|
人工智能 大数据 数据挖掘
不只是程序员的专利:Python为何成为全民编程语言?
**摘要:** Python火出程序员圈子,源于电子化、数字化、智能化趋势。电子化时代,数据积累推动数字化进程,Excel等工具力不从心。Python因其大数据处理能力受青睐,尽管学习曲线陡峭。随着GPT等AI工具兴起,智能化时代开启,Python成为时代产物。博主晚枫专注研究Python在非程序员中的应用,并提供免费课程。在数字化转型和AI发展浪潮中,技术变现机会众多。
111 54
不只是程序员的专利:Python为何成为全民编程语言?
|
9天前
|
Python
Python的`os`模块核心功能概述:通过`os.getcwd()`获取
【6月更文挑战第23天】Python的`os`模块核心功能概述:通过`os.getcwd()`获取、`os.chdir()`改变工作目录;使用`os.mkdir()`, `os.makedirs()`创建目录,`os.rmdir()`, `os.removedirs()`删除;`os.rename()`, `os.renames()`重命名文件或目录;`os.remove()`删除文件;`os.listdir()`列出目录内容;`os.path.exists()`, `os.path.isfile()`, `os.path.isdir()`检查路径;`os.stat()`获取文件属性。
20 4
|
12天前
|
数据安全/隐私保护 Python
Python装饰器是高阶函数,用于在不修改代码的情况下扩展或修改函数行为。它们提供可重用性、模块化和无侵入性的功能增强。
【6月更文挑战第20天】Python装饰器是高阶函数,用于在不修改代码的情况下扩展或修改函数行为。它们提供可重用性、模块化和无侵入性的功能增强。例如,`@simple_decorator` 包装`my_function`,在调用前后添加额外操作。装饰器还能接受参数,如`@logged("INFO", "msg")`,允许动态定制功能。
17 6
|
13天前
|
存储 缓存 Linux
Python pip常用功能说明
pip 是 Python 的一个包管理工具,可以让用户方便地下载和安装 Python 包。pip 可以从 PyPI (Python Package Index) 上下载这些包,并且自动处理依赖关系。PyPI 是一个存储着 Python 包的仓库,用户可以从这个仓库中搜索、下载和安装 Python 包。在使用 pip 安装 Python 包时,由于 PyPI 的服务器位于国外,下载速度可能比较慢,因此我们可以使用国内的镜像源来提高下载速度。常见的国内镜像源有阿里云、清华大学等。
24 6
|
15天前
|
Java 开发工具 开发者
【编程语言】Python平台化为何比Java差?
【编程语言】Python平台化为何比Java差?
19 1
|
17天前
|
Java Go C#
编程语言C#、C++、Java、Python、go 选择哪个好?
我想说的是,不论选择哪种编程语言,决定选择的都是你最终的目的,做选择之前,先充分调研每一个选择项,再做选择思路就会非常清晰了。
36 3
|
22天前
|
IDE 测试技术 持续交付
Python作为一种简洁、易读且功能强大的编程语言,其自动化测试和单元测试框架的丰富性和易用性为开发者提供了极大的便利
【6月更文挑战第10天】本文探讨了Python自动化测试与单元测试框架在提升代码质量和效率中的作用。Selenium、Appium和pytest是常用的自动化测试框架,分别支持Web和移动应用的测试。unittest是Python的标准单元测试框架,提供断言方法和测试组织结构。通过制定测试计划、编写高质量测试用例、持续集成与测试、以及有效利用测试报告,开发者能提高代码质量和开发效率。
30 1
|
5天前
|
Python
技术经验解读:【Python】torrentParser1.04增加获得磁力链URI功能
技术经验解读:【Python】torrentParser1.04增加获得磁力链URI功能
|
11天前
|
缓存 数据库连接 开发者
Python中有哪些容易被忽视的核心功能
Python编程中,一些被忽视的核心功能包括:`argparse`库用于命令行参数解析,简化工具编写;使用`with`语句配合上下文管理器确保资源正确释放;列表推导式和生成器表达式创建列表和轻量级迭代;字典的`setdefault()`方法避免键不存在时的额外检查;默认参数值简化函数调用;`namedtuple`增加元组可读性;集合操作符执行并集、交集和差集;`lru_cache`缓存函数调用提高性能;`enumerate()`在迭代列表时同时访问索引和值;以及`Counter`统计元素频率。掌握这些功能可提升代码质量和效率。