資料科學家愛用的工具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修復衝突變得非常直覺方便。

熱門新聞

Advertisement