こんにちは。AS部DS1課の戸塚です。 以前Papermillを使う機会があったので、本記事ではPapermillの特徴や用途について書いていきたいと思います。
Papermillとは
PapermillはJupyter Notebookをバッチ実行するためのツールです。 Papermillを使えば,ノートブックに引数を与えた上でバッチ実行できるため,パラメータごとにノートブックを作成せずに済みます。 また、S3上のNotebookを直接に読み書きする機能を持っており、実行結果をS3上にNotebookとして保存することができます。
JupyterLabとは
Jupyter LabとはJupyter Notebookの進化版で、次世代のブラウザ上で動作するプログラムの対話型実行環境です。データ分析には欠かせないツールの1つです。 ノートブックと呼ばれるファイルにpythonなどのプログラムを記述し、実行結果を逐次確認しながら、データ分析を進めることができます。
JupyterLab+Papermill
Jupyter Notebookはpythonスクリプトのように引数を与えることができません。そのため、もしバッチ処理を実行するとなると、パラメータごとにノートブックを編集することとなり、非常に大変です。 その解決策として、Papermillを用いることでノートブックに引数を与えた上でバッチ実行できるため,パラメータごとにノートブックを作成せずに済みます。
Papermillの使い方
インストール
以下のコマンドでPapermillをインストールします。
pip3 install 'papermill[all]'
JupyterNotebookの準備
設定したパラメータを表示するだけの下図のようなノートブックを作ります。
次に,Papermillに対応するためにこのノートブックを修正します。といっても修正するのは変数を指定する部分のみです。
具体的には,ノートブックのどこか1つのセルで引数としたい変数をまとめて定義するように修正します。上記の例であれば,1つのセル内で alpha やratio といった変数を指定するように修正します。 そして,この変数定義をしたセルをPapermillが認識できるように parametersの値を「タグ」として指定します。
タグの追加
タグを指定したいセルをクリックして選択(今回であれば一つ目のセルを選択)
右サイドバーの プロパティ設定ボタンをクリック
右サイドバーの「Add Tag」の欄をクリックして parameters
を入力する
ボタンをクリックしてタグを確定する。
parameters
タグの確定を確認したら、ノートブックを上書き保存する
JupyterNotebookの実行
Papermillでは,PythonAPIとCLIコマンドの2種類のインターフェイスが提供されています。
今回はCLIコマンドで実行してみます。実行結果をoutput.ipynb
のファイル名で保存するものとして実行方法を示します。
以下のコマンドは、ノートブック内のparameters
タグを付けたセルの変数alpha
とratio
の値をそれぞれ1
と2
に変更しています。
$ papermill input.ipynb output.ipynb -p alpha 1 -p ratio 2
output.ipynbをJupyterで開くと,下図のようにalphaとratioの値が上書きされて実行されていることがわかります。
S3上のNotebookの読み書き
下記のコマンドのように、ノートブックの読み込み先と出力先をS3バケットに指定することで、S3バケット上にあるノートブックの読み書きが可能です。
$ papermill s3://{バケット名}/{読み込み先ノートブック名} s3://{バケット名}/{出力先ノートブック名} -p alpha 1 -p ratio 2
戸塚 蓮弥(執筆記事の一覧)
AS部DS1課