LoginSignup
16
18

More than 3 years have passed since last update.

papermillを試してみた

Posted at

はじめに

『Jupyter だけで機械学習を実サービス展開できる基盤』を読んで、基盤にjupyter notebookを直接組み込むなんてことが出来るのかととても感心しました。記事の中でjupyter notebookを外部から実行できる 『papermill』というライブラリが登場したので、これを使ってみたいと思います。

参考

環境

  • macOS Catalina 10.15.3(19D76)
  • python 3.7.5

手順

インストール

pip install papermill

実行

フォルダ構成は下記のようにしました。input.ipynbが実行したいnotebookで、実行コードをmain.pyに書きます。

work/
 ├ main.py
 └ input.ipynb

input.ipynbの中身はごくシンプルに下記のようにしました。

image.png

ここで、1つ目のセルにparametersというタグがついています。タグはメニューのView-Cell Toolbar - Tagsと選択するとセル右上のテキストボックスが表示されるので、ここにparametersと入力しAdd tagをクリックして追加します。papermillはnotebook内のparametersタグが付いたをセルを探しに行って、セル内の変数を書き換えることができます。

python APIでの実行は次のようにします。実行後のnotebookが./output.ipynbとして出力されます。

main.py
import papermill as pm

pm.execute_notebook(
   './input.ipynb',
   './output.ipynb',
   parameters = dict(alpha=0.6, ratio=0.1)
)

python main.pyで実行します。

$ python main.py 
Executing: 100%|████████████████████████████████| 3/3 [00:01<00:00,  1.80cell/s]

./output.ipynbを開いてみると次のようになっています。Injected-parametersというタグが付いたセルが追加されていて、パラメーターが上書きされています。

image.png

CLIから実行するには次のようにします。booleanや数値はpapermillが勝手に判断してくれます。

$ papermill ./input.ipynb ./output.ipynb  -p alpha 0.6 -p ratio 0.1
Input Notebook:  ./input.ipynb
Output Notebook: ./output.ipynb
Executing: 100%|████████████████████████████████| 3/3 [00:01<00:00,  2.67cell/s]

パラメーターはyamlファイルでも指定できます。

work/
 ├ main.py
 ├ input.ipynb
 └ parameters.yaml

CLIで次のように実行します。

papermill ./input.ipynb ./output.ipynb -f ./parameters.yaml

クラウドストレージに保存することもできます。その場合、オプションもインストールする必要があります。

pip install papermill[all]

./output.ipynbの部分をクラウドの宛先に変えてやります。下記はAWSのS3の例です。CLIでconfigureされていれば実行できます。

papermill ./input.ipynb s3://xxxxxxxxxx/output.ipynb -f ./parameters.yaml

おまけ

出力先を入力と同じにすると上書きになります。

papermill ./input.ipynb ./input.ipynb -f ./parameters.yaml

複数回繰り返してもInjected-parametersのセルが上書きされるだけなので、きちんとパラメータは書き換えられます。

おわりに

flaskで管理画面を作って学習とか管理できると面白そうです。

16
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
18