1
3

【Docker】JupyterNotebook TensorFlowでNVIDEA GPUを使う

Posted at

はじめに

 機械学習周りは得に利用ライブラリのバージョンが大切になってくると考えている。
 実環境にPythonやその他利用ライブラリをインストールしても良いが、既存のライブラリ等とバージョンが干渉する恐れがあり、仮想環境を用いるのが望ましい。
pyenv等の仮想環境を用いても良いが、今回はDockerを用いた仮想コンテナで環境構築を行う。

開発環境

環境 詳細
OS ArchLinux
Docker 24.0.5
DockerCompose 2.20.3

 本記事ではArchLinuxを用いて解説を進める。パッケージの取得方法などは利用するOSに依存する為異なるが、大まかな流れは同じとなる。
 また、Dockerは既にインストール済みであることを前提とし、取得方法は省略する。

環境構築

nvidia container toolsのインストール

 はじめに、Gitからnvidea container toolsのインストールを行う。AURに載っているGit Clone URLからコードを取得しインストールする。

shell
$ git clone https://aur.archlinux.org/libnvidia-container.git
$ cd libnvidia-container
$ makepkg -si

 なお、インストール中に依存パッケージの取得に失敗した場合はpackmanをアップデートする必要がある。

shell
$ sudo pacman -Syu

 ubuntuなどArchLinux以外のOSを利用している場合、NVIDEA公式にインストール方法が載っているため参照。

また、GPUを利用する場合ドライバが必要になる。nvidia-smiコマンドでレスポンスがあればインストールされている。

JupyterNotebookの立ち上げ

Dockerコンテナを用いてJupyterNotebookを立ち上げる。TensorFlow公式を参考にDockerfileとdocker-compose.ymlファイルを作成する。

Dockerfile
FROM tensorflow/tensorflow:latest-gpu-jupyter

RUN apt update && apt -y install tzdata
ENV TZ=Asia/Tokyo

RUN pip3 install $PACKAGE   # 必要なパッケージがある場合はインストール

CMD ["jupyter", "notebook", "--ip=0.0.0.0","--port=8888", "--no-browser", "--allow-root", "--NotebookApp.token="]
docker-compose.yml
version: "3.6"

services:
  main:
    build: .
    volumes:
      - .:/main
    working_dir: /main
    ports:
      - 8888:8888
    # ここからGPUの設定
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]

これでDockerを立ち上げるとJupyterNotebook起動する。localhost:8888にアクセスすることでJupyterNotebookにアクセスできる。

shell
$ docker-compose up

GPUの確認

最後に、コンテナ内でGPUを認識しているか確認する。

shell
$ docker-compose exec main bash

上記コマンドでコンテナ内に入り、ドライバーがインストールされているか確認したコマンドで認識しているか確認する。

shell (コンテナ内)
root$ nvidia-smi

おわりに

 以上でDockerを用いたJupyterNotebook上のTensorFlowでNVIDEA GPUを利用する環境構築が完了となる。では、良い深層学習ライフを。

1
3
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
1
3