Mojo~

2023-10-30

llama2.mojo比llama2.c快20%,最年轻的语言Mojo惊艳开发者社区

你听说过 Mojo 的「传奇色彩」吗?

如果说 Python 是最流行的语言,C 语言是最经典的语言,那么 Mojo 也有它的之最 —— 最年轻。Mojo 能够与 Python 无缝衔接,​ 它的出世被称作为「几十年来最大的编程进步」。 ​图源:https://www.modular.com/blog/mojo-its-finally-here

自 5 月 Mojo 推出以来,已经有超过 12 万的开发者注册使用 Mojo Playground,并有超过 1.9 万的开发者在 Discord 和 GitHub 上积极讨论 Mojo。9 月 7 日,Modular 公司宣布 Mojo 可以在本地下载。Mojo 最初的目标是比 Python 快 35000 倍,近日该团队表示,Mojo 将动态与静态语言的优点结合起来,一举将性能提升达 Python 的 68000 倍。

Mojo

Mojo 是一种面向 AI 开发人员的新编程语言,它已经支持与任意 Python 代码无缝集成,并将成长为 Python 的超集。让我们回顾一下 Mojo 的「魅力」。

  • 用一种语言编写所有内容:Mojo 可满足 AI 开发人员的需求,将 Python 的易用性与系统编程功能相结合。这使研究和部署团队可以在一个共同的代码库中工作,从而简化工作流程。

  • 释放 Python 性能:Python 无处不在,但对于需要高性能或特殊硬件的任务来说,Python 并非最适合的工具。Mojo 可在 CPU 上实现高性能,并支持 GPU 和 ASIC 等特殊加速器,提供与 C++ 和 CUDA 不相上下的性能。

  • 访问整个 Python 生态系统:Mojo 提供了与 Python 生态系统的完全互操作性,可以无缝使用 Python 库,同时利用 Mojo 的功能和性能优势。

Mojo 本地下载所提供的工具箱也可以让开发者更轻松地上手。首次发布的 Mojo SDK 包含了以下工具:

  • Mojo 驱动程序:提供 shell(用于读取 - 评估 - 打印 - 循环或 REPL),允许构建和运行 Mojo 程序、打包 Mojo 模块、生成文档和格式化代码‍。

  • Visual Studio Code (VS Code) 的扩展:支持语法高亮、代码自动补全等多种功能‍

  • Jupyter 内核:支持构建和运行 Mojo 笔记本,包括 Python 代码 ‍

  • 调试支持(即将推出):进入并检查运行中的 Mojo 程序,甚至可以混合使用 C++ 和 Mojo 堆栈帧

就在近日,一位 Mojo 社区成员将 Python 程序移植到 Mojo,效果如何?

llama.mojo

项目地址:https://github.com/tairov/llama2.mojo

随着 Mojo 的发布,这位 Mojo 社区成员受到启发,将在 Python 上移植的 llama2.py 移植到了 Mojo 上。它已经比 Karpathy 的 llama.c 快了 20%。而这并不是速度的终点,未来可能会更快。llama2.py、llama2.c、llama2.mojo 的直观对比

这个版本利用了 Mojo 的 SIMD 和矢量化原语,将 Python 的性能提高了近 250 倍。即使在快速运行模式下,Mojo 版本的性能也比原来的 llama2.c 高出 15-20%。这展示了通过 Mojo 高级功能进行硬件级优化的潜力。这有助于大家了解在原有 llama2.c 硬件优化的基础上还能走多远。

性能数据对比

当然,这位成员也公布了操作系统与硬件细节。

看到这样的性能比较,网友们纷纷感慨,Mojo 的确展现了自己的「实力」。

但是也有网友提出了不一样的看法,或是另一个探索方向。

Mojo 与他的背后「大佬」

​Modular AI 于 2022 年创立,旨在重建全球 ML 基础设施,它由 LLVM 和 Swift 编程语言的联合创始人 Chris Lattner 创办,并在此前刚获得 1 亿美元融资。Chris Lattner 表示,融资将用于产品扩展、硬件支持和推动自研 AI 编程语言 Mojo 的进一步发展。 whaosoft aiot http://143ai.com  

Chris Lattner

Chris Lattner 毕业于波特兰大学的计算机科学系,具有创建和领导多个知名大型项目的经验,其中包括 LLVM、Clang、MLIR 和 CIRCT 等编译器基础设施项目,他还带头创建了 Swift 编程语言。他曾在苹果的开发者工具部门任职,还担任过特斯拉副总裁。2017 年 8 月,他 任 Google Brain 团队领导了 TensorFlow 基础设施工作,包括一系列硬件支持(CPU、GPU、TPU),底层运行时和编程语言工作。

在 llama.mojo 的性能对比发布后,Chris Lattner 在推特上感慨到,这离 Mojo 可本地下载只隔了三天。

参考链接:

https://twitter.com/Modular_AI/status/1701342288012820800

https://twitter.com/tairov/status/1701194900228764023

https://github.com/tairov/llama2.mojo

 

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

Mojo~ 的相关文章

