查看原文
其他

Julia 创始人访谈:简单机器学习任务可与 Python 媲美,复杂任务胜过 Python

CSDN 2020-12-18

编者按:2012年,也就是八年前,Julia发布了最初版本。今年,科技媒体Jaxenter采访了Julia的四位创始人,Dr. Viral B. Shah, Dr. Jeff Bezanson, Stefan Karpinski 和 Prof. Alan Edelman,聊一聊这些年Julia的发展是否达到了他们对Julia寄予的厚望。采访中,他们还深入讨论了如今Julia的各种使用案例,将之与Python做了比较,并描绘了这门语言的未来。



以下为译文:

 

JAXenter:创建Julia时,您在2012年的一篇博客文章中阐述了开发该语言的原因。现在来看,Julia是否达到,或甚至超过了您的期望?

 

Julia团队:我们当然相信Julia达到了原博客文章的期望。如今,Julia实现的性能要比用于技术计算的其他动态语言好几个数量级。Julia本地程序通常比R,Python,Matlab等类似程序快10到100倍。在Twitter上讨论的机器学习示例,其中Julia比Python快10到100倍。


Julia本地程序通常比R,Python,Matlab等类似程序快10到100倍。


同时,Julia是通用的,并提供了用于创建仪表板,文档,REST API,Web应用程序,与数据库集成等功能。结果,Julia现在在许多行业中都得到了广泛的商业应用。各行各业的数据科学家和工程师不仅可以使用Julia来开发模型,还可以使用Julia Computing的产品,单击一下鼠标就能将程序部署到生产中。

 

当然,Julia还有很多事情要做。虽然我们现在拥有超过3000个Julia软件包的蓬勃发展的生态系统,并且能够调用使用Python,R,C,C ++或Java编写的所有库,最近我们的重点,是优化我们的多核,GPU和分布式计算。

 

JAXenter:在创建这门新的编程语言时,最大的难点是什么?如果用您现在拥有的知识和经验,将会用怎样不同的方式来进创建它?

 

Julia团队:编程语言是计算中最通用的结构之一。从根本上说,它们是程序员和计算机之间的接口。作为设计师的每个小决定,每天都会影响成千上万的程序员和研究人员的工作效率。

 

难点之一是保持实力。我们在2009年启动了这个项目,2012年发布开原公告。很显然,我们可以解决棘手的“两种语言问题”,即同一种语言兼顾性能和生产力。但是,我们尚不清楚它是否在全球范围内被接受。作为一项业余爱好坚持2-3年很容易,但是长期保持热情就很难了,更不用说投入精力,把它从一个业余爱好变成如今这样一个真正强大的工业级系统。无论在技术领域还是社交领域,一门编程语言都需要至少10年才能达到临界质量。在早期,我们都做了很多不同的工作。Viral为印度政府的Aadhaar项目工作,Stefan是Etsy的数据科学家,Jeff在麻省理工学院攻读博士学位。这么多年来,我们能够保持初心,把更多的时间花在Julia上。大约5年前,我们成立了Julia Computing,把Julia带到企业中,以全职工作的方式投入我们的热情。

 

我们很幸运能够在过去的十年中致力于Julia。不仅最初的创始团队还聚在一起,而且建立Julia的核心团队也有了长足的发展。回顾过去,虽然我们认为我们所做的一切还不够完美,但自认没有什么重大失误或挫折。

 

JAXenter:总的来说,您认为Julia最适合什么用例?

 

Julia团队:Julia非常适合各种形式的技术计算。在数据科学和工程工作流程中,性能至关重要–无论是分析最新CPU上的超大数据集,在GPU上大规模运行复杂的AI模型,还是在超级计算机上进行科学仿真。在所有这些领域中,Julia至少比竞争对手有10倍的优势。它可以让一个小的数据科学家和工程师团队能够实现原本需要大得多的团队的工作,以更低的成本实现市场目标。

 

JAXenter:在用于机器学习任务时,Julia与Python有何不同?

 

