Skip to content
Latchkey

CIにおけるJupyterノートブックとは?パイプラインでのノートブック実行を解説

Jupyterノートブックは、コード、出力、文章を組み合わせたインタラクティブなドキュメントです。CIで実行するとは、エンドツーエンドでまだ動作することを検証するために自動的に実行することを意味します。

Jupyterノートブックは、ほとんどのデータサイエンスが行われる方法です。コードを書いて実行し、チャートやテーブルをインラインで表示するインタラクティブなドキュメントです。しかしノートブックは時間とともに動作を保つのが難しいことで知られており、だからこそチームはCIで実行します - ノートブックがまだクリーンに実行されることを証明するためです。

Jupyterノートブックとは何か

Jupyterノートブックは、セルで構成されたファイル(.ipynb)です - 実行して出力を生成するコードセルと、文章を含むmarkdownセルです。結果をすぐに確認でき、ナラティブ、コード、可視化を1つのドキュメントに混在させられるため、探索と分析に理想的です。

なぜノートブックは保守が難しいか

ノートブックは出力をコードと一緒に保存し、順序を無視して実行でき(隠れた状態)、テストを持つことがまれです。先月動いていたノートブックが、依存関係やdatasetが変わると静かに壊れることがあります。自動化がなければ、再び開くまで誰も気づきません。

CIでノートブックを実行する

nbconvert、papermill、jupyter nbconvert --executeのようなツールは、新しいkernelでノートブックを上から下まで実行します。いずれかのセルがエラーを発生させるとrunは失敗し - 「このノートブックはまだ動くか?」を自動化されたチェックに変えます。

CIでのノートブックチェック

変更のたびにクリーンなkernelでノートブックを実行し、壊れたセルがpipelineを失敗させるようにします。

Executing a notebook in CI
steps:
  - run: pip install jupyter nbconvert
  - run: jupyter nbconvert --to notebook --execute analysis.ipynb

Latchkeyノート

ノートブックはしばしば大規模なdatasetやモデルを読み込み、MLセルにはGPUが必要な場合があります。Latchkeyでは、必要に応じてノートブックチェックをGPUや大きなrunnerで実行し、それらが取得するdatasetやモデルの重みをcacheし、そうでなければ長いノートブックのrunを失敗させる一時的なデータ取得をauto-retryします。

重要なポイント

  • Jupyterノートブックは、実行可能なコード、出力、文章を1つのインタラクティブなドキュメントに混在させる。
  • 保存された出力、隠れた状態、テストの欠如のため、ノートブックは動作を保つのが難しい。
  • CIで新しいkernelでノートブックを上から下まで実行すると、「まだ動くか?」が自動化されたチェックになる。

関連ガイド