Papermill は、 Jupyter Notebook をパラメータ化、実行、分析するためのツールです。
製紙工場では次のことが可能です。
これにより、ノートブックの使用方法に新たな可能性が広がります。例えば:
Papermill は、データ パイプラインでノートブックを大規模に使用した経験に基づいて、ノートブックのパラメーター化と実行に対して独自のアプローチを採用しています。
コマンドラインから:
pip install papermill
すべてのオプションの io 依存関係については、 s3
やazure
などの個別のバンドルを指定するか、 all
使用できます。エクストラとして追加できるパラメーターのフォーマットに Black を使用するには、['black'] が必要です。
pip install papermill[all]
このライブラリは現在、Python 3.8 以降のバージョンをサポートしています。 Python のマイナー バージョンは Python 組織によって正式に廃止されるため、papermill も同様に将来サポートを終了します。
ノートブックをパラメータ化するには、タグparameters
でセルを指定します。
Papermill はparameters
セルを検索し、このセルを実行時に渡されるパラメータのデフォルトとして扱います。 Papermill は、 parameters
の値を上書きするために、入力パラメータを持つinjected-parameters
でタグ付けされた新しいセルを追加します。 parameters
でタグ付けされたセルがない場合、挿入されたセルはノートブックの先頭に挿入されます。
さらに、製紙工場を介してノートブックを再実行すると、前回の実行からinjected-parameters
セルが再利用されます。この場合、Papermill は古いinjected-parameters
セルを新しい実行の入力に置き換えます。
パラメーターを使用してノートブックを実行するには、(1) Python API を使用する方法と (2) コマンド ライン インターフェイスを使用する方法の 2 つがあります。
import papermill as pm
pm.execute_notebook(
'path/to/input.ipynb',
'path/to/output.ipynb',
parameters = dict(alpha=0.6, ratio=0.1)
)
以下は、ローカル ノートブックが実行され、Amazon S3 アカウントに出力される例です。
$ papermill local/input.ipynb s3://bkt/output.ipynb -p alpha 0.6 -p l1_ratio 0.1
注:複数の AWS アカウントを使用し、AWS 認証情報を適切に設定している場合は、コマンドラインでAWS_PROFILE
環境変数を設定することで、使用するアカウントを指定できます。例えば:
$ AWS_PROFILE=dev_account papermill local/input.ipynb s3://bkt/output.ipynb -p alpha 0.6 -p l1_ratio 0.1
上記の例では、 -p
使用してalpha
とl1_ratio
2 つのパラメータが設定されています ( --parameters
も機能します)。ブール値または数値のように見えるパラメータ値は、そのように解釈されます。ユーザーがパラメータを設定できるさまざまな方法は次のとおりです。
$ papermill local/input.ipynb s3://bkt/output.ipynb -r version 1.0
-r
または--parameters_raw
を使用すると、ユーザーはパラメーターを 1 つずつ設定できます。ただし、 -p
とは異なり、パラメータは数値またはブール値として解釈される場合でも文字列のままです。
$ papermill local/input.ipynb s3://bkt/output.ipynb -f parameters.yaml
-f
または--parameters_file
を使用すると、ユーザーはパラメーター値を読み取る YAML ファイルを提供できます。
$ papermill local/input.ipynb s3://bkt/output.ipynb -y "
alpha: 0.6
l1_ratio: 0.1"
-y
または--parameters_yaml
を使用すると、ユーザーはパラメーター値を含む YAML 文字列を直接指定できます。
$ papermill local/input.ipynb s3://bkt/output.ipynb -b YWxwaGE6IDAuNgpsMV9yYXRpbzogMC4xCg==
-b
または--parameters_base64
を使用すると、ユーザーはパラメーター値を含む、base64 エンコードされた YAML 文字列を提供できます。
YAML を使用して-y
、 -b
、または-f
を通じて引数を渡す場合、パラメーター値は配列または辞書になります。
$ papermill local/input.ipynb s3://bkt/output.ipynb -y "
x:
- 0.0
- 1.0
- 2.0
- 3.0
linear_function:
slope: 3.0
intercept: 1.0"
Papermill は、実行中に入力パスと出力パスに対して次の名前ハンドラーをサポートします。
ローカルファイルシステム: local
HTTP、HTTPS プロトコル: http://, https://
アマゾン ウェブ サービス: AWS S3 s3://
Azure: Azure DataLake ストア、Azure Blob ストアadl://, abs://
Google Cloud: Google クラウド ストレージgs://
ローカル開発環境をセットアップし、コードを変更して Papermill に戻す方法に関するガイドラインについては、CONTRIBUTING.md を参照してください。
開発ガイドラインについては、DEVELOPMENT_GUIDE.md ファイルを参照してください。これにより、コード ベースに特定の追加を行う方法がわかります。
Papermill のドキュメントは ReadTheDocs でホストされています。