Fast.ai新工具解决过去Jupyter与Git无法并用的问题

数据科学家爱用的工具Jupyter笔记本默认不支持Git,但现在人工智能研究组织Fast.ai开发了一个名为nbdev2的工具,解决了Jupyter和Git无法并用的问题。nbdev2提供一系列Hook,自动解决Git冲突,在标准的Jupyter环境就能直接使用。

科学家、工程师,甚至是学生和老师,皆会使用Jupyter作为探索资料、程序代码以及编写程序的互动式工具,而且Jupyter也能够将结果存成仪表板、书籍甚至是博客,方便分享重复使用。但在Jupyter中却没办法使用Git异步协作方法,原因在于Jupyter笔记本所使用的JSON格式,和Git冲突标记默认采用的纯文本格式不兼容,因此Jupyter没办法打开Git冲突标记文件。

Fast.ai提到,冲突在Jupyter笔记本经常见,因为Jupyter在用户每次执行笔记本的时候,都会变更非常多的资料,包括协作用户如果以不同顺序执行Jupyter中的单元格,则每一个指示单元格执行顺序的序数都会因变更而发生冲突,过去这件事需要人工耗费大量时间手动修正。

不只如此,用户在每次执行笔记本的时候,图片或是文本叙述的ID都会不停的改变,再加上部分的输出是随着时间变化,或是每个用户所使用环境的元数据也都不同,由于这些笔记本文件大量的变更,导致笔记本在进行Git diffs比对版本差异时非常耗时,不只在程序代码审查变得麻烦,也会让Git存储库容量变得庞大。

由于上述这些问题,使得Jupyter用户在笔记本协作上遭遇挫折,官方提到,过去在并用Jupyter和Git主要遇到两类问题,分别是Git冲突导致笔记本损毁,以及元数据和输出所造成不必要的冲突。

而Fast.ai利用Jupyter和Git所提供的扩展机制,开发了nbdev2来完全自动解决Jupyter加Git所会遇到的问题。nbdev2是一个开源基于Jupyter的开发平台,其包含一个新的Git整合驱动程序,能够提供笔记本原生冲突标记,即便存在Git冲突,笔记本也可以直接在Jupyter中打开,另外,Jupyter的新存储Hook能够自动删除所有不必要的元数据和不确定的单元格输出。

经过Fast.ai内部的试用,他们提到,nbdev2新工具已经完全改变组织内部协作流程,而且过去Jupyter加Git所遭遇到的问题也都获得解决,协作者甚至能够在同一个单元格中更改程序代码,现在于Jupyter修复冲突变得非常主动方便。