一文读懂数据科学 Notebook

【编者按:本文主要介绍什么是 Notebook,Notebook 在数据科学领域的应用的重要性与优势,以及数据科学家/算法团队在选择 Notebook 时需考虑哪些关键因素。同时,基于 Notebook 的筛选考量维度,对常见的 Notebook 进初步对比分析,为数据科学家、算法工程师提供参考。】

Notebook 是一种基于网页的交互式计算方式,用户可在 Notebook 中进行开发、文档编写、运行代码、展示结果以及结果分享。与传统非交互式开发环境相比,Notebook 最大的特点是允许逐单元格(cell)执行脚本。Notebook 是数据科学领域至关重要的工具,数据科学家使用 Notebook 进行实验和探索任务。近年来随着大数据的发展,业务分析师等非技术人员也越来越多地开始使用 Notebook。

1. Notebook 的核心优势

在传统的非交互式开发环境中,需要将开发人员编写完成的程序编译为可执行文件,然后完全运行该可执行文件,如出现错误,则需要返回编辑器键入新的代码,再重新运行全部代码。

而在 Notebook 中,开发人员可以逐单元格(cell)编写和运行程序,出现错误时,仅需调整并运行出现错误的 cell,正确运行的 cell 已保存在内存中,无需重复运行,极大提升了开发效率。Notebook 也因此深受数据科学家和算法工程师的喜爱,被广泛应用于 AI 算法开发训练领域。以深度学习的实验为例,模型的训练通常需要几小时至十几小时,运用 Notebook 进行模型调试,进行微小更改后,无需对模型全部进行重新训练,可极大节省数据科学家和算法工程师的时间。

2. Notebook 的基本构成

最早的 Notebook 是 1988 年推出的 Mathematica。早期的 Notebook 主要用于学术领域,随着近十年来 Notebook 逐渐由学术界进入到产业领域,越来越多的 Notebook 涌现在市场中,如开源的 Jupyter、Apache Zeppelin,商业化托管的 Colab、JetBrains Datalore、IDP Studio** 等,支持混合多语言的 Polynote 等。

尽管 Notebook 的种类众多,其最核心的构成均包含两大组件:一是前端的客户端,由有序的输入/输出单元格列表构成,用户可以在这些单元格中输入代码、文本等 。另一组件是后端内核(Kernel),其可配置在本地或云端。代码由前端传递给 Kernel,Kernel 运行代码后将结果返还给用户。Kernel 决定了 Notebook 的计算性能,IDP Studio** 采用 Rust 语言实现重写 Kernel,Notebook 启动速度和资源配置速度提升了一个数量级。

(** 本文中仅使用 IDP Studio 概括性指代 IDP Studio 中 notebook 交互式编程环境,IDP Studio 中其他模型管理、模型发布等插件功能不在本文讨论范围)

3. 如何选择适合的 Notebook

不同的 Notebook 各具特点,数据科学家和算法工程师在实际使用时需根据自身核心诉求选择最合适的 Notebook 工具。我们基于对大量数据科学家的访谈,总结出数据科学家在 Notebook 的选择中关心的四大核心问题,供广大算法开发和数据挖掘人员作为工具筛选标准的参考。
一文读懂数据科学 Notebook_第1张图片

