可能是三十年来编程语言最大的革新面向AI

北京中科医院爆光 http://news.39.net/bjzkhbzy/170210/5218643.html

昨天,前苹果工程师、swift编程语言创建者ChrisLattnr创立的ModularAI发布了一个新的编程语言Mojo。根据测试,该语言比Python最高提速倍!本文将简单介绍一下这个Mojo编程语言。

Mojo编程语言简介Mojo实际案例展示Mojo语言的第一个案例官方的详细的案例Mojo支持NotbookMojo使用Python模块示例关于Mojo的其它信息Mojo总结

Mojo编程语言简介

Mojo是Modular发布的一个全新的编程语言。最大的特点是有类似Python那样的语法,但是没有Python编程语言的问题。换句话说,这个编程语言号称非常简洁,但是性能却非常好。

Python是当前AI领域最火热的编程语言。因为其干净易学的语法和庞大的生态系统,几乎成为初学者以及快速构建算法的必选语言。但是,它的缺点也很明显,即性能问题。Python是解释性的语言,逐行解释执行,与C/C++编译后运行相比,效率较低。因此,尽管使用Python编写算法很多,但是对性能有要求的应用来说,实际部署基本都是依赖C++/CUDA等(当然,类似NumPy库底层也是C实现的,解决了一小部分问题)。而Mojo则是为了解决这些问题存在的:

用一种语言完成所有的事情:Mojo将研究人员喜欢的Python部分与需要使用C、C++和CUDA的系统编程功能相结合。Mojo建立在下一代编译器技术之上。使得你可以使用类似Python的语法完成算法后获得和C++程序一样的性能。解锁Python性能:Mojo建立在Modular的高性能异构运行时之上,并使用MLIR,使其能够访问所有人工智能硬件。这使Mojo可以访问线程、TnsorCos和AMX扩展等低级硬件功能,并可以访问加速器!官方宣称,Mojo在运行Mandlbrot等数字算法时比Python快x,因为它可以充分利用您的硬件。不过需要注意的是,这里应该是指让Mojo运行在他们自己的硬件或者底层系统上。

充分利用Python强大的生态系统:为了避免重复造轮子,Mojo可以直接与Python代码互相操作,也就是直接使用Python的库,如NumPy、Matplotlib等。

总的来说,官方宣传Mojo的特点如下:

完全兼容Python生态比C++更快比CUDA更容易定制和修改(mohackabl)和RUST一样安全

Mojo实际案例展示

Mojo语言的第一个案例

目前,官方还没有发放Mojo软件,不过已经有示例代码了,下图就是在终端环境下,用Mojo写一个HlloWorld:

$cathllo.dfmain():print("hlloworld")forxinrang(9,0,-3):print(x)$mojohllo.hlloworld

可以看到,很简单,而且执行也很方便,直接使用mojo命令后面跟着文件即可,和Python很像。而且,这里一个彩蛋,就是说mojo代码文件后缀可以是这个moji!这也是可以成功执行的!

官方的详细的案例

下图是官方演示的一个使用Mojo编写Mandlbrot问题的例子(这是一个数学概念,可以用来产生复杂的几何结构)。

这里可以看到更多的mojo语法,这个语法与Python很像,但是也不完全一致。里面的var、lt似乎来自于swift风格。

Mojo支持Notbook

官方已经说明,Mojo有一个类似Jupytrnotbooks的东西,大家应该很容易上手。

Mojo使用Python模块示例

前面说了Mojo可以直接与Python互相操作,使用很简单。下图就是如何使用Python库的代码示例:

fromPythonIntrfacimportPython#ThisisquivalnttoPythons`importnumpyasnp`ltnp=Python.import_modul("numpy")#NowusnumpyasifwritinginPythona=np.array([1,2,3])

可以看到,很简单,只需要引入Python模块之后,剩下的操作和Python完全一致了~~

关于Mojo的其它信息

尽管Mojo是一个全新的编程语言,但是官方说明了自己并不是完全从头开始。

采用Python极大地简化了我们的设计工作,因为大多数语法已经指定。相反,我们可以将精力集中在构建编译模型和设计特定的系统编程功能上。我们还受益于在其他语言(例如Clang、Rust、Swift、Julia、Zig、Nim等)方面的大量工作,并利用了MLIR编译器生态系统。我们还受益于Swift编程语言的经验,它将大量Objctiv-C社区的大部分迁移到了一种新的语言上。

此外,我们决定Mojo的正确长期目标是提供Python的超集(即与现有程序兼容),并立即采用CPython实现长尾生态系统。对于Python程序员来说,我们期待并希望Mojo能立即熟悉,同时也能提供新的工具来开发系统级代码,使您能够做Python需要使用C和C++才能完成的事情。我们并不是想让世界相信“静态的好”或“动态的好”——我们的信念是,当用于正确的应用程序时,两者都是好的,并且语言应该使程序员能够进行调用。

尽管官方没有透露细节,但是从这些内容可以看到,Mojo很快的原因可能是他们从底层构建了很多能力。比如,官方实例中有一个问题是,在GPU编程中选择til因子会极大地影响最终的程序性能。Til因子指的是GPU线程块的大小,它决定了一个线程块中有多少个线程一起执行。选取不同的til因子,会导致线程块的数量不同,从而影响程序的执行效率。但是til因子选择依赖你的硬件。而在Mojo中,这样的选择不需要你自己决定,Mojo可以自动帮你寻找最优的til因子值,如下图所示:

Mojo总结

官方承诺,Mojo未来会开源,会支持CPU、GPU、TPU等。尽管官方宣传Mojo速度很快,也有很多人表示兴奋,但是Mojo是否能取代Python变成未来主流的面向AI的编程语言,需要看它是否真的可以变成像Python那样简单易用,但是却性能强悍!




转载请注明:http://www.xxcyfilter.com/zyfl/zyfl/16280.html