Edited at

papermillとcommuterでJupyterNotebook中心のワークフローを実現する


はじめに


  • JupyterNotebookだけで前処理もモデル開発も全部やりたいなー(特にPoCフェーズだと)、でも管理どうしようかなーと思っていたところに下記記事(およびその関連記事)を読んで、papermillcommuterといういい感じのOSSを知ったので使ってみました。

    Beyond Interactive: Notebook Innovation at Netflix


実現できること



  • 各データサイエンティスト/エンジニアが各自のローカル環境でJupyterNotebookで前処理やモデル開発ノートブックを作って実行するが、実行結果の共有・管理がめんどくさい


    • -> papermillで、実行結果が吐かれたノートブックをS3にそのまま挙げられる




  • 検証のノートブックを、パラメータを色々変えて実行したいが、シリアルに実行していくのはめんどくさい(ノートブック複製して一気に流してもよいが煩雑になる)


    • -> papermillで、ノートブックを外からパラメータを与えてパラレルに実行できる




  • papermillによってS3にノートブックが貯まっていくが、確認したいときにわざわざダウンロードするのはめんどくさい


    • -> commuterで、S3上のノートブックをブラウザからそのまま確認できる




参考リンク

papermill


papermill is a tool for parameterizing, executing, and analyzing Jupyter Notebooks.


commuter


commuter reads notebooks from a local directory or Amazon S3



利用手順


通常通りノートブックでコーディング


  • 通常通りノートブックでコーディングする

スクリーンショット 2019-11-05 0.57.52.png


papermillによるノートブック実行


  • papermillをインストールする


インストールコマンド

$ pip install papermill



  • 外からパラメータを与えて実行したい場合は、そのパラメータを書いているセルに、"parameters"タグを打つ


画面操作

View -> Cell Toorbar -> Tags -> "parameters"


スクリーンショット 2019-11-05 1.14.04.png


  • papermillを使って、ノートブックを外から実行する


ノートブック実行コマンド

papermill sample01.ipynb s3://sagemaker-bucket001/outputs/sample01.ipynb -k python3 -p a 4


スクリーンショット 2019-11-05 1.16.18.png


commuterによるノートブック確認


  • commuter環境をdockerで構築する


Dockerfile

FROM node:latest

# run installation/ build commands.
RUN npm -g config set user root & npm i --quiet --no-progress --unsafe-perm -g @nteract/commuter

ENV HOST=0.0.0.0
ENV PORT=4000

EXPOSE 4000

CMD npm run start



docker-compose.yml

version: '3'

services:
commuter:
build:
context: '.'
dockerfile: 'Dockerfile'
ports:
- "14000:4000"
network_mode: "bridge"
environment:
- NODE_ENV=production
- HOST=0.0.0.0
- COMMUTER_STORAGE_BACKEND=s3
- COMMUTER_DISCOVERY_BACKEND=none
- COMMUTER_PORT=4000
# - COMMUTER_LOCAL_STORAGE_BASEDIRECTORY=/app
# - COMMUTER_ES_HOST
- COMMUTER_S3_BASE_PREFIX=outputs
- COMMUTER_S3_PATH_DELIMITER="/"
- COMMUTER_BUCKET=sagemaker-bucket001
- COMMUTER_S3_KEY=<aws_access_key_id>
- COMMUTER_S3_SECRET=<aws_secret_access_key>
# - COMMUTER_S3_ENDPOINT
# volumes:
# - /opt/commuter:/app/commuter
restart: always
command: commuter


起動コマンド

$ docker-compose up



  • S3上のノートブックにブラウザからアクセスする

スクリーンショット 2019-11-05 8.50.13.png

スクリーンショット 2019-11-05 8.49.36.png


おわりに


  • これで最低限、S3にノートブック実行結果が溜まるので、後から追うことができるようになるかと。