人工智能大数据,工作效率生产力
Ctrl + D 收藏本站,更多好用AI工具
当前位置:首页 » AI资讯

人工智能ai用什么编程语言?

2024-05-25 63

引言(Preface)

2024年3月29日,Modular公司宣布开源Mojo核心组件。

Mojo是一门专为人工智能开发而设计的编程语言,去年8月正式推出。自那时起,吸引了超过17.5万的开发人员和5万家企业/组织。

人工智能模型通常用多种编程语言编写。开发人员通常使用Python来实现神经网络的简单部分,因为易于学习但相对缓慢。剩余的代码通常以C++编写,速度更快但学习起来更复杂。Modular将Mojo定位为更便捷的选择。它提供了类似于Python的简单易用的语法,但具有数千倍甚至更快的执行速度。因此,开发人员可以更快地开发人工智能模型,而无需学习像C++这样复杂的语言。

去年,Mojo 刚推出时,一些开发人员对它的出现表达了兴奋的态度。然而,当被问及开源日期时,Chris Lattner 在 Discord 上表示:“如果我知道的话,我会告诉大家。” 一年来,许多开发人员一直处于观察和质疑的状态:

人工智能ai用什么编程语言?插图
人工智能ai用什么编程语言?插图1
人工智能ai用什么编程语言?插图2

在这个数据驱动的信息时代,似乎开源已成大势所趋。最终,Mojo终是开源了。在短时间内,在GitHub上就达到了17.6k stars2.1k forks,并且保持较高的增长速度。截至写这篇文章时,这个数据已经增长到21k stars2.5k forks


Mojo开源旅程的第一步

Modular最近采取了重要措施,将Mojo标准库的核心组件开源。标准库是任何编程语言的基础,包含了基本语法和运行所必需的关键功能。特别是,Mojo的库增强了用于优化AI超参数的工具,这对于神经网络数据处理效率至关重要。

在宣布转向开源时,Modular强调这仅是其开源之旅的开始,而不是结束。首先发布核心模块的目的是为了打下持续发展和改进的基础石,基于社区反馈。

开源项目在与社区的互动中可能有所不同。虽然有些项目仅发布源代码而不接受任何外部输入,其他项目可能有不清晰的贡献流程,还有些尽管是开源的但并不活跃地维护。Modular采取了积极的方法,通过GitHub拉取请求启用外部贡献,积极鼓励开发者参与完善和扩展Mojo。这种策略旨在激发社区参与和增长。

此外,Modular展示了透明度,分享了从第一次贡献开始的完整提交历史。这种开放性使开发者能够追踪库的发展轨迹,提供了对其功能和演变的更深入的见解。

人工智能ai用什么编程语言?插图3

去年年底,Modular推出了商业AI平台MAX,该平台是一套统一的工具和库,旨在构建高性能的AI应用程序,这些应用程序可以高效地部署在多个硬件平台上,包括在Kubernetes环境中运行AI应用程序。最近,Modular宣布计划在未来开放一些MAX组件的源代码,进一步增强其可访问性和社区参与。此外,他们选择了Apache 2 LLVM许可证进行开源,这强调了他们对协作和透明发展方式的承诺。

人工智能ai用什么编程语言?插图4

未来50年人工智能编程的最佳语言?

Modular引入的新编程语言Mojo因其超越Python的出色性能提升而成为头条新闻。 Mojo被称为Python家族的一部分,旨在通过整合先进技术(如LLVM编译器技术的继承者MLIR)来增强Python的功能。去年5月,Mojo 刚刚发布时,Modular 声称在运行 Mandelbrot 等算法时,它比原始 Python 快 35,000 倍。到9月份,Modular再次表示,“Mojo结合了动态和静态语言的优点,性能提升至Python的68,000倍。”

人工智能ai用什么编程语言?插图5

而到去年10月份,Mojo在Mac上的测试,Modular再次拉高了性能对比数据:“比Python快90,000倍”。

这种语言不仅针对速度进行了优化,还从Rust汲取灵感,尤其是在设计原则上,旨在结合动态语言和静态语言的最佳特性。与Rust的比较表明,Mojo在特定任务(例如解析DNA序列)中的性能可以超越Rust高达50%。

Mojo的发展旨在面向Python程序员,为他们提供强大的新工具,以利用硬件的全部性能,而无需切换到更复杂的语言,如C ++。 它的快速性能提升以及处理要求高的计算任务的能力使Mojo成为未来五十年人工智能编程领域的领先语言的有力竞争者。

Rust 在系统编程领域拥有顶级的人体工程学设计,但在AI应用领域面临两个主要问题:编译速度慢,而AI强调实验和快速迭代;大多数有Python经验的AI研究者不愿意从头开始学习新语言。Mojo旨在使Python开发者更直观、更容易掌握。例如,Mohamed在几周内作为业余项目学习了Mojo,并利用SIMD优化算法(最初的实现只用了200行代码)。

