Skip to content
Latchkey

ノートブックテストとは?Jupyterノートブックの検証を解説

ノートブックテストとは、Jupyterノートブックがエラーなく実行され期待される結果を生成することを検証し、ノートブックが時間とともに信頼できるものであり続けるようにすることです。

ノートブックテストは、探索的なデータサイエンスと信頼できるソフトウェアの間のギャップを埋めます。ラップトップで一度だけ動くノートブックは、どのマシンでも毎回動くノートブックと同じではありません。テストにより、ノートブックは配信して依存できるほど信頼できるものになります。

ノートブックテストとは何か

ノートブックテストとは、ノートブックを自動的に実行して結果を確認することです。最低限、各セルがエラーを発生させずに実行されることを確認します。さらに良いのは、出力を検証すること - 計算されたメトリクス、テーブルの形状、チャートが期待と一致することです。

テストのレベル

最もシンプルなレベルは実行テストです。ノートブックを実行し、いずれかのセルがエラーになれば失敗させます。それを超えて、nbvalのようなツールはセルの出力を保存された期待出力と比較し、testbookはノートブックの関数を通常のpytestスイートにインポートして検証できるようにします。

パラメータ化されたrun

Papermillはノートブックにパラメータを注入して実行できます。これは、同じノートブックを異なる入力でテストするのに、また、ノートブックを単なるインタラクティブなドキュメントではなくscheduleされたパラメータ化されたjobとして使うのに役立ちます。

CIでのノートブックテスト

ノートブックの実行と出力チェックをCIに組み込み、ノートブックを壊す変更がpull requestで捕捉されるようにします。

Notebook tests in CI
steps:
  - run: pip install pytest nbval
  - run: pytest --nbval notebooks/   # execute and check outputs

Latchkeyノート

ノートブックのテストスイートは、ノートブックが大きなデータやモデルを読み込むと遅くなることがあります。Latchkeyでは、これらのassetをcacheし、より大きなrunnerやGPUで実行することでスイートを高速に保ち、auto-retryが、そうでなければrun全体を不安定にする一時的なデータ取得を処理します。

重要なポイント

  • ノートブックテストは、ノートブックがクリーンに実行され期待される出力を生成することを検証する。
  • レベルは、実行のみのチェックから出力の比較(nbval)、pytest用に関数をインポートすること(testbook)まで幅がある。
  • ノートブックテストをCIに組み込むと、数週間後ではなくpull requestで破損を捕捉できる。

関連ガイド