为什么Jupyter是数据科学家们实战工具的首选?
作者:CQITer小编 时间:2018-11-05 16:21
Jupyter 是一款免费、开源的交互式 web 工具。研究人员可以利用该工具将软件代码、计算输出、解释文本和多媒体资源组合在一个文档中。计算笔记本已经发展了几十年,但是过去几年里,Jupyter 特别受欢迎,更是成为数据科学家们实战工具的首选。个中原因如何?本文带你一探究竟。

数据科学
大型综合巡天望远镜(Large Synoptic Survey Telescope,LSST)坐落在智利安第斯山脉帕穹山脊,计划 2022 年启用。它将自动探测南方的天空,每晚产生数兆字节的数据。为了处理这些数据,天文学家将要用到一个熟悉且日益流行的工具——Jupyter notebook。
Jupyter 是一款免费、开源的交互式 web 工具,是一种计算笔记本(computational notebook)。研究人员可以利用它将软件代码、计算输出、解释文本和多媒体资源组合在一个文档中。计算笔记本已经发展了几十年,但是过去几年里 Jupyter 特别受欢迎。因为它的架构经过重新设计,允许 notebook「说」几十种编程语言,所以深受开发人员的喜爱。而根据其共同创始人 Fernando Pérez 的说法,这一点更体现在它的名字中:Jupyter——Julia ( Ju )、Python ( Py )、R。
对代码共享网站 GitHub 的一项分析显示,截至 2018 年 9 月,Jupyter 上公开的 notebook 超过了 250 万份,而 2015 年这一数字仅为 20 万左右。Pérez 表示,Gmail 和 Google Docs 等 web 软件的改进是驱动其使用量增长的一个原因;Python 和数据科学的成熟也是其中一个原因,尤其是 notebook 可以轻松地访问远程数据,因为有些数据可能无法下载(比如 LSST 的数据)。针对 Jupyter 基于云的能力,Pérez 表示,很多情况下,把计算机移动到数据比将数据移到计算机内要容易得多。因为这种架构相当于告诉读者数据在哪里,而且还提供了一台电脑。
华盛顿特区乔治·华盛顿大学的机械和航空工程师 Lorena Barba 说,对于数据科学家来说,Jupyter 已经成为事实上的标准。而负责协调 LSST 数据管理团队的西雅图华盛顿大学天文学家 Mario Jurić则表示,「我从未见过这么快的迁移,真是太好用了!」
数据勘探
可计算的 notebook 本质上是用于科学计算的实验室 notebook。比如说,研究人员没有将 DNA 凝胶黏贴在实验室协议旁边,而是嵌入代码、数据和文本来记录他们的计算方法。圣路易斯·奥比斯波加州理工州立大学的 Jupyter 联合创始人 Brian Granger 说,这种做法的结果是产生了「计算叙事」——一种允许研究人员用分析、假设和推测补充其代码和数据的文件。
对于数据科学家而言,这种格式可以推动探索。Barba 表示,notebook 是一种交互式计算方式,在这种环境中,用户可以执行代码,观察结果,修改并重复研究人员与数据之间的一种迭代对话。它并不是这种对话的唯一载体,交互式 Python 解释器 IPython(Jupyter 前身 IPython Notebook 的创建基础)也是一种载体。但 notebook 允许用户记录这些对话,并在「主题、理论、数据和结果之间建立更强大的联系」。
研究人员还可以用 notebook 为其软件创建教程或交互式手册。哈佛大学的系统神经科学家 Mackenzie Mathis 对 DeepLabCut 就是这么做的。DeepLabCut 是其团队为行为神经科学研究开发的一个编程库。他们可以用 notebook 来准备手稿,或者作为教具。自 2013 年开始,Barba 就在她所教的每门课程中实施了 notebook。在 2014 年的一次主题演讲中,她还讲述了 notebook 让学生以课堂无法比拟的方式互动地参与课程并从中受益的经验。她说,「IPython notebook 确实是科学和工程教学计算的一个杀手级应用程序。」
说我的语言
Jupyter notebook 有两个组件。在前后端网页中,用户在矩形输入框中输入编程代码或者文本。然后浏览器把代码输送到后端内核,后端内核运行该代码并把结果反馈回来。据 Pérez 统计,已经有超过 100 个 Jupyter 内核被创建,支持数十种编程语言。正常来说,每个 notebook 只能够运行一个内核和一种语言,但存在工作区。例如,一个 Demo notebook,支持 Python、Julia、R 和 Fortran。
重要的是,内核不需要驻留于用户的计算机。当 LSST 的未来用户使用 Jupyter notebook 来分析数据时,代码会在位于伊利诺斯州的超级计算机上运行,提供台式机、笔记本无法比拟的算力。Notebook 也可以在云上运行。例如谷歌的 Colaboratory 项目,为 Jupyter notebook 提供了以谷歌为主题的前后端。它使得用户能够协作、运行利用谷歌云资源的代码,例如图处理单元,可以把文档保存在谷歌 Drive 上。
Jupyter 的最新版本是 JupyterLab,于 2018 年 1 月作为测试版发布,它既能作为独立的安装包使用,又能作为免费 Anaconda 科学计算环境的一部分使用。



