Help us understand the problem. What is going on with this article?

nvidia-dockerで機械学習環境を構築してPyCharmのインタープリタとして使う

More than 1 year has passed since last update.

機械学習環境構築時の覚え書きです。
Dockerに慣れていないので、おかしいところがあればご指摘お願いします。

動機

UbuntuでGPUを使って機械学習をしたいが、ライブラリによって要求するCUDAとcuDNNのバージョンが違ってつらいのをDockerでどうにかしたい。
慣れたエディタ(PyCharm)からDockerの開発環境を使いたい。

やったこと

  • グラボのドライバを入れる
  • Dockerを入れる
  • nvidia-dockerを入れる
  • NVIDIAのDockerイメージをベースにDockerfileを書く
  • DockerfileからDockerイメージを作る
  • コンテナを立ち上げる
  • 作業ディレクトリをマウントしてみる
  • (おまけ) DockerコンテナをPyCharmのインタプリタにする

ホスト側の環境

  • GTX 1080
  • Ubuntu 16.04
  • NVIDIA-SMI: 384.111
  • Docker: 18.03
  • nvidia-docker: 2.0.3

Docker側の環境

  • CUDA 9.0
  • cuDNN 7
  • Python: 3.5.2
  • tensorflow-gpu: 1.8.0
  • keras: 2.1.6

グラボのドライバを入れる

下のNVIDIAのサイトでGPUに対応するドライバのバージョンを調べてインストールする。

http://www.nvidia.co.jp/Download/index.aspx?lang=jp

Dockerを入れる

公式サイトを見ながらUbuntu用のDockerをインストールしました。

https://docs.docker.com/install/linux/docker-ce/ubuntu/#set-up-the-repository

nvidia-dockerを入れる

DockerでGPUを扱うには、nvidia-dockerを使う必要があるらしいので、こちらもインストールします。

https://github.com/nvidia/nvidia-docker/wiki/Installation-(version-2.0)

NVIDIAのDockerイメージをベースにDockerfileを書く

今回はCUDA9.0で構築したいので、下記のようなDockerfileになりました。
KerasとTensorflowとPythonをインストールしています。

Dockerfile
FROM nvidia/cuda:9.0-cudnn7-runtime

RUN apt-get update
RUN apt-get -y install python3-pip curl
RUN pip3 install keras tensorflow-gpu

DockerfileからDockerイメージを作る

Dockerfileのあるディレクトリで以下を実行します。
mykerasimageは任意の名前です。

sudo nvidia-docker build -t mykerasimage .

しばらく時間がかかります。
終わったら以下のコマンドで確認します。

sudo docker images

コンテナを立ち上げる

nvidia-dockerを使ってコンテナを立ち上げます。
Docker上でGPUを正しく認識していることを確認します。

sudo nvidia-docker run mykerasimage nvidia-smi

作業ディレクトリをマウントしてみる

以下のコマンドでコンテナのbashに入ることができます。

nvidia-docker run -v ホスト側のマウントしたいディレクトリのパス:コンテナ内のマウントしたいディレクトリのパス -i -t mykerasimage  /bin/bash

DockerコンテナをPyCharmのインタプリタにする

https://qiita.com/DQNEO/items/da5df074c48b012152ee

こちらを実行してユーザをDockerグループに追加して再起動してからでないと権限周りでエラーになりました。

Screenshot from 2018-05-15 20-40-54.png

こちらの画面でUnix socketを選択して問題なければ、好きなイメージをPythonのインタプリタとして使用できます。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away