Julia团队:Julia在简单的机器学习任务上可与Python媲美,而在复杂的机器学习任务上甚至优于Python。在现有的Python库不提供即用型功能的情况下,你必须自己编写,但是在Python中,这是一个挑战,因为你要么牺牲性能,要么从头用C编写Python扩展。或Cython之类的东西。在Julia中,当你必须推出自己的解决方案时,它不仅易于部署,而且与使用预先存在的库相比,其性能通常更高。我们注意到,由于这个原因,许多用户都喜欢Julia的Flux和Knet软件包——只需编写普通的代码,就可以区分它们,并且通常速度足够快。出于同样的原因,许多用户也喜欢使用Julia的Turing.jl软件包进行概率编程。

 

在TensorFlow之类的系统中,通常无法使用标准python软件包的功能。Julia机器学习框架还允许将现有的Julia包重用于文件I / O,统计分布,分布式计算,图像处理等。在部署上,与其他任何代码一样,编译Julia代码就可以了。那些更大一些的框架也在木且关注Julia,Julia的工具也影响了TensorFlow 2.0等下一代框架的重新设计。

 

结果,我们发现研究人员做了许多对于其他语言来说很难(或不可能)的事情。例如,可以将复杂的Julia包(如光线跟踪器)转换为ML模型,并构建可以快速训练的计算机视觉或机器人控制系统。这些想法非常具有通用性,已应用于以下领域:量子算法和量子ML,北欧能源交易,光子芯片设计,电路中的功率流,医学成像,百亿亿次计算,传染病建模,甚至交通管理。你甚至可以重新使用Julia的ML程序包,并学习更好的训练算法。人们把这个系统向前推动了许多,做到了我们当初从未想过的事情,真是令人惊讶。

 

在科学机器学习领域,Julia提供了一个完整的SciML堆栈,而这在Python或任何其他语言生态系统中是没有的。

 

JAXenter:Julia 1.4于2020年3月发布。其中最让您兴奋的功能是什么?

 

Julia团队:多线程是我们在1.3版中宣布的一项主要功能,在1.4版中它变得更快、更强大。Julia 1.4还具有许多其他性能增强功能。其中一个主要问题是,“开始第一次绘制的时间”问题已得到解决,该问题使Julia在启动后需要花费30秒以上的时间来生成第一张绘制。现在,第一次绘制的时间缩短为12秒。如今,减少编译延迟是编译器团队的当务之急。

 

Julia的新的二进制工件BinaryBuilder也首次在Julia 1.4中得到广泛使用。这意味着,在1.4中,与其尝试在每台客户端计算机上构建二进制依赖关系(有时可以奏效,但极易失败且非常令人沮丧),对于支持它的二进制依赖关系,只需要解压缩就行,无需任何构建步骤即可使用。这让Julia有了更加可靠的体验,意味着复杂的堆栈(例如GUI工具包)开箱即用,并且可以跨平台以一致的方式进行操作。当你安装CuArrays.jl等软件包时,GPU功能也可以立即使用。这是一种神奇的体验。BinaryBuilder的基础技术令人赞叹,但真正的魔力在于,社区中的人聚在一起,为各种库创建服务器端跨平台构建recipes。所有这些技术还意味着应用程序部署是超级可靠,可重现和可移植的。

 

JAXenter:您对Julia未来有什么计划?

 

Julia团队:未来还有很多工作要做——并行计算,更多的编译器支持可区分的编程,除NVIDIA(如Intel和AMD)外还支持其他GPU加速器,代码生成方面的改进,调试工作流程的改进,更好的错误消息机制和解析器改进,更好的IDE集成,程序包作者的程序包统计信息,等等。

 

此外,在Julia Computing,我们继续专注于稳定性和可靠性,为企业提供Julia支持的产品。为此,我们正在构建JuliaTeam(让开发团队可以轻松构建Julia应用程序)和JuliaRun(有效扩展和部署Julia应用程序)。

 

JAXenter:谢谢您的回答!

 

本文为CSDN翻译文章,转载请注明出处。


原文链接:

https://jaxenter.com/julia-programming-language-interview-171506.html


更多精彩推荐

苹果M1芯片:如何开启一个时代

PHP 还有未来么,还是 25 岁就“寿终正寝”了?

开源商业化未来究竟如何?国际开源圈网红这样说

深度揭秘垃圾回收底层,这次让你彻底弄懂它

别再问如何用 Python 提取 PDF 内容了!

偷盖茨、奥巴马 Twitter 的黑客被抓了,年轻到你想不到!

点分享点点赞点在看

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存