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

2023-05-16

b5040302b1e4d02b9226e396370025bc.png  夕小瑶科技说 分享
 来源 | 机器之心
 编辑 | 蛋酱、陈萍

它可与 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」。

e00700ea6706c9f261ee00ca36369f43.png

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

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

f7587bf0c9ab8706dea4f5b88c65c8cd.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 无缝互操作:

668edd9d516e39edaa8219ed93645f84.gif

Mojo 语言具有以下特点:

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

815525fa1c87445eee27607205ea9101.gif

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

509bb461f9d4406b87c9093d97e70390.gif

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

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

a69423d622e1a90cf88b6609d7f3abf4.png

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

c54636df6cad72f8c06139671482611a.gif

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

4c9c3e5988559d46e911c5dd5a43ed8c.gif
▲模型的可扩展性,Mojo 可以升级模型中的现有操作。

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

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

476dd537674c89960162a7e18b54542a.png 6e954b9f5557d2d6bda5e6b8b94fde08.png
929a1646d5709dcaf8e4f8747c88eaef.png

[1] https://www.modular.com/blog/the-future-of-ai-depends-on-modularity

[2] https://www.modular.com/mojo

[3] https://www.fast.ai/posts/2023-05-03-mojo-launch.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • linux系统常用命令总结

    简介 本文简单记录常用的linux系统shell命令 命令 linux系统常用shell命令如下表格 命令功能示例备注alias给命令起别名alias c 61 clear 取clear的别名为ccat显示文本内容cat file显示fil
  • 持续集成:CI

    持续集成 xff0c 持续发布 xff0c 持续部署是DevOps中三个实现手段很相似 xff0c 但是应用场景不同的三个概念 我接下来主要从应用场景来描述一下这三个场景的主要关注点 持续集成 xff1a 发生在开发阶段 xff0c 开发人
  • 持续发布(CD Continuous Deployment)

    持续发布是持续集成的延续 每次当我的代码被push到代码仓库后 xff0c 业务也应该被持续部署 如果使用持续发布 xff08 CD xff09 xff0c 发布过程是手动触发的 CD可以自动检查代码变化 xff0c 但是必须需要人工干预
  • 持续部署(CD, Continuous Deployment)

    持续也是持续集成的扩展 xff0c 和持续发布一样 xff0c 不同的是持续部署不需要手动干预 xff0c 直接自动部署到生产环境
  • Git中Feature分支模型中的CI,CD

    分支模型 主干分支 Master xff1a 随时可供在生产环境中部署的代码 xff0c 建议伴有标签 xff08 TAG xff09 Develop xff1a 每天需要提交和合并的代码 xff0c 功能逐渐完成的代码开发分支 辅助分支
  • DevSecOps及软件IT安全防护的开源扫描工具

    最近研究了一下热门话题 xff1a DevSecOps xff0c 明白了不少网络安全方面的概念和不少顶级的开源安全扫描工具 xff0c 现分享给大家 过去 xff0c 每个公司有一个信息安全防护的部门 xff0c 专门负责公司的IT信息安
  • K8S服务发现(kube-dns)

    K8S中 xff0c Pod如果想也另外一个Pod通信 xff0c 通常不会直接基础此Pod的IP xff08 动态的 xff09 xff0c 也不会记住此Pod形成的Service的IP xff08 相对比较稳定 xff0c 但也是动态的
  • K8S中的负载均衡Ingress

    K8S通过Ingress xff0c 把K8S集群中的服务 xff0c 通过Http和https路由暴露给外部用户 路径等信息通过Ingress的资源文件配置 1 一个K8S集群 2 一个集群Admin xff0c 两个个K8S用户 Use
  • DevOps关键指标

    不能衡量 xff0c 就无法管理 xff1b 不能管理 xff0c 就无法改进 xff0c 这句话对于DevOps或其它研发管理实践来说 xff0c 是正确的 为了实现DevOps的承诺 xff1a 更快地交付更高质量的产品 xff0c D
  • 成功的CEO的特质(一个投资人的观察)

    一个投资人总结他投资的100多个成功创业者的特质 1 不需要外部驱动 xff0c 不需要钱 危机状况触发他们的斗志 xff0c 他们内心有者强烈的驱动力 xff0c 证明自己的想法是对的 xff0c 能让世界变得更好 即使他们变得很富有了也
  • minikube 及安装

    和 kind 一样 xff0c minikube是一个在PC机上本地部署单节点Kubernetes集群的工具 xff0c 可以作为K8S的学习 xff0c 测试环境 在linux上安装minikube xff1a span class to
  • linux系统进程间通信方式(三):管道

    进程间通信方式之管道 管道通常指无名管道 xff08 PIPE xff09 或有名管道 xff08 FIFO xff09 xff0c 但实际上套接字也都是管道 接口 PIPE和FIFO的相关接口如下表格 功能创建无名管道 xff1a PIP
  • Python3 注释

    前言 确保对模块 函数 方法和行内注释使用正确的风格 xff08 文末送读者福利 xff09 Python 中的注释有单行注释和多行注释 Python 中单行注释以 开头 xff0c 例如 xff1a 这是一个注释 print Hello
  • 2023!七大最佳Python书籍,入门到精通推荐!

    前言 什么是Python xff1f Python是一种高级编程语言 xff0c 用于使用正确的工具和库文件进行Web开发 xff0c 桌面应用程序 xff0c 人工智能 xff0c OS xff0c 原型 xff0c GUI应用 xff0
  • 树莓派3B+UbuntuMate18.04安装ROS

    最近一直在配置树莓派的各种环境 xff0c 今天了解到可以搭载ROS然后控制摄像头 xff0c 激光雷达等 xff0c 就开始了疯狂踩坑 xff0c 记录问题及解决办法如下 配置 xff1a 树莓派3B 43 xff0c UbuntuMAT
  • 电脑技巧:Win10无线投屏功能介绍

    Win10操作系统可以将电脑中的内容投屏到其他显示设备 xff0c 比如将电脑屏幕投屏到电视上 xff0c 这是通过Miracast技术来实现的 其实Win10电脑自身也可以作为被投屏的那一方 xff01 比如可以将手机屏幕投屏到电脑屏幕上
  • 收集一些程序员励志经典名言

    1 作为一个真正的程序员 xff0c 首先应该尊重编程 xff0c 热爱你所写下的程序 xff0c 他是你的伙伴 xff0c 而不是工具 2 程序员可以让步 xff0c 却不可以退缩 xff0c 可以羞涩 xff0c 却不可以软弱 xff0
  • SVN连接不上,提示:Error running context: The server unexpectedly closed the connection.

    结果 xff0c 询问一起其他伙伴 xff0c 人家都能正常使用 最终找到的问题是 xff1a 把TortoiseSVN gt Settings gt Network gt Enable Proxy Server 这个勾选项取消勾选 就可以
  • 组装机怎么重装系统?组装机U盘装系统方法

    很多用户都会给自己的电脑进行重装 xff0c 这样就能使用上自己购买的硬件配置 组装好的电脑第一步要做的就是装系统 xff0c 下面小编就给大家整理了新电脑用U盘装系统的方法 xff0c 希望可以帮到大家 U盘重装系统Win10下载 系统之
  • 电脑老系统怎么换新系统?

    现在还有好多用户家里装的是旧电脑 xff0c 使用的系统也都是很久之前的系统了 xff0c 就有用户想给电脑换新系统 xff0c 但是不知道具体怎么操作 针对这个问题 xff0c 小编为大家带来详细的重装教程 xff0c 有需要的用户可以看

