はじめに
- JupyterNotebookだけで前処理もモデル開発も全部やりたいなー(特にPoCフェーズだと)、でも管理どうしようかなーと思っていたところに下記記事(およびその関連記事)を読んで、papermillとcommuterといういい感じのOSSを知ったので使ってみました。
Beyond Interactive: Notebook Innovation at Netflix
実現できること
-
各データサイエンティスト/エンジニアが各自のローカル環境でJupyterNotebookで前処理やモデル開発ノートブックを作って実行するが、実行結果の共有・管理がめんどくさい
- -> papermillで、実行結果が吐かれたノートブックをS3にそのまま挙げられる
-
検証のノートブックを、パラメータを色々変えて実行したいが、シリアルに実行していくのはめんどくさい(ノートブック複製して一気に流してもよいが煩雑になる)
- -> papermillで、ノートブックを外からパラメータを与えてパラレルに実行できる
-
papermillによってS3にノートブックが貯まっていくが、確認したいときにわざわざダウンロードするのはめんどくさい
- -> commuterで、S3上のノートブックをブラウザからそのまま確認できる
参考リンク
papermill is a tool for parameterizing, executing, and analyzing Jupyter Notebooks.
commuter reads notebooks from a local directory or Amazon S3
利用手順
通常通りノートブックでコーディング
- 通常通りノートブックでコーディングする
papermillによるノートブック実行
- papermillをインストールする
インストールコマンド
$ pip install papermill
- 外からパラメータを与えて実行したい場合は、そのパラメータを書いているセルに、"parameters"タグを打つ
画面操作
View -> Cell Toorbar -> Tags -> "parameters"
- papermillを使って、ノートブックを外から実行する
ノートブック実行コマンド
papermill sample01.ipynb s3://sagemaker-bucket001/outputs/sample01.ipynb -k python3 -p a 4
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上のノートブックにブラウザからアクセスする
おわりに
- これで最低限、S3にノートブック実行結果が溜まるので、後から追うことができるようになるかと。