作者 | Michael Li
译者 | Rosie
编辑 | Jane
出品 | AI科技大本营(ID:rgznai100)
10 月 29 日,Netflix 公开了他们内部开发的 Polynote。现如今,大型高科技公司公开其内部的工具或服务,然后受到业界欢迎并被采用的情况屡见不鲜。Amazon 的 AWS,Facebook 的 React.js 就是其中两个。这些大型高科技公司拥有业内最好的工程师,而且在开发中往往会面临巨大的挑战,这些挑战将催化优秀工具的诞生,Netflix 的 Polynote 就是其中的一员。数据科学或者机器学习行业需要更好的工具来编写代码,进行实验算法和可视化数据,Polynote 就是这些人的福利。
Polynote 致力于使 notebook 工作起来更像 IDE 或像 VS Code 这样的代码编辑器。它支持更好的代码自动填充功能,整理功能,富文本编辑器和 LaTex 支持。更好的语法突出显示和代码自动填充功能看上去微不足道,但是这些小的改进却会一直伴随着您的开发,并使您更加专注于实际的任务。此外,大多数编辑功能都由 Monaco 编辑器提供支持,该编辑器为 Visual Studio Code 的体验提供了良好的支持,这展现了它巨大的潜力。
当前,Polynote 仅支持 Python,Scala 和 SQL。您可能会说 Jupyter Notebook 也支持 Python,R 和 Julia 。但是它们支持多语言的方式却有所不同。对于 Jupyter Notebook 而言,您只能为一个 notebook 选择一种语言。而 Polynote 却可以在一个 notebook 中无缝支持所有语言。Polynote 通过在单元之间共享变量来实现这一功能,因此不同语言的单元可以在同一上下文中工作。不用说,这具有非常强大的潜力。通过多语言的支持,熟练的数据科学家可以使用最佳语言来完成正确的任务。该功能不仅提高了技术能力,也同时提高了性能标准。
在 Polynote 中,数据可视化是内置的。这意味着开发人员无需编写任何代码就能可视化其数据,他们只需使用 GUI 界面就可以用相应方式来查看数据。不仅如此,开发人员无需输入任何代码就可以查看变量的值,变量直接可以通过 GUI 进行显示。此外,当运行代码时,屏幕右侧会有一个进度窗口,使得我们可以了解代码当前的运行进度。
将所有这些都将加在一起,我们能够获得更好的数据直觉。
过去,您必须运行以下命令:
! pip install packages
现在,您只需指定要使代码运行所需的依赖项,Polynote 就会为您进行相关设置。这将减少代码的混乱程度。
简而言之,Polynote 并未使用旧的 REPL 模型执行代码, 它使用自己的代码解释器。最大的区别是:对于使用 REPL 的 Jupyter Notebook,您可以安全地执行单元,而不必按其写入顺序执行。您可以先执行单元 3,然后执行单元 2,最后执行单元 1。这一切都取决于您。这带来了灵活性,但却降低了 notebook 的可共享性。Polynote 处理单元执行的方式有所不同:
通过跟踪每个单元中定义的变量,Polynote 会根据在其上方运行的单元来构造给定单元的输入状态。因此,单元格的位置在 Polynote 的执行语义中很重要,从而使用户可以从上至下地阅读 notebook 。
这种感觉似乎更像是在编写脚本而不是 notebook。我们在编写时需要更加注意,从而确保一切井井有条。但是,我们却可以获得一致的代码结果和更好的可共享性。如下图所示。
我们期待工业界对 Polynote 采取何种态度,但可以肯定的是,Polynote 所显示出潜力会让工业界做出一些明智的决定。例如,像 GCP,AWS 或 Azure 这样的大型云平台是否会采用它。这非常重要,因为如果没有这些云平台的支持,依靠云平台进行研究或实验的人们将无法访问 Polynote,从而将无法使用它。
【END】