Papermillを使ってみた

記事タイトルとURLをコピーする

こんにちは。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の使い方01

次に,Papermillに対応するためにこのノートブックを修正します。といっても修正するのは変数を指定する部分のみです。

具体的には,ノートブックのどこか1つのセルで引数としたい変数をまとめて定義するように修正します。上記の例であれば,1つのセル内で alpha やratio といった変数を指定するように修正します。 そして,この変数定義をしたセルをPapermillが認識できるように parametersの値を「タグ」として指定します。

タグの追加

タグを指定したいセルをクリックして選択(今回であれば一つ目のセルを選択)

papermill使い方02

右サイドバーの プロパティ設定ボタンをクリック

papermillの使い方03

右サイドバーの「Add Tag」の欄をクリックして parameters を入力する

papermillの使い方04

ボタンをクリックしてタグを確定する。

papermillの使い方05

parameters タグの確定を確認したら、ノートブックを上書き保存する

JupyterNotebookの実行

Papermillでは,PythonAPIとCLIコマンドの2種類のインターフェイスが提供されています。 今回はCLIコマンドで実行してみます。実行結果をoutput.ipynbのファイル名で保存するものとして実行方法を示します。 以下のコマンドは、ノートブック内のparametersタグを付けたセルの変数alpharatioの値をそれぞれ12に変更しています。

$ papermill input.ipynb output.ipynb -p alpha 1 -p ratio 2

output.ipynbをJupyterで開くと,下図のようにalphaとratioの値が上書きされて実行されていることがわかります。

papermillの使い方06

S3上のNotebookの読み書き

下記のコマンドのように、ノートブックの読み込み先と出力先をS3バケットに指定することで、S3バケット上にあるノートブックの読み書きが可能です。

$ papermill s3://{バケット名}/{読み込み先ノートブック名} s3://{バケット名}/{出力先ノートブック名} -p alpha 1 -p ratio 2

戸塚 蓮弥(執筆記事の一覧)

AS部DS1課