随机推荐

  • 介绍snipaste截图快捷键

    snipaste是非常受人欢迎的一款截图软件 xff0c 体积小巧 xff0c 功能强大 为了方便使用 xff0c 很多用户都会设置一些快捷键 xff0c 那么snipaste怎么设置快捷键呢 xff1f 下面就来看看具体的设置步骤 设置方
  • 教教大家vmware虚拟机安装win11的方法

    vmware是大家经常使用的虚拟机软件 xff0c 在其上面可以安装多种操作系统不管是windows系统 linux系统还是mac系统 那么win11系统也能安装吗 xff1f 当然是可以的 vmware安装Win11教程 1 首先我们需要
  • freertos的可视化追踪和运行时间统计功能

    简介 很多时候 xff0c 我们想要知道rtos任务目前的运行情况 xff0c 比如任务的状态 优先级 cpu的占用率等等 xff0c 或者我们想要知道当前正系统在运行的是哪一个任务 xff0c 又或者我们想要知道某一个任务运行了多长时间
  • 麻将算法(上)

    一 麻将规则 xff08 云南昭通麻将 xff09 1 牌 1 万 筒 和 条 三房牌 xff0c 各36张 xff0c 共108张牌 xff1b 2 只能 碰 杠 胡 xff0c 不能吃牌 3 4人进行游戏 xff1b 4 游戏开始时 x
  • DIR dirp对目录的操作

    xfeff xfeff DIR函数以及dirp函数 DIR opendir const char pathname 即打开文件目录 xff0c 返回的就是指向DIR结构体的指针 返回该指针以后 xff0c 就可以被以下函数来使用了 xff0
  • SocketException: 由于目标计算机积极拒绝,无法连接。 127.0.0.1:10000

    在尝试python socket编程的时候 xff0c 首先将编写好的客户端和服务器端都部署在本地进行 xff0c 并且使用同一台宿主机 客户端使用127 0 0 1 xff0c 服务器端使用0 0 0 0或者直接 刚开始我端口是随意选择的
  • NVIDIA Jetson Xavier NX——入手安装

    Google search sd card formatter for formatting SD card Google search balenaetcher for flashing JetPack SDK Google search
  • positional encoding位置编码详解:绝对位置与相对位置编码对比

    本文转载自公众号 夕小瑶的卖萌屋 xff0c 专业带逛互联网算法圈的神操作 我是传送门 关注后 xff0c 回复以下口令 xff1a 回复 789 xff1a 领取深度学习全栈手册 xff08 含NLP CV海量综述 必刷论文解读 xff0
  • Pytorch与Tensorflow,哪个更适合你?

    本文转载自公众号 夕小瑶的卖萌屋 xff0c 专业带逛互联网算法圈的神操作 我是传送门 关注后 xff0c 回复以下口令 xff1a 回复 789 xff1a 领取深度学习全栈手册 xff08 含NLP CV海量综述 必刷论文解读 xff0
  • 抖音算法推荐机制详解(科普向)

    本文转载自公众号 夕小瑶的卖萌屋 xff0c 专业带逛互联网算法圈的神操作 我是传送门 关注后 xff0c 回复以下口令 xff1a 回复 789 xff1a 领取深度学习全栈手册 xff08 含NLP CV海量综述 必刷论文解读 xff0
  • 小样本学习只是一场学术界自嗨吗

    文 ALme 64 知乎 这两年看见很多人 xff0c 包括我实习的mentor在内 xff0c 都在批评few shot learning xff0c 觉得是学术界在自high xff0c 思考良久 xff0c 感觉有必要给这个领域正个名
  • ChatGPT镜像来了,体验核心能力

    1月份开始 xff0c chatgpt开始火上天了 但其实很多人都不知道它真正的能力和魅力在哪里 甚至有人不停的问他是男的女的 xff0c 多大岁数 xff0c 叫啥名字 xff0c 然后问了几个无聊的闲聊问题后 xff0c 觉得这个AI好
  • 超详细面经分享!@最近考虑换工作的伙伴们

    文 xff5c ELon Z 源 xff5c AI机器学习与知识图谱 编 xff5c 极市平台 本文作者在秋招期间面试了10 43 家互联网公司 xff0c 总结了不同公司的考察点以及面试准备的全过程中的经验 帮助大家对各公司有个大致的认知
  • 详解webpack构建优化

    当项目越来越复杂时 xff0c 会面临着构建速度慢和构建出来的文件体积大的问题 webapck构建优化对于大项目是必须要考虑的一件事 xff0c 下面我们就从速度和体积两方面来探讨构建优化的策略 分析工具 在优化之前 xff0c 我们需要了
  • GPT4国内镜像站

    GPT 4介绍 GPT 4是OpenAI发布的最先进的大型语言模型 xff0c 是ChatGPT模型的超级进化版本 与ChatGPT相比 xff0c GPT 4的推理能力 复杂问题的理解能力 写代码能力得到了极大的强化 xff0c 是当前人
  • 阿里通义千问、百度文心一言、ChatGPT与GPT-4大比拼

    各个大模型的研究测试传送门 阿里通义千问传送门 xff1a https tongyi aliyun com chat 百度文心一言传送门 xff1a https yiyan baidu com ChatGPT传送门 xff08 免墙 xff
  • 清华发布首个最全大模型安全评测系统,ChatGPT登榜首!

    夕小瑶科技说 原创 作者 天于刀刀 Python 当前大型语言模型的火爆程度我们不用再进行赘述了 xff0c 伴随着百度文心一言打响国内商业大模型第一枪 xff0c 华为盘古 xff0c 阿里通义千问 xff0c 智谱ChatGLM 科大讯
  • 值得关注!正在引领行业变革的15家AI明星创业公司

    夕小瑶科技说 原创 作者 小戏 iven 星星之火 xff0c 可以燎原 在大模型横空出世的这个疯狂的春天 xff0c 一场关于 AI 产品的革命也正在席卷全球 这边是大公司一个接一个模型搞军备竞赛 xff0c 那边是各路豪强纷纷下场创业招
  • UC伯克利发布大语言模型排行榜!Vicuna夺冠,清华ChatGLM进前5

    夕小瑶科技说 分享 来源 新智元 编辑 好困 万万没想到 xff0c 现在大语言模型们也要像王者荣耀 LoL Dota这些游戏里的玩家一样打排位赛了 xff01 据说 xff0c 那些闭源模型们很快也会被拉出来溜溜 最近 xff0c 来自L
  • 编译器大佬Chris Lattner全新编程语言「Mojo」:兼容Python核心功能,提速35000倍

    夕小瑶科技说 分享 来源 机器之心 编辑 蛋酱 陈萍 它可与 Python 无缝衔接 xff0c 但克服了很多 Python 的缺点 Jeremy Howard 试用后表示 xff1a Mojo 可能是几十年来最大的编程进步 对于全球各地开