社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

危!比 Python 快 90,000 倍的 Mojo 官宣开源

程序猿 • 2 周前 • 44 次点击  

本文经授权转自公众号CSDN(ID:CSDNnews)

整理 | 苏宓

AI 时代,在各大公司“卷”大模型之际,也有人从工具层“发力”编程语言。

2023 年,Swift 之父、编译器大神 Chris Lattner 和 Google 前员工 Tim Davis 带领其背后的初创团队 Modular 加入 AI 战局,先是火速发布了比 Python 快 35000 倍的 Mojo 编程语言,而后又拿下 1 亿美元的融资,进而推出围绕 Mojo 打造的商业人工智能平台 MAX,最终希望 Mojo 能成为一款所有 AI 程序员都在使用的编程语言。

现如今,Modular 再次展开布局,官宣开源 Mojo 核心组件(https://github.com/modularml/mojo)。基于开源开放的方式,这一项目在短短时间内迅速吸引全球开发者的关注,GitHub Star 数攀升到 19.2k,Fork 达 2.3k

对此,不少网友持以期待:“Mojo 现已开源。Python 已经很棒了。Mojo 将其提升到了一个全新的水平。我们正在使用 Python 构建 AGI。想象一下当我们加快速度时的可能性!”

1、AI 编程语言 Mojo 正式开源标准库

Mojo 自 2023 年 5 月首次面世以来,一直在稳步迭代。它是一种专为 AI 设计的编程语言,可以将 Python 的易用性与 C 的性能相结合,释放 AI 硬件强大的可编程性和 AI 模型的可扩展性。

简单来看,使用 Mojo 可以编写比 C 更快、可移植的代码,并与 Python 生态系统无缝交互。最重要的是,Mojo 具备了使用 Python 库整个生态系统的能力。

之所以选择开源的方式,Modular 在官方公告中写道,“在 Modular,开源已根植于我们的 DNA 中。我们坚信,Mojo 要充分发挥其潜力,就必须开源。我们一直在逐步开源更多 Mojo 和 MAX 平台的部分内容,今天我们很高兴地宣布在 Apache 2 许可证下发布 Mojo 标准库的核心模块!我们始终相信,公开构建 Mojo 会带来更好的结果,因为它允许其设计受到更广泛社区的反馈的影响。”

Modular 开源的 Mojo 组件构成了该语言标准库。这是编程语言的一部分,包括其核心语法元素和其他基本功能。Mojo 的标准库包含优化 AI 超参数等任务的功能,这些设置决定神经网络如何处理数据。

和其他开源项目有所不同,Modular 团队这次除了提供标准库的源代码之外,还开放标准库的修订历史记录、发布 Mojo 编译器的夜间构建版本(软件的每日构建版本),提供了公共持续集成服务(public CI ),并通过 GitHub 拉取请求允许外部贡献。

2、遵循 Apache 2 LLVM 许可

在遵循的开源协议上,Mojo 使用的 Apache 2,它包含了专利授权条款,为软件的用户和贡献者提高了法律保护。

不过,在使用 Apache 2 许可证时,Modular 团队基于 LLVM 项目经验也发现了两个问题:

  • 其一,有人担心 Apache 2 许可证可能无法与 GPL2 代码(例如 Linux 内核)不太兼容;

  • 其二,Apache 2 许可证要求你承认在衍生项目中使用了代码。

对此,Modular 团队表示,“我们希望你可以在不需要承认使用 Modular 或 Mojo 的情况下使用 Mojo,并且明确表明与 GPL2 代码混合是可以接受的。因此,我们包含了专门设计用于解决这些问题的 LLVM exception。

我们认为这代表了语言和工具项目的开源许可证的最新技术水平,并建议其他 Mojo 开源项目采用相同的方法。我们已经在我们现有的开源代码中使用了这种方法,并将继续以相同的方式发布更多的代码。”

3、对标 Python?也许搞错了

Mojo 作为一门新语言,如今选择开源的方式吸引全球开发者参与其中,无疑对其生态发展有极大的好处,但是就这门语言而言,也有不少人存有争议,毕竟自其发布以来,也有不少人将其对标因 AI 发展而风生水起的 Python 语言,而 Mojo 官方也多次将其与 Python 的运行速度相比较:

  • 2023 年 5 月,在用最先进的编译器和异构运行时,Mojo 能够利用硬件的全部功能,包括多核、向量单元和加速器单元,在不复杂的前提下,实现与 C++ 和 CUDA 相当的性能。与此同时,根据官网测试结果,Mojo 比 Python 快 35000 倍。

  • 同年 9 月 7 日,Modular 公司宣布 Mojo 初步登陆 Linux 系统之际介绍称,Mojo 将动态与静态语言的优点结合起来,一举将性能提升达 Python 的 68000 倍。

  • 在 10 月,Mojo 推出了支持 Mac 平台的版本,Chris Lattner 发文表示:Mojo + Apple Silicon 是强强联合,强上加强。

    彼时 Mojo 团队fa,Mojo 语言可以充分利用 Mac CPU 内核和矢量单元来实现加速。根据他们提供的测试 —— 使用 matmul.mojo 运行一个矩阵乘法示例。在 Apple MacBook Pro M2 Max 上,与纯 Python 实现的版本相比,Mojo 的速度大约比 Python 快 90,000 倍。

基于此,也有人担心自己刚学了 Python,难道又要开始学 Mojo?

其实对于这个问题,Mojo 之父 Chris Lattner 早些时候也直率地回应过,「Mojo 对 Python 没有威胁: 它提升了 Python 的水平并赋予 Python 程序员超能力。如果有人应该害怕的话,那就应该是 C++ ,这种很难使用加速器语言。Python 是开发人员所喜爱的:当你需要性能时,C++ 基本上是一种实用的必要之恶。」

现实来看,也确实如此,Mojo 可以视为是 Python 的一个超集,甚至视为 Python++,它弥补了 Python 的一些不足之处。

要知道过往 20 年间,Python 凭借其简单的语法和广泛的生态系统,巩固了其作为 AI 领域主导语言的地位。然而,性能不佳是它的一个重大缺陷,尤其是在人工智能等计算密集型领域。

至于 Python 性能为什么不好,主要还是和它最初的设计有关,Python 起初优先考虑了生产力和简单的语法,导致它:

  • 是一门解释性语言。解释性语言本质上较慢,因为解释器执行代码而不是直接与硬件交互。相比之下,编译型语言生成机器码,直接由硬件执行,使它们快了几个数量级。

  • Python 的动态类型意味着变量数据类型在运行时确定,引入了类型检查和处理的开销,这导致了语言的慢速。

  • Python 使用引用计数来管理内存。虽然对编程很方便,但解释器必须跟踪内存并清理未使用的对象,这会产生额外开销。

  • 现代 CPU 具有多个核心,要最大化性能需要利用这些多个执行线程。虽然 Python 支持多线程,但全局解释器锁(GIL)阻止多个线程同时运行,使大量性能提升未能实现。不过,Python 正在逐步尝试缩小 GIL 的范围,例如在 Python 3.12 中引入了针对每个解释器的 GIL,这意味着各个 Python 解释器不再共享同一个 GIL。

  • 一些如数值计算等操作,在 Python 中可能比 C 或 FORTRAN 等编译型语言慢。

针对其中一些问题有解决方法。例如,性能关键的代码可以用 C 或 C++ 等编译型语言编写,并从 Python 调用。许多机器学习库,如 Numpy、Scipy、TensorFlow 和 PyTorch,就是这样做的。由于这些库是用 C/C++ 实现的,它们还利用 SIMD 指令来改善执行数值计算的性能。

不过,并非所有人都精通 C 语言编写。即使他们能写一些 C,优化以实现最大硬件输出的技能也是极少数人拥有的。诸如 Cython 和 Numba 之类的工具已被开发出来以简化这些问题,但它们无法保证在所有情况下进行优化,也无法针对如今用于部署人工智能应用的各种硬件目标进行优化,比如 CPU、GPU、TPU和定制 FPGA。

后来,Modular 使 Mojo 成为一种更方便的替代方案。它提供了与 Python 类似的相对易于使用的语法,但运行代码的速度快了数千倍。结果是开发人员可以编写快速的 AI 模型,而无需学习 C++ 等复杂技术。

在性能方面,Mojo 提供与 C、Rust 一样快的性能,同时还提供了 Python 的易用性。Mojo 是静态类型的,这可以让编译器能够进一步优化代码,并在编译时执行错误检查。此外,它还支持强大的编译时元编程,允许将通用代码编译成多个由类型参数化的专门版本,类似于其他语言中的泛型,但更强大。

与此同时,Mojo 构建在 MLIR 框架之上,进而可以移植到广泛的硬件设备上,包括 CPU、GPU 和 TPU。这种兼容性使得可以在不同的设备上编译相同的代码而无需修改,使 Mojo 成为构建 AI 应用的优秀选择。

5、Mojo 开源初起步

截至目前,对于发布不足一年的 Mojo 而言,有数据显示,其已经建立超过 175000 名开发者和 50000 个组织的用户群,可见它的演进速度并不慢。鉴于此次标准库的开源,也有不少用户翘首期盼 Mojo 编译器开源的那一天。

此次,Modular 团队虽未明说,但是其在公告中透露,“我们认为这是我们开源之旅的一个重要起点,而不是终点。当我们与社区一起学习时,我们逐步发展和迭代我们的开发和贡献流程。随着时间的推移,我们将开放更多代码,包括更多 Mojo 和更广泛的 MAX 平台的部分内容。”

6、AI 时代是否还有“卷”编程语言的必要?

最后,在提及 Mojo 语言之际,也有开发者陷入怀疑之中,发出「AI 时代究竟是否还有必要学习编程语言」的灵魂一问。

回看过往一段时间,3 月初,百度 CEO 李彦宏说,以后不会存在程序员了,只要会说话就能具备程序员能力,而未来的编程语言,只会剩下两种,一种叫英文,一种叫中文。

英伟达 CEO 黄仁勋在对孩子的最新寄语中说,生成式 AI 的未来发展大幅降低了学习编程的意义,人类应该专注于更重要的技能,如生物学、教育学、制造业或农业。我们的工作就是创造计算技术,让所有人都不需要编程。而且编程语言可以普及成为人类的语言,现在世界上每个人都是程序员,这就是人工智能的奇迹。

就在昨日阿里云官宣了 AI 员工——通义灵码,工号 AI 001 号。它擅长 Java、Python、Go、JavaScript、TypeScript、C/C++、C# 等 200 多种编程语言,可以辅助程序员写代码、读代码、查 Bug、优化代码等。

所以,学编程语言究竟是否还有必要,尤其是 Mojo 这样的新语言。带着这样的问题,我们也询问了 ChatGPT,它给出的答案是:

尽管 AI 工具在编程领域的发展和应用可以提供帮助,但程序员仍然需要学习编程语言。以下是几个原因:

基于此,你如何看待新出现的开源 Mojo?以及 AI 时代的编程语言是否有必要上手?欢迎留言分享。

参考:

https://www.modular.com/blog/the-next-big-step-in-mojo-open-source

https://github.com/modularml/mojo/tree/nightly?tab=readme-ov-file

https://codeconfessions.substack.com/p/mojo-the-future-of-ai-programming

本文转自公众号“CSDN”,ID:CSDNnews

---END---

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/169365
 
44 次点击