1) 基本功能的完备和易用性

  • 安装部署:对于新手数据科学家来说,商业化托管的 Notebook(如 IDP Studio, Colab, JetBrians Datalore)采用 SaaS 模式,开箱即用,更加易于安装上手。开源 Notebook 需使用者自行安装,通常本地安装相对容易,但若安装、运行到远程服务器上,则具有较大挑战。
  • 版本管理:无论算法模型,还是算法接口,都会需要不断的更新和优化,版本的管理至关重要。不同 Notebook 版本管理功能的完备和易用性具有差异,如 Jupyter 等开源产品支持 Git 进行版本管理;IDP Studio 等在支持 Git 的同时具有内置的版本管理功能,自动进行历史版本的保存,而 Colab 暂不支持版本管理功能。
  • 语言支持:机器学习和数据科学领域常用的语言有 Python、SQL、R 等,Python 遥遥领先,根据 Kaggle2021 年对逾 25,000 名数据科学家的调研,84%采用 Python。目前常见的 Notebook 均对 Python 有较好的支持,但对于第二大和第三大常用语言 SQL 和 R 的支持深度却不尽相同。因此,数据科学家在选择工具时,需考虑 Notebook 是否天然支持自己常用的语言。如 Jupyter 可较好支持 Python、Julia 和 R 语言,但在支持 SQL 时需通过安装插件、自行配置;IDP Studio 则天然深度支持 Python 和 SQL, 对其他非常用语言目前还尚未支持;若需要对 Scala 及其他多语言均有较好支持,则可以考虑 Polynote。
    一文读懂数据科学 Notebook_第2张图片

2) 效率提升

在基本功能的基础上,数据科学家关注 Notebook 是否可以帮助其减少非核心工作,提升开发效率。

  • 代码辅助:代码辅助可以极大程度上帮助开发者节约时间,提升效率。主要的代码辅助包括代码补全、错误提示、快速修复、定义跳转等。开源工具具有丰富的生态体系,普遍需要依托第三方插件实现代码辅助功能。商业托管类产品内置代码辅助功能,但功能侧重点和性能方面具有,其中代码补全是普遍的功能。IDP Studio 在代码辅助功能上最为全面,速度和性能方面相对体验更优,但对于部分第三方库的函数的补全还有待完善。
  • 数据源的接入:数据是数据科学家日常工作的基石,通常数据源分散在各地,对数据的接入带来极大挑战。是否可以便捷接入数据至关重要,数据科学家需根据自身数据源的分布,选择合适的 Notebook。目前,Jupyter、Zeppelin 开源软件需数据科学家自行配置接入;Colab 仅支持 Google Drive 中的数据接入;IDP Studio 已对主流数据源进行了集成对接,使用者可一键式接入数据源。
  • 环境管理:先对成熟的数据科学家和算法团队对便捷的环境设置和环境管理具有更要的要求,他们希望能够快速配置环境,同时希望能够构建并管理一个可以在个人和团队间进行共享的一致性环境。不同 Notebook 对于环境配置和复用的支持力度不同,综合来看,天然支持团队协作的 Datalore 等在环境管理方面易用性稍高。使用者可根据自身对环境管理的需求,进行选择。

3) 加速协作

  • 跨团队的协作分析:算法和业务分析的耦合日益深入,算法开发人员希望能够将结果以可交互的可视化报告的形式分享给业务人员,实现算法团队和业务团队的高效协同分析。对于跨团队协作有较强需求的数据科学家,可更多关注今年来新推出的、在功能定位上突出团队协作的 Datalore、IDP Studio 等 Notebook。
  • 协作编程:除跨团队协作外,Notebook 的共享、实时协作编辑和评论,也成为数据科学家们日渐突出的需求。目前看来,海外数据科学家对该功能的需求更加强烈。目前常见 Notebook 均支持一定程度的协作编程,但在实时性和易用性上存在差异。

    4) 成本

    成本通常是影响数据科学家和算法工程师选择的重要考量因素,但在 Notebook 的选择领域,我们认为该因素的重要性相对低于性能和易用性,因为即时商业化的 Notebook,对于个人使用者通常提供免费的基础版本。
    一文读懂数据科学 Notebook_第3张图片

我们很高兴看到 Notebook 愈加受欢迎,并逐渐成为算法团队和业务团队的沟通桥梁。Notebook 在产业界应用也进一步深入,为数据科学家们提供了良好的算法开发、试验和探索等的支持。


更多技术内容,欢迎关注公众号:Baihai IDP

你可能感兴趣的:(一文读懂数据科学 Notebook)