過去ページ JupyterNotebook20210117
実装方法はいろいろあるようで、ここではcudaが使える docker の上に JupyterNotebook を動かしてみる
cuda可能なdockerはdockerを参照の事
jupyter/datascience-notebook †
参照先https://qiita.com/hgaiji/items/edf71435d0565257f980
使用するイメージはhttps://hub.docker.com/r/jupyter/datascience-notebook
から
[illya@s ~]$ mkdir datascience-notebook
[illya@s ~]$ cd datascience-notebook/
[illya@s tensorflow-notebook]$ vi docker-compose.yml
version: "3"
services:
notebook:
image: jupyter/datascience-notebook
ports:
- "8888:8888"
environment:
- JUPYTER_ENABLE_LAB=yes
volumes:
- ./work:/home/jovyan/work
command: start-notebook.sh --NotebookApp.token=''
[illya@s datascience-notebook]$
[illya@s datascience-notebook]$ mkdir work
っで起動させる
[illya@s datascience-notebook]$ docker-compose up -d
:
7d5043dea6f3: Pull complete
Digest: sha256:ebd4f585584e5c23a6e338da699eb092b046af6837f097c3d55ec73019821822
Status: Downloaded newer image for jupyter/datascience-notebook:latest
Creating tensorflow-notebook_notebook_1 ... done
[illya@s datascience-notebook]$
この後、このサイトの8888にwebアクセスすると下記のように表示される

