CC56

CC56: 567収束までに達成したい56リスト

Day-182 機械学習用Dockerチートシート-α版 (TensorFlow2.xベース)

f:id:hyper-pigeon:20201006000101p:plain
Docker(機械学習寄り)*画像の

2020.10.15: TensorFlowがgpuじゃなかったので修正。画像のミスを追記。docker pruneを追記。

(画像内のミス)
誤 「docker run --gpus all --rm nvidia-smi」
正「docker run --gpus all --rm nvidia/cuda nvidia-smi」

Docker、何度やってもコマンド周りが覚えられないのでメモ代わりにチートシートを作成しています。 とにかくDockerは手順が多く、各コマンドごとの引数も多めなので、メモらないとやってられないです。

Dockerは需要の高いツールなので、Qiitaとか探せばコマンド集は色々あるのですが、流れ作業的に見返せる図が欲しかったのでこんな感じになってます。

OSにはそこまで依存しないと思いますが、Ubuntu 18.04 LTS を想定しています。

書ききれなかったこと

できるだけ簡潔なグラフにしたかったので、とりあえずDraw.ioで作ったのですが、色々と抜けてしまっていたので補足します。

ターミナルの$マークは抜いてます。そのほうがコピペしやすいので。

sudo 関係(最初はsudoを入れてるのに途中から無くなってる)
sudo usermod -aG docker {ユーザー名}

↑のコマンドでsudoを打つ必要がなくなります。

Dockerのインストール

完全に公式ドキュメントの丸コピで動きます。

(1) 旧バージョンの削除

sudo apt-get remove docker docker-engine docker.io containerd runc

(2) インストールの準備

sudo apt-get update
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

# GPG Key の追加。公開鍵の追加
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88

(3) Stable版のインストール

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
nvidia container toolkit のインストール

昔のnvidia-docker、nvidia-docker2が進化してこれになったっぽいです。

以下の記事が優秀です。

なぜか公式ドキュメントが更新されて、この時の情報と異なっているのですが、おそらく昔(2019年)のインストール方法のほうが良いんじゃないかと思います。

以下使う部分のみ↑から引用したものです。

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker
その他

最新のコンテナを削除(多分もっと良い書き方がある)

docker ps -a | awk 'NR==2' | awk '{print $1}' | xargs docker rm

全コンテナ削除

docker rm -f `docker ps -a -q`

いらないものを消す

docker container prune
docker image prune

プロセスチェック

docker ps -a

シンプルなDockerfile (TensorFlowベース)

FROM tensorflow/tensorflow:latest-gpu
LABEL maintainer="p-geon"
LABEL version="0.1"

RUN apt-get update && apt-get install -y --no-install-recommends \
    使うライブラリ1 \
    使うライブラリ2 \
    ... \
    使うライブラリn
    
# finish settings
WORKDIR /work
ENTRYPOINT ["/bin/bash"]

まだまだDocker初心者なので、もう少しスキルアップしたら更新します。