5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

UbuntuでChainer用のGPU環境を分ける方法

Last updated at Posted at 2018-05-02

Ubuntuにおいて、nvidia-docker2を用いて、Chainer用のGPU環境を分ける方法についてまとめます。

前提

  • Compute Capability 3.0以上のNvidia製GPU (CUDA GPUs | NVIDIA Developer参照) が搭載されている
  • OSはUbuntuである
  • プログラムはPythonによって記述されている
  • プログラム内ではChainerを用いている
  • プログラムによって、必要とされるCUDAやcuDNN、Chainerのバージョンが異なる

必要なソフトウェアのインストール方法

  1. sudo apt updateコマンドを実行します。
  2. sudo apt install ubuntu-drivers-commonコマンドを実行し、ubuntu-driversをインストールします。
  3. sudo apt install `ubuntu-drivers devices | grep driver | grep recommended | awk '{print $3}'` コマンドを実行し、GPUドライバをインストールします。
  4. Get Docker CE for Ubuntu | Docker Documentationに従って、Docker CEをインストールします。
  5. Install Docker Compose | Docker Documentationに従って、docker-composeをインストールします。
  6. Installation (version 2.0) · NVIDIA/nvidia-docker Wikiに従って、nvidia-docker2をインストールします。

環境作成方法

  1. ディレクトリを作成します。

  2. 作成したディレクトリに移動します。

  3. 動かしたいプログラムのrequrements.txt (Python Tips:ライブラリをまとめてインストールしたい - Life with Python参照) を配置します。

  4. TODO部のコメントに従って編集したDockerfileを作成します。

    #TODO: 以下の{}部を記述し、コメントアウトを解除 (タグ ({CUDAのバージョン}-cudnn{cuDNNのバージョン}-devel-ubuntu{Ubuntuのバージョン}) については、 https://hub.docker.com/r/nvidia/cuda/tags/ に該当するタグが存在するかを確認すると良い)
    #FROM nvidia/cuda:{CUDAのバージョン}-cudnn{cuDNNのバージョン}-devel-ubuntu{Ubuntuのバージョン}
    #MAINTAINER {作成者氏名} <{作成者メールアドレス}>
    
    #APTのリポジトリ情報を更新
    RUN apt update
    
    #APTで必要なパッケージをインストール
    #TODO: APTでインストールするパッケージがある場合、以下に追加
    RUN apt install -y --no-install-recommends unattended-upgrades \
    #                                          TODO: Pythonで日本語を処理する場合、以下のコメントアウトを解除
    #                                           language-pack-ja \
    #                                          TODO: Python2を使用する場合、以下のコメントアウトを解除
    #                                           python-setuptools \
    #                                           python-dev \
    #                                           python-pip
    #                                          TODO: Python3を使用する場合、以下のコメントアウトを解除
    #                                           python3-setuptools \
    #                                           python3-dev \
    #                                           python3-pip
    
    #セキュリティアップデートを適用
    RUN unattended-upgrades
    
    #APTで不必要なパッケージをアンインストール
    RUN apt purge -y unattended-upgrades
    RUN apt autoremove -y
    
    #APTのキャッシュをクリア
    RUN apt clean
    
    #pythonコマンドとpipコマンドのシンボリックリンクを作成
    #TODO: Python3を使用する場合、以下のコメントアウトを解除
    #RUN echo "python" "pip" | xargs -n 1 sh -c 'ln -s /usr/bin/${0}3 /usr/bin/${0}'
    
    #必要なパッケージをpipでインストール
    COPY requirements.txt /
    RUN pip install -r requirements.txt
    
    #ホストでログインしているユーザーと同じユーザーを作成
    #TODO: 以下の{}部を記述し、コメントアウトを解除
    #RUN useradd -u {現在ホストでログインしているユーザーのユーザーID (『id -u ${USER}』コマンドで取得)} -o -m {現在ホストでログインしているユーザーのユーザー名}
    #RUN groupmod -g {現在ホストでログインしているユーザーのグループID (『id -g ${USER}』コマンドで取得)} {現在ホストでログインしているユーザーのユーザー名}
    
    #Python実行時にWarningが表示されるように設定
    #TODO: 以下の{}部を記述し、コメントアウトを解除
    #RUN echo "export PYTHONWARNINGS=default" >> ~{現在ホストでログインしているユーザーのユーザー名}/.bashrc
    
    #使用言語を日本語に設定
    #TODO: Pythonで日本語を処理する場合、以下のコメントアウトを解除
    #ENV LANG ja_JP.UTF-8
    
    #TODO: その他必要な処理を以下に記述
    
    #キャッシュや不必要なファイルを削除
    #TODO: 不必要なファイルがある場合、以下に追加
    RUN rm -rf /var/lib/apt/lists/* \
               /var/cache/apt/archives/* \
               .cache/pip/* \
               requirements.txt
       ```
    
    
  5. TODO部のコメントに従って編集したdocker-compose.ymlを作成します。

    docker-compose.yml
    version: '2.3'
    
    services:
      main:
        build: .
        runtime: nvidia
    #   TODO: 以下の{}部を記述し、コメントアウトを解除
    #    command: {実行コマンド}
    #    container_name: {コンテナ名 (自由に指定可能)}
    #    user: {現在ホストでログインしているユーザーのユーザー名}
    #    environment:
    #      - NVIDIA_VISIBLE_DEVICES={使用するGPUのID}
    
  6. docker-compose buildコマンドを実行します。

実行方法

  1. 作成したディレクトリに移動します。
  2. docker-compose up -dコマンドを実行します。

実行ログ閲覧方法

  1. 作成したディレクトリに移動します。
  2. docker-compose logs -fコマンドを実行します。

終了方法

  1. 作成したディレクトリに移動します。
  2. docker-compose stopコマンドを実行します。
  3. docker-compose rmコマンドを実行します。

補足

  • Python3を用いる場合、コンテナ内ではpythonでもpython3でも動作するようになっています。

関連記事

参考文献

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?