对于对AI开发感兴趣的人来说,确实存在选择三种可用语言之一的困境。Mojo和Rust都允许开发者在较低级别进行优化。对于Rust,开发者可以将所有内容打包进Arc、Mutex或Box以避免与借用检查器的冲突,但这可能会牺牲一些性能。虽然这种性能差异可能不会对应用程序代码产生显著影响,但在库或其他性能敏感的代码中,这种差异可能会迅速累积。两者之间的选择取决于程序员对减少开销和优化性能的重视程度。

两种语言都可以利用LLVM优化代码生成,并允许使用内联汇编(尽管实际上不太可能有人这样做),因此理论上在传统硬件上两者具有类似的性能潜力。

基于最先进的编译技术

Rust 最初于2006年启动,而Swift则在2010年出现,两者都主要基于LLVM IR构建。另一方面,Mojo则于2022年首次亮相,它是基于MLIR构建的,这是一种相对于Rust使用的LLVM IR的更现代的“下一代”编译器技术栈。值得注意的是,Chris Lattner在大学期间于2000年12月创立了LLVM,并从其多年的发展中获得了丰富的经验。他后来加入谷歌,领导开发MLIR,旨在支持该公司的TPU和其他AI加速器项目。随后,他继续基于从LLVM IR获得的知识进行探索。

Modular表示,Mojo是第一个完全利用MLIR高级功能的编程语言。它可以生成具有更高优化的CPU代码,并且还支持GPU和其他加速器,速度显著快于Rust。这是其他语言当前无法达到的优势,也是AI和编译器爱好者对Mojo感到兴奋的核心原因。

他们特别强调两个方面:

  • 卓越的SIMD人体工程学设计:CPU通过特殊的寄存器和指令同时处理多个数据元素,称为SIMD(单指令多数据)。然而,从历史上看,编写此类代码的经验在人体工程学上是丑陋且难以使用的。尽管这些特殊指令已经存在多年,但大多数代码并未针对它们进行优化。因此,任何能解决这种复杂性并编写可移植的SIMD优化算法的人都可以在市场上脱颖而出,例如simd_json。
  • Mojo的原语从一开始就设计为优先考虑SIMD:UInt8实际上是一个SIMD(DType.uint8, 1),代表一个具有1个元素的SIMD。这种表示不会带来性能开销,同时允许程序员轻松地用于SIMD优化。例如,文本可以被分割成64字节块,表示为SIMD(DType.uint8, 64),然后与单个换行符进行比较以找到每个换行符的索引。由于SIMD寄存器可以同时对512位数据进行操作,这种操作可以将此类操作的性能提高64倍!

更简单的例子是,假设你有一个SIMD(DType.float64, 8)。通过简单地将其乘以Float64(2),你可以轻松提高性能。与单独乘以每个元素相比,这种方法可以在大多数机器上将性能提高多达8倍。

LLVM(也被Rust使用)具有自动向量化优化过程,但由于其无法改变SIMD和其他重要细节的内存布局,其性能从未达到理论的优化水平。然而,Mojo从一开始就考虑了SIMD功能,因此编写SIMD优化的体验非常类似于编写常规代码。

急切销毁(Eager Destruction):Rust的设计受到C++的RAII(资源获取即初始化)的启发,这意味着一旦对象超出作用域,应用开发者无需担心释放内存——编程语言本身会处理。这是一个非常好的例子,避免了垃圾收集的性能陷阱,同时确保了动态语言的人体工程学。

Mojo则更进一步,不等到作用域结束就释放内存,而是在对象最后使用时释放内存。这对AI场景非常有利,因为提前释放对象意味着可以提前释放GPU张量,从而允许在相同GPU RAM中装入更大的模型。这是Mojo的独特优势,允许程序员实现最佳性能而无需自己设计。

Rust的借用检查器(borrow checker)最初将所有内容的生命周期延长到其作用域的末尾,以匹配析构函数的行为,但这可能会导致用户混淆。Rust后来添加了一些非词法生命周期特性,以简化开发者的工作。然而,有了Mojo的急切销毁机制,这种简化效果可以直接实现,并且与对象的实际销毁方式保持一致,从而避免了混淆的极端情况。

Rust中的另一个开销来自于Drop的实现。它使用Drop Flags来跟踪运行时是否应该删除对象。Rust能够在某些情况下进行优化,但Mojo可以通过显式定义消除所有额外开销。

结论(Conclusion)

无论如何,开发人员必须在 Mojo 和 Python 的易用性以及 C、C++ 或 Rust 的高性能之间进行选择。对此,Mojo 团队呼吁开发者,称:“如果你有兴趣,并且展望未来,希望掌握一种在未来 50 年可能有益于人工智能开发的语言,为什么不给 Mojo 一个机会呢?”


如果你觉得这篇文章对你有用,请“点赞➕关注”支持我!关注我,带你解锁更多Python实用技能、数据分析知识以及更多AI新玩法!

Thank you for reading!

– END –


人工智能ai用什么编程语言?插图6

原文链接:https://www.zhihu.com/question/571346401/answer/3472747050

相关推荐

阅读榜

hellenandjeckett@outlook.com

加入QQ群:849112589

回顶部