随机推荐

  • Java 1.8 List集合排序、去重、分组、过滤、合并操作

    目录 一 排序 二 去重 三 分组 四 过滤 五 合并 一 排序 1 正序 List
  • python中读取并显示图片的方法

    import matplotlib pyplot as plt plt 用于显示图片 import matplotlib image as mpimg mpimg 用于读取图片 img1 mpimg imread home jingwenk
  • vue-seamless-scroll 不自动滚动解决方法

    项目场景 在子页面使用vue seamless scroll 问题描述 没有自动滚动 鼠标移上去 才触发自动滚动 原因分析 数据需要在页面挂载好就赋值 否则页面在加载完成后 数据无法自动滚动 解决方案 在mounted或data中给list
  • 《Javascript高级程序设计》读书笔记之——基本包装类型

    基本包装类型 基本类型与引用类型之间不同 引用类型可以随时调用自己的方法 而基本类型重写了方法 Boolean类型 尽量不要使用该类型 var falseObj new Boolean false var result falseObj t
  • 消息监听管理

    消息监听 using System using System Collections using System Collections Generic using UnityEngine public class MessageManage
  • 想要以编程方式从RAR中解压缩或提取文件?Aspose.ZIP帮你轻松搞定

    ZIP档案是用来压缩和保持一个或多个文件或文件夹到一个单一的容器中 ZIP归档文件封装了文件和文件夹 并保存了它们的元数据信息 归档的最常见用法是减小用于存储或传输的文件的大小 并应用加密以提高安全性 Aspose ZIP for NET是
  • NVIDIA VIDEO CODEC SDK

    转自 https developer nvidia com nvidia video codec sdk NVIDIA GPU 硬件decoder和encoder是独立于cuda cores NVIDIA GPUs contain one
  • cocos2d-x与lua用法整理

    Cocos2d x 2 20以上版本没有了创建模板 创建的方式改用了Python创建 方法如下 python create project py project HelloWorld package com Panda Game langu
  • 记录日记2021-11-12

    1 python3中判断字符串是否为冲空格则称的方法 利用isspace 放法进行判断 s s isspace 去除左右两端空格 s strip 2 筛选dataframe中某一列包含某些字符串 df df 地址 str contains
  • Android WebView系列(一)WebView的基本使用

    前言 现在越来越多的App都将原生功能开发转向混合开发 原生只写个 外壳 内嵌H5页面 便于维护 今天来介绍下Android中内置的高性能内核浏览器webkit 提供了控件WebView以及API WebView介绍 1 作用 1 渲染we
  • 编译qt5中的multimedia时出fatal error: xxx No such file or directory

    问题描述 利用buildroot勾选中QT5中的multimedia 编译时出现如下错误 In file included from include QtMultimedia qtmultimediadefs h 1 0 from qmed
  • QT信号槽传输过程中指针所指对象的生命周期

    在子线程中的一个槽函数 当读取到dxf文件完成后 结果通过在该槽函数中的 dx data pDxfData 指针变量读取 然后通过QVariant封装该指针变量 发送到主线程中 void qcWorker slotReadDxfFile Q
  • [春秋云镜]CVE-2018-1000533

    声明 中所涉及的技术 思路和 具仅供以安全为 的的学习交流使 任何 不得将其 于 法 途以及盈利等 的 否则后果 承担 所有渗透都需获取授权 靶场介绍 gitlist是一款使用PHP开发的图形化git仓库查看工具 在其0 6 0版本中 存在
  • C(#和##操作符)

    概念 运算符用于在预处理期将宏参数转换为字符串 在预处理期完成 因此只在宏定义中有效 编译器不知道 的转换作用 用法 define STRING x x printf s n STRING Hello World 运算符用于在预处理期粘连两
  • Linux系统下如何修改主机名

    修改主机名从网上找了两种方式 采用第二种方式修改成功 不知我按照第一种方式哪里操作错了 未成功 相关帖链接 Linux系统下如何修改主机名 爱吃牛肉的大老虎的博客 CSDN博客 linux修改主机名 https blog csdn net
  • 基础查看命令

    Linux中命令的使用语法格式 命令 空格 选项 非必须 空格 操作对象 ping命令 探测远程服务是否正常运行 也可以通过ping探测本机是否正常也可以正常上网 格式 ping 探测的对象 eg ping www baidu com 命令
  • 【C语言】输入一行字符串,统计其中的单词数

    include
  • 单片机c语言指针作用,单片机C语言教程:C51指针的使用

    指针就是指变量或数据所在的存储区地址 如一个字符型的变量 STR 存放在内存单元DATA 区的 51H 这个地址中 那么 DATA 区的 51H 地址就是变量 STR 的指针 在 C 语言中指针是一个很重要的概念 正确有效的使用指针类型的数
  • 用python实现二分法

    二分法查找 也称为折半法 是一种在有序数组中查找特定元素的搜索算法 二分法查找的思路如下 1 首先 从数组的中间元素开始搜索 如果该元素正好是目标元素 则搜索过程结束 否则执行下一步 2 如果目标元素大于 小于中间元素 则在数组大于 小于中
  • Mojo~

    llama2 mojo比llama2 c快20 最年轻的语言Mojo惊艳开发者社区 你听说过 Mojo 的 传奇色彩 吗 如果说 Python 是最流行的语言 C 语言是最经典的语言 那么 Mojo 也有它的之最 最年轻 Mojo 能够与