2
2

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 3 years have passed since last update.

Docker(19.03)でgpu使って学習したかった時の覚書ーTensorflow/Keras

Last updated at Posted at 2020-06-01

#はじめに
DockerインストールしなおしてみたらDocker環境下TFやKerasで学習しようとしたときにGPU認識してくれなくてしばらくハマったので覚書です。

#こういう環境にしたい

Docker 19.03

--コンテナ内--
ubuntu 18.04
cuda 10.0
cudnn 7.4
tensorflow-gpu 1.14.0
keras : latest

過去記事のResNet学習環境を作ることとします。

#気を付けることその0:Dockerのバージョン
まずここが違ってくるとお話になりません。
旧と現では結構コマンドも変わってきてる模様。
確認して合う環境を構築しましょう

docker環境確認方法はホスト側で以下コマンドです

docker version

今回はDockerバージョン19.03を対象とします

#気を付けることその1:コンテナ立ち上げ時のコマンド
いつのまにか--runtime=nvidiaじゃなくなってたので注意
GPU使いたいときは--gpu all(もしくは番号指定)コマンドになったんだそうで
より直感的ですね。
こちらの記事を参考
https://qiita.com/ksasaki/items/b20a785e1a0f610efa08

#気を付けることその2:cuda,cudnn,tensorflow-gpu,pythonのバージョン
毎回引っかかるんだけどここに齟齬あるとほんと動きません。
オフィシャルの動作確認表を参考に入れましょう
LinuxのGPU周りの整合表は以下の通りでした。macは別表へ
https://www.tensorflow.org/install/source#gpu

今回はtensorflow-gpu==1.14.0が使いたかったので、それに合わせてCUDA10.0,cudnn7.4,python3.6を入れることとします。

#環境構築していく
今回はcuda,cudnnのバージョンを狙い打ちたいので下記のコマンドでコンテナ立ち上げました

docker run --gpus all -it (ここにいろいろコマンド)--name test_container nvidia/cuda:10.0-cudnn7-devel-ubuntu18.04 /bin/bash

実際は(ここにいろいろコマンド)部分に細々としたディスプレイ設定とかディレクトリのマウント設定とか付け足してます
過去記事参照ください

あらかじめdockerfileとかに書けたらいいんだろうけどそれもそれで面倒なので必要なものを後からいれていきます。

apt update
apt install python-pip3 
pip3 install tensorflow-gpu==1.14.0 keras matplotlib scikit-learn pillow

これで学習まわるはず

#GPU使えてるか?の確認
学習回し始めた時にワーニング文的なのが出るのでそこ確認しても良いし
一度Ctrl + P + Qでコンテナから抜けて
コマンド

nvidia-smi

でGPUの占有率見ることでも確認できます。

#おわりに
Dockerまわりもう少しお勉強が必要そう
より良いコマンドを探していきたいです

2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?