LoginSignup
10
7

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-11-05

はじめに

  • 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にノートブック実行結果が溜まるので、後から追うことができるようになるかと。
10
7
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
10
7