DockerでPytorchの実行環境


はじめに

Pytorchが使えるJupyter Notebook環境を構築します。

お手軽にPytorch使える環境が欲しいと思ったのと、Dockerfileやymlファイルの内容、オプションとかよく忘れちゃうので備忘のために記事にしました。

※ Dockerはインストールしておいて下さい。

Dockerイメージをつくる

ベースイメージは jupyter/datascience-notebook を使います。

今回はこれに加えてpytorchをインストールします。
pipコマンドは ここ で確認します。
下図のように選択しました。

続いて、Dockerfileからコンテナイメージ作成します。
Dockerfileはこんな感じ

FROM jupyter/datascience-notebook

USER root

RUN pip install torch torchvision

USER jovyan
WORKDIR /home/jovyan
  • イメージビルド(Docker build)
docker build -t 好きなイメージ名 .
  • コンテナ作成(Docker run)
docker run -p 80:8888 -v ./:/home/jovyan/work イメージ名
  • pオプションでポートを指定します。
    • ホスト側は空いてるポートを指定する
    • -p 「コンテナ側」:「ホスト側」
  • vオプションでホスト側のディレクトリをマウントします。
    • -v 「ホスト側」:「コンテナ側」
    • 「ホスト側」のディレクトリにソースコード置いてください。

docker runを実行したら、http://localhost:8888 でjupyter notebookが表示されるようになります。

ただ、このままだと Docker runの度に色んなオプションを指定する必要がありめんどくさいので、docker-composeでパラメータもまとめて実行出来るようにする。

docker-composeで実行

docker-compose.ymlをこんな感じで作成して、

version: "3"
services:
  jupyterlab:
    build:
      context: .
    user: root
    ports:
      - "80:8888"
    volumes:
      - "./:/home/jovyan/work"
    environment:
      GRANT_SUDO: "yes"
    command: start-notebook.sh --NotebookApp.token=""

docker-compose up --buildを実行でコンテナの作成・起動をします。

  • build でDockerfileを使ってコンテナ作成できます。
    • 今回はcontext: .なのでカレントディレクトリにあるDockerfileを使ってます
  • ports でポートを指定します。
    • 「コンテナ側」:「ホスト側」
  • volumes でマウントするディレクトリを指定します
    • 「ホスト側」:「コンテナ側」
  • command でコンテナ起動時のコマンドを指定します
    • jupyter notebookの起動にstart-notebook.shを使います
    • オプション--NotebookApp.token=""をつけるとアクセス時のTokenの確認がなくなります

これで、http://localhost:8888にアクセスするとjupyter notebookが使えるようになると思います。

後はpytorchで色んなモデルを実装していきましょう。

以上です。