停止するには
[illya@s datascience-notebook]$ docker-compose down
Stopping tensorflow-notebook_notebook_1 ... done
Removing tensorflow-notebook_notebook_1 ... done
Removing network tensorflow-notebook_default
[illya@s datascience-notebook]$
[illya@s datascience-notebook]$
[illya@s datascience-notebook]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[illya@s tensorflow-notebook]$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[illya@s datascience-notebook]$
[illya@s datascience-notebook]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jupyter/datascience-notebook latest d1b0d1df88ad 17 hours ago 4.02GB
nvidia/cuda 11.2.0-base-centos7 c178fff98309 4 days ago 332MB
[illya@s datascience-notebook]$
tensorflow †
tensorflowが使えて、しかもGPUが有効でJupyterNotebookも有効なのを探していて見つけた
https://hub.docker.com/layers/tensorflow/tensorflow/2.4.1-gpu-jupyter/images/sha256-c3b4e83edf14b282902c80e0ef245115736ce4c91eabc39c93f51ca56508e504?context=explore
tensorflow/tensorflow:2.4.1-gpu-jupyter
「tensorflow-gpu」フォルダを作ってそこに Dockerfile を作る
[illya@e ~]$ mkdir tensorflow-gpu
[illya@e ~]$ cd tensorflow-gpu/
[illya@e tensorflow-gpu]$ vi Dockerfile
FROM tensorflow/tensorflow:2.4.1-gpu-jupyter
RUN pip install --upgrade pip
RUN apt-get update -y
RUN pip install torch torchvision keras scikit-learn janome matplotlib
RUN pip install tensorflow-io tensorflow-addons adabelief-tf==0.1.0
RUN pip install jupyterlab
[illya@e tensorflow-gpu]$
次に docker-compose.yml を用意します
[illya@e tensorflow-gpu]$ vi docker-compose.yml
version: "3"
services:
chaperon:
build:
context: .
dockerfile: Dockerfile
ports:
- 8888:8888
- 6006:6006
environment:
- JUPYTER_ENABLE_LAB=yes
- NVIDIA_VISIBLE_DEVICES=all
volumes:
- /home/illya/tensorflow-gpu/work:/tf
[illya@e tensorflow-gpu]$
2つのファイルを作って、まずは「docker-compose up」でフォアグランドで立ち上げます
[illya@e tensorflow-gpu]$ docker-compose up
jupyter notebook向けのtoken idが表示されますのでそれをコピーして起動したマシンの8888ポートにアクセスして
tokenと新規のパスワードを記入します。その後、docker-composeをCtrl-Cで止めて次に「docker-compose up -d」で
バックグラウンドで起動させます
jupyter/tensorflow-notebook †
参照先 https://qiita.com/y-vectorfield/items/6f2989baeb388be48448
計算機本体にはcuda-11.2がインストール済み.
dockerイメージとなる「jupyter/tensorflow-notebook」にはcudaが入っていない.
目下 telsorflow は11.1まで対応のようで、ここではもうひとつ手前の「CUDA Toolkit 11.0 Update1」を入れる
「docker build」の最中にvolume mountは使えないようなので必要なファイルはweb経由で取れるようにする.
オリジナルのサイトで何度の取得するのは迷惑なので、既に手元にあるなら近くのwebサービスに載せて取らせるようにしてみた.
ここでは
- cuda-ubuntu2004.pin
- cuda-repo-ubuntu2004-11-0-local_11.0.3-450.51.06-1_amd64.deb
- cudnn-11.0-linux-x64-v8.0.5.39.tgz
の3種を事前に取得して、近くのwebサービスに載せている.
[illya@e ~]$ mkdir tensorflow-notebook
[illya@e ~]$ cd tensorflow-notebook
[illya@e tensorflow-notebook]$ vi Dockerfile
FROM jupyter/tensorflow-notebook
USER root
RUN apt-get update
RUN apt-get -y install gnupg2
# cuda-11.0
RUN wget http://192.168.0.3/cuda-ubuntu2004.pin
RUN mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
RUN wget http://192.168.0.3/cuda-repo-ubuntu2004-11-0-local_11.0.3-450.51.06-1_amd64.deb
RUN dpkg -i cuda-repo-ubuntu2004-11-0-local_11.0.3-450.51.06-1_amd64.deb
RUN apt-key add /var/cuda-repo-ubuntu2004-11-0-local/7fa2af80.pub
RUN rm cuda-repo-ubuntu2004-11-0-local_11.0.3-450.51.06-1_amd64.deb
RUN apt-get update
RUN apt-get -y install cuda
# install cudnn
RUN wget http://192.168.0.3/cudnn-11.0-linux-x64-v8.0.5.39.tgz
RUN tar xzvf cudnn-11.0-linux-x64-v8.0.5.39.tgz -C /usr/local
RUN rm cudnn-11.0-linux-x64-v8.0.5.39.tgz
ENV PATH=/usr/local/cuda-11.0/bin:$PATH
ENV CPATH=/usr/local/cuda-11.0/include:$CPATH
ENV LIBRARY_PATH=/usr/local/cuda-11.0/lib64:$LIBRARY_PATH
RUN pip install pycuda
RUN pip install torch torchvision keras scikit-learn janome
RUN pip install tensorflow-io tensorflow-addons adabelief-tf==0.1.0
RUN apt install -y build-essential curl wget vim git bash-completion
[illya@e tensorflow-notebook]$ vi docker-compose.yml
version: '3.5'
services:
rc-notebook:
build:
context: .
dockerfile: Dockerfile
runtime: nvidia
environment:
- NVIDIA_VISIBLE_DEVICES=all
- NVIDIA_DRIVER_CAPABILITIES=all
ports:
- 8888:8888
- 6006:6006
volumes:
- /work:/home/jovyan/work
restart: always
[illya@e tensorflow-notebook]$
以上のように「Dokcerfile」と「docker-compose.yml」を用意して起動してみる
始めは「docker-compose up」で行い標準出力を眺める.
[illya@e tensorflow-notebook]$ docker-compose up
:
:
:
chaperone-notebook_1 | Or copy and paste one of these URLs:
chaperone-notebook_1 | http://27f21d8fd674:8888/?token=9c6eb81504ac92e776e66d698032b511ce8464386af590c1
chaperone-notebook_1 | or http://127.0.0.1:8888/?token=9c6eb81504ac92e776e66d698032b511ce8464386af590c1
上記のような段階まで進んだら、ブラウザで稼働マシンの 8888 ポートをブラウザで開き、内容に従って表記されている
トークン「9c6eb81504ac92e776e66d698032b511ce8464386af590c1」と登録するパスワードを入力します
その後一旦「docker-compose up」を「Crtl-c」で終了させ、その後に「docker-compose up -d」とデーモンで起動させる
[illya@e tensorflow-notebook]$ docker-compose up -d
再度ブラウザで稼働マシンの 8888 ポートを叩き、登録したパスワードでログインします