JuliaCon2020:Julia已经准备好生产了

2020-08-09 06:00:45

上一次我发布了关于从JuliaCon 2020获得DataFrames.jl的外卖的帖子。这一次,我想分享我在这个极其成功的活动中参加不同讲座的大致结论。

我现在已经花了20年的时间在企业环境中部署与数据科学相关的项目(当时还不叫数据科学,但我们已经在训练神经网络进行预测),我有很多同事都对企业软件开发有很深的了解。引用我前段时间与托马斯·奥尔恰克(Tomasz Olczak)的一次讨论,他在交付复杂的企业项目方面是真正的单枪匹马:

Julia速度很快,语法非常好,但是它的生态系统还不够成熟,不能在严肃的生产项目中使用。

多年来我都同意这一点,但在2020年7月大会之后,我相信我们可以自信地宣布。

现在让我给出一份在2020年7月大会上发表的关键(在我看来)演讲的清单,这些演讲让我得出了这个结论。

我不会在这里评论与数字处理相关的功能,因为很明显Julia在这里大放异彩,但我更想把重点放在使Julia成为在生产中部署的伟大工具的事情上(我仍然跳过了这一领域的许多有趣的讨论-查看详细的议程了解更多信息)。

在这次演讲中,Jacob Quinn提供了一个端到端的教程,介绍了如何使用Julia在设置微服务的企业中构建和部署微服务。他给出了现成的食谱,说明了如何解决在这样的上下文中需要处理的典型任务:日志、上下文管理、中间件设置、身份验证、缓存、连接池、停靠化等,这些都是企业项目的基本要素。

可发货的应用程序会说话,克里斯托弗·卡尔松(Kristoffe Carlsson)会引导你创建可以在没有安装Juliainstalled的机器上运行的可执行文件。

Julia for Scripting演示文稿,其间Fredrik EKRE讨论了在需要多次执行简短代码片段的上下文中使用Julia的最佳实践。

在Genie.jl谈话中,Adrian Salceanu展示了它目前是一个成熟、稳定、高性能和功能丰富的Julia web开发框架。

Pkg.update()和PKG中的新特性表明,目前Julia为您的项目提供了同类中最好的企业级依赖项管理功能。提供的功能列表太长了,很难在这里全部列出。

让我只提到这个生态系统中的一个特殊工具,它出现在BinaryBuilder.jl Talk中,它解释了如何使用编译语言(如C、C++、Fortran、Go或Rust)编写的软件,并轻松构建可以从Julia包使用的预编译构件(这意味着当您安装具有这种依赖关系的包时,客户端不必进行编译)。

与依赖项管理相关的一个自然话题是如何将Julia与外部工具集成。这方面的功能非常成熟。以下是涉及此主题的演讲列表:

这里值得一提的是,Julia已经与Python进行了多年的集成,参见JuliaPy。

在Julia中做一些需要集成的实际工作的一个很好的端到端示例是使用Juliatalk创建一个多声道无线扬声器设置,展示如何轻松地将东西缝合在一起(特别是ZMQ.jl、Opus.jl、PortAudio.jl和DSP.jl)。

另一个展示集成能力的有趣演讲是JSServe:Julia中的网站和仪表板,它展示了一个高性能的框架,可以在Jupyter/Atom/NextJournal和网站上轻松地组合交互式绘图、标记、小部件和纯HTML/Javascript。

这两个伟大的演讲是Juno1.0和使用VS代码,那就是目前IDE在VS代码中对Julia的支持是一流的。您拥有通常期望获得的所有工具:代码分析(静态和动态)、调试器、工作区、与Jupyter笔记本的集成,以及远程功能。

我不想介绍Julianally中提供的许多不同的ML算法,因为它们太多了(如果缺少一些东西,您可以很容易地集成它-请参阅上面的集成功能部分)。

然而,在特定模型之上,您需要允许您管理ML工作流的框架。在这个领域有两个有趣的演讲,一个是关于MLJ的:一个是针对Julia的机器学习工具箱,另一个是展示AutoMLPipeline:一个用于构建ML管道的工具箱。根据我的经验,当您想要将ML模型从数据科学家的沙盒转移到实际的生产使用时,这些工具是至关重要的。

显然,我遗漏了很多在2020年7月大会上展示的有趣的东西。不过,我希望我在此提及的各方面,即:

非常灵活和强大的功能,可以将Julia与不是用Julia编写的现有代码库集成在一起,

证明现在朱莉娅已经可以(也应该)被认为是你在企业环境中下一个项目的重要选择。

我认为至关重要的是,我们不仅需要准备好工具,而且我们有很好的实践展示如何使用它们来构建生产代码。