Dockerのお勉強2(+α:for DeepLearning)
- やりたいこと
- 公式ドキュメント(日本語)
- Dockerfileの書き方
- Dockerfileのビルド
- コンテナの作成とログイン
- サンプルの実行
- sudo権限をつける
- 起動中のコンテナに入る
- コンテナからイメージの作成
- コンテナとイメージの削除方法
- コンテナ名の変更
- ホスト<->コンテナ間のやりとり
- Docker imageのtagを取得する方法
- Dockerイメージのコピーと読み込み
- Dockerからデバイスを読み込む方法
- DockerからGUIを表示する方法
- Docker上でwebカメラを読み込みOpenCVのimshowなどをGUIで表示する方法
- おまけ1: pytorchでも動かしてみる
- おまけ2: chainerでも動かしてみる
- 参考
やりたいこと
Dockerfileを使ってPC環境を汚さずに、いろいろなDeep Learningのフレームワークを使いたい
公式ドキュメント(日本語)
Docker ドキュメント日本語化プロジェクト — Docker-docs-ja 17.06.Beta ドキュメント
Dockerfileの書き方
例: keras
FROM nvidia/cuda:8.0-cudnn6-runtime RUN apt update && apt install -y python3-pip RUN pip3 install tensorflow-gpu keras
Dockerfileのビルド
コンテナの作成とログイン
サンプルの実行
(container)# apt install wget (container)# wget https://raw.githubusercontent.com/fchollet/keras/master/examples/mnist_cnn.py (container)# python3 mnist_cnn.py
sudo権限をつける
sudo usermod -aG docker $USER
起動中のコンテナに入る
コンテナからイメージの作成
sudo nvidia-docker stop [コンテナID]
sudo nvidia-docker commit [コンテナID] custom-docker-gpu-keras-workspace
コンテナとイメージの削除方法
コンテナ
docker ps -a
docker rm [コンテナID]
コンテナの一括削除
- sudo docker rm `sudo docker ps -a -q`
イメージ
docker images
docker rmi -f [イメージ名]
コンテナ名の変更
docker rename old_contena_name new_contena_name
ホスト<->コンテナ間のやりとり
sudo docker cp my.cnf <コンテナID>:/etc/my.cnf
Docker imageのtagを取得する方法
以下をbashrcに記載
function docker-taglist { curl -s https://registry.hub.docker.com/v1/repositories/$1/tags | sed "s/,/\n/g" | grep name | cut -d '"' -f 4 }
使い方
$ docker-taglist ubuntu
参考: DockerHubのイメージのタグ一覧をコマンドで取得する | Mazn.net
Dockerイメージのコピーと読み込み
コピー
docker save sample-image > sample-image.tar
読み込み
docker load < sample-image.tar
参考:Dockerでイメージをインポート・エクスポートする | UX MILK
Dockerからデバイスを読み込む方法
# docker run -it --device=/dev/video0:/dev/video0 --name test01 [image name] /bin/bash
自分のPCの場合はインカメがvideo0 , usbにさしたwebカメラがvideo1になっている。
第17回 Dockerで植物が育つ様子を自動録画してみよう――その1 (2/2) - ITmedia エンタープライズ
DockerからGUIを表示する方法
1.$ xhost +
Start a GUI-Application as root in a Ubuntu Container - General Discussions - Docker Forums
docker/Tutorials/GUI - ROS Wiki
Dockerを用いたGUIアプリケーションの実行 | POSTD
Docker上でwebカメラを読み込みOpenCVのimshowなどをGUIで表示する方法
$ xhost +
$ nvidia-docker run -it -e DISPLAY=$DISPLAY -v /tmp/.X11-unix/:/tmp/.X11-unix --device=/dev/video1:/dev/video1 --name test1 output_disp
参考:docker run | Docker Documentation
おまけ1: pytorchでも動かしてみる
NVIDIA GPU CLOUDからイメージをダウンロード
exampleの実行
cd examples/mnist
pip install -r requirements.txt
export CUDA_VISIBLE_DEVICES=1
python main.py
動けばOK!
結果
Test set: Average loss: 0.1240, Accuracy: 9620/10000 (96%)
pytorchで線形回帰をかいてみる
参考: ChainerとPyTorchのコードを比較する - 線形回帰編
PyTorchでニューラルネットワーク、RNN、CNNを実装してみた – データ分析エンジニアが気まぐれに更新するブログ
matplotlibが表示されない時
[短文メモ]matplotlibで、showしても何も表示されない→backend設定を確認
おまけ2: chainerでも動かしてみる
docker pull chainer/chainer
pip install mock
TODO