GPUを使用するJupyter NotebookをDockerでデプロイする

今回はローカルネットワーク上のコンピューターからGPU搭載のコンピューターのJupyter Notebookにアクセスして機械学習の勉強をする環境を構築します。

画像は作業の結果としてJupyter Notebookが動作している様子で、プログラムの内容は次のようなものです。

import torch
print(torch.cuda.get_device_name())

以下、作業手順です。

jupyter-dockerというディレクトリを作り、そのディレクトリに移動します

$ mkdir jupyter-docker
$ cd jupyter-docker

最終的なディレクトリの中身です

Dockerfile
docker-compose.yml
jupyter_notebook_config.py
notebooks/
requirements.txt

Dockerfileを作ります

FROM  nvidia/cuda:12.6.0-runtime-ubuntu22.04

RUN apt update \
    && apt install -y \
    git\
    python3\
    python3-pip

RUN apt-get autoremove -y && apt-get clean && \
    rm -rf /usr/local/src/*

WORKDIR /notebooks

COPY requirements.txt /tmp/
COPY jupyter_notebook_config.py /tmp/

RUN pip3 install --upgrade pip
RUN pip install --no-cache-dir -r /tmp/requirements.txt

CMD ["jupyter","notebook","--port","8888","--no-browser","--allow-root","--config=/tmp/jupyter_notebook_config.py"]

docker-compose.ymlを作ります

version: "3"
services:
  tensorflow:
    build: .
    runtime: nvidia
    environment:
      - NVIDIA_VISIBLE_DEVICES=all
    volumes:
      - ./notebooks:/notebooks
    ports:
      - 8888:8888

jupyter_notebook_config.pyを作ります

c.NotebookApp.ip = '0.0.0.0'
c.NotebookApp.token = 'xxx'

0.0.0.0はローカルネットワーク上の他のコンピューターからアクセスできる設定です。xxxの部分は任意に決めてください。

requirements.txtを作ります

torch
torchvision
torchaudio
tensorflow-gpu
transformers
jupyter
notebook

作成したプログラム(ノートブック)を保存するディレクトリを作ります

$ mkdir notebooks

Docker composeコマンドでコンテナを起動します

最初に実行した際に nvidia/cuda:12.6.0-runtime-ubuntu22.04のイメージをダウンロードし、必要なライブラリのインストールが行われ、Dockerのイメージがビルドされるので、コンテナの起動に数分かかりますが、次回以降は瞬時に起動します。

$ docker compose up

以上です。

コメントする