eGPUでハイスペックLinuxデスクトップをDeep Learning Workstation化計画(eGPUセットアップ編)でeGPUのセットアップを実施しました。これでNVIDIAドライバーやCUDA 10.2のインストールが完了し、GPUが利用出来る様になりました。今回はDocker及びNVIDIA DockerをインストールしてGPUが利用出来るDocker環境を構築し、最終的にJupyter Notebookサーバーを構築する所までをやってみようと思います。構築マシンはeGPUをThundebolt 3接続という特殊構成のため、セットアップ中に怒濤のエラーが出て断念という恐れも十分に有り得ますが、折角作り上げたマシーンなので何事も無く完成1となることを願いつつセットアップを行います。
本記事で紹介するセットアップ方法は2022/5/22現在最新の情報に基づいていますが、今後のアップグレードでより簡便な方法が可能となる可能性は十分有ります。その時は内容を随時更新していこうと思います。
Dockerのインストール
まずはDockerをインストールします。今回は新規に環境構築する為、最新版をインストールします。
Docker本体のインストール前に必要なアプリケーションをインストールします。
sudo apt install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common
リポジトリキーを追加します。
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
参考情報
apt-keyを用いる方法(旧情報:非推奨)
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
実行結果
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
OK
sudo apt-key fingerprint 0EBFCD88
実行結果
$ sudo apt-key fingerprint 0EBFCD88
pub rsa4096 2017-02-22 [SCEA]
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid [ 不明 ] Docker Release (CE deb) <docker@docker.com>
sub rsa4096 2017-02-22 [S]
リポジトリ情報を追加します。
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
本体のインストールを実行します。
sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io
正常にインストール出来たか確認します。
$ docker -v
Docker version 19.03.8, build afacb8b7f0
sudo無しでDockerを実行出来る様に設定します。
docker
グループを追加します。
sudo groupadd docker
既に存在する場合の表示
$ sudo groupadd docker
groupadd: グループ 'docker' は既に存在します
現在ログイン中のユーザーをdocker
グループに追加します。
sudo gpasswd -a $USER docker
実行結果
$ sudo gpasswd -a $USER docker
ユーザ USER をグループ docker に追加
一旦ログアウトし、再ログインすることで有効になります。
exit
Hello Worldコンテナの起動と実行
Hello Worldコンテナを起動し実行します。正常にコンテナが起動されるかの確認の為に用意されています。
docker container run hello-world
正常に起動出来ている場合
$ docker container run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Digest: sha256:f9dfddf63636d84ef479d645ab5885156ae030f611a56f3a7ac7f2fdd86d7e4e
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
Docker Composeのインストール
Docker Composeはapt
コマンドでインストールが可能になりました。
sudo apt update
sudo apt install -y docker-compose-plugin
インストール完了後、一旦ログアウトし、再ログインします。
exit
これまでdocker-compose
で実行が必要でしたが、docker compose
という風にdocker
コマンドのマネジメントコマンドとして実行出来る様になりました。
$ docker compose version
Docker Compose version v2.12.2
従来のインストール方法
Docker Composeをインストールします。最新版のバージョンは公式のGitHubで確認出来ます。現在の最新安定版はv2.2.3
です。まずは実行ファイルをダウンロードします。
export compose_version="v2.3.3"
sudo curl -L "https://github.com/docker/compose/releases/download/${compose_version}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
ダウンロード後、実行権限を付与します。
sudo chmod +x /usr/local/bin/docker-compose
正常に動作するか確認します。
$ docker-compose -v
docker-compose version 1.25.4, build 8d51620a
nvidia-container-runtimeのインストール
ここからいよいよDockerからGPUを動作させるために必要なセットアップを行います。使用するGPUがNVIDIAのGPUの場合はnvidia-container-runtimeというランタイムが用意されています。AMDのGPU2では以降の行程は実行出来ません。
curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | sudo gpg --dearmor -o /etc/apt/keyrings/nvidia-container-runtime.gpg
apt-keyを用いた方法(旧情報:非推奨)
curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | sudo apt-key add -
実行結果
$ curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | sudo apt-key add -
OK
export distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.list | sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list
sudoedit /etc/apt/sources.list.d/nvidia-container-runtime.list
実行結果
$ curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.list | sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list
deb https://nvidia.github.io/libnvidia-container/ubuntu18.04/$(ARCH) /
deb https://nvidia.github.io/nvidia-container-runtime/ubuntu18.04/$(ARCH) /
以下のように修正します。
deb [signed-by=/etc/apt/keyrings/nvidia-container-runtime.gpg] https://nvidia.github.io/libnvidia-container/stable/ubuntu18.04/$(ARCH) /
#deb https://nvidia.github.io/libnvidia-container/experimental/ubuntu18.04/$(ARCH) /
deb [signed-by=/etc/apt/keyrings/nvidia-container-runtime.gpg] https://nvidia.github.io/nvidia-container-runtime/stable/ubuntu18.04/$(ARCH) /
#deb https://nvidia.github.io/nvidia-container-runtime/experimental/ubuntu18.04/$(ARCH) /
sudo apt update && sudo apt install -y nvidia-container-runtime
sudo reboot
Docker上でnvidia-smiの動作確認
セットアップが完了したらDocker上でnvidia-smiが動作するか確認します。今回はGPUが1台なのでオプションに--gpus all
を渡しています。(nvida/cudaイメージでは現在latestタグが廃止されています。(参考)
docker container run --gpus all --rm nvidia/cuda:11.4.0-base-ubuntu20.04 nvidia-smi
nvidia-container-runtimeをインストール後は必ず再起動します。再起動していない場合はエラーが出ます。
Digest: sha256:31e2a1ca7b0e1f678fb1dd0c985b4223273f7c0f3dbde60053b371e2a1aee2cd
Status: Downloaded newer image for nvidia/cuda:latest
docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]].
以下の様な表示が出ればインストールに成功しています。
$ docker container run --gpus all --rm nvidia/cuda nvidia-smi
Mon Apr 6 00:51:45 2020
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.64 Driver Version: 440.64 CUDA Version: 10.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce RTX 208... Off | 00000000:07:00.0 Off | N/A |
| 0% 31C P8 16W / 250W | 0MiB / 7982MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
2022/5/22改訂: Docker ComposeでGPU対応コンテナを起動する
初版を執筆してから2年以上が経過し,Docker Composeで特別な設定をしなくてもGPU対応コンテナが起動可能となりました.よって内容を改訂します.(旧来の方法も後半に残しています.)今回利用する環境は以下の様な環境です.(参考とした記事は失念してしまいました...)
- Docker version 20.10.16, build aa7e414
- Docker Compose version v2.5.1
Dockerfileの作成
Dokcerfileを以下の様に作成しました.jovyanアカウントでもapt等をコンテナ内で利用出来る様に,sudoの設定もbuild時に実行します.
FROM jupyter/tensorflow-notebook:latest
USER root
RUN apt-get update && apt-get upgrade -y
# Install visualization tools for Python
RUN apt-get install -y graphviz
USER jovyan
RUN pip install graphviz
USER root
RUN apt-get install -y build-essential curl wget vim git bash-completion cmake
RUN echo "jovyan ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers
RUN gpasswd -a jovyan sudo
USER jovyan
# Install basic ML libralies
RUN pip install torch torchvision scikit-learn janome
- 参考
docker-compose.ymlの作成
docker-compose.yml内でgpuオプションが利用出来る様になりました.解放しているポートはJupyter Notebookサーバーへのアクセス用のポートとTensorBoardへのアクセス用のポートです.
version: "3.3"
services:
tensorflow_notebook:
build:
context: .
dockerfile: Dockerfile
deploy:
resources:
reservations:
devices:
- capabilities:
- gpu
environment:
- NVIDIA_VISIBLE_DEVICES=all
- NVIDIA_DRIVER_CAPABILITIES=all
ports:
- 8888:8888
- 6006:6006
volumes:
- ../work:/home/jovyan/work
restart: always
旧来の方法
Docker ComposeでGPU対応コンテナを起動するための設定
Issue情報より、2020/4現在Dockerの最新版で導入された--gpus
オプションにDocker Composeは対応出来ていない様です。その為、旧来の--runtime=nvidia
オプションを有効にする設定が必要です。最初はnvidia-docker
というコマンドで起動していたGPU対応コンテナが--runtime=nvidia
オプションとなり、--gpus
オプションへ進化し簡単になりました。Docker Composeも早く対応して欲しいところです。
まずnvidia-container-runtime
の所在地を調べます。
$ which nvidia-container-runtime
/usr/bin/nvidia-container-runtime
/etc/docker/daemon.json
ファイルを作成します。
$ sudo vim /etc/docker/daemon.json
{
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
}
}
sudo reboot
この操作によって以下の2種類のコマンドが有効になります。
docker container run --gpus all --rm nvidia/cuda nvidia-smi
docker container run --runtime=nvidia --rm nvidia/cuda nvidia-smi
Jupyte Notebookサーバー化に向けた設定
TensorFlow
やPyTorch
を実行する環境としてマシーンを活用したいと予てから思っていました。しかし、ローカルに環境構築すると管理が煩雑になります。そこで、Docker
及びJupyter Notebook
の出番です。
Dockerfileの作成
Jupyter公式のtensorflo-notebook
というイメージをベースに環境を構築します。基本的な機械学習、Deep LearningのPythonライブラリ及びLinuxのアプリケーションをインストールします。自然言語処理の勉強もしたいと考えているのでJanome
もインストールしています。MeCab
は頻繁に更新される為、敢えて初期設定ではインストールしないこととします。
FROM jupyter/tensorflow-notebook
# Install basic ML libralies
RUN pip install torch torchvision keras scikit-learn janome
USER root
RUN apt update && apt upgrade -y
RUN apt install -y build-essential curl wget vim git bash-completion
2020/5/22追記: CUDA10への対応
先日PyCUDAの勉強のためにソースをNotebook上で実行した所、以下の様なエラーが出ました。
CompileError: nvcc preprocessing of /tmp/tmp_9qpp46j.cu failed
[command: nvcc --preprocess -arch sm_75 -I/opt/conda/lib/python3.7/site-packages/pycuda/cuda /tmp/tmp_9qpp46j.cu --compiler-options -P]
[stderr:
b"nvcc fatal : Value 'sm_75' is not defined for option 'gpu-architecture'\n"]
これはCUDA Toolkitのバージョンが古い時に、リリース以後に追加されたGPUのアーキテクチャ情報が見つからず、コンパイル出来ず出力されるエラーです。nvcc -V
コマンドでCUDAのCUDA Toolkitのバージョンを確認しました。
$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Nov__3_21:07:56_CDT_2017
Cuda compilation tools, release 9.1, V9.1.85
何とCUDA 9.1...。どうやらtensorflow-notebookイメージをビルドする時にデフォルトでインストールされるCUDA Toolkitがバージョン9.1の様です。
改訂版: Dockerfile
DockerfileにCUDA Toolkit10のインストールを追加します。2020/5/22現在PyCUDAは最新のCUBA 10.2には対応していません。故にCUDA 10.1をインストールします。
FROM jupyter/tensorflow-notebook
ARG ROOT_PASSWD
ARG PASSWD
ENV CUDA_VERSION=10.1
# Install CUDA10
USER root
RUN apt update && apt upgrade -y
RUN apt install -y gnupg2
RUN wget https://developer.download.nvidia.com/compute/cuda/repos/\
ubuntu1810/x86_64/cuda-repo-ubuntu1810_10.1.105-1_amd64.deb
RUN dpkg -i cuda-repo-ubuntu1810_10.1.105-1_amd64.deb
RUN apt-key adv --fetch-keys https://developer.download.nvidia.com/\
compute/cuda/repos/ubuntu1810/x86_64/7fa2af80.pub
RUN apt update
RUN apt install -y cuda
RUN rm cuda-repo-ubuntu1810_10.1.105-1_amd64.deb
# Install PyCUDA
ENV PATH=/usr/local/cuda-$CUDA_VERSION/bin:$PATH
ENV CPATH=/usr/local/cuda-$CUDA_VERSION/include:$CPATH
ENV LIBRARY_PATH=/usr/local/cuda-$CUDA_VERSION/lib64:$LIBRARY_PATH
RUN pip install pycuda
# Install basic ML libralies
RUN pip install torch torchvision keras scikit-learn janome
USER root
RUN apt install -y build-essential curl wget vim git bash-completion
PATHの追加
.bashrc
に以下の内容を追記します。
export cuda_version=$(/usr/local/cuda/bin/nvcc -V | grep "Cuda compilation" | awk '{print $5}' | awk '{sub(",.*","");print $1;}')
export PATH=/usr/local/cuda-${cuda_version}/bin:$PATH
export CPATH=/usr/local/cuda-${cuda_version}/include:$CPATH
export LIBRARY_PATH=/usr/local/cuda-${cuda_version}/lib64:$LIBRARY_PATH
以下の様に再確認するとCUDA 10.1が無事インストールされていることが分かります。
$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Wed_Apr_24_19:10:27_PDT_2019
Cuda compilation tools, release 10.1, V10.1.168
- 参考: https://pytorch.org/
- 参考: Keras Documentation
- 参考: Installing scikit-learn
- 参考: CUDA Toolkit 10.1 Original Archive
- 参考: pycuda 2019.1.2
docker-compose.ymlの作成
コンテナの管理を容易にする為に、docker-compose.ymlを作成しました。注意として、Version3.Xは現在runtime
オプションに非対応です。故にVersion2.Xを指定する必要が有ります。
version: "2.4"
services:
tensorflow_notebook:
build:
context: .
dockerfile: Dockerfile
runtime: nvidia
environment:
- NVIDIA_VISIBLE_DEVICES=all
- NVIDIA_DRIVER_CAPABILITIES=all
ports:
- 8888:8888
volumes:
- ../work:/home/jovyan/work
restart: always
コンテナの起動
Docker Composeでコンテナを起動します。最初の起動では-d
(バックグラウンド実行オプション)は付けません。これはJupyter Notebookへのログイン用トークンを確認する為です。ターミナル上にhttp://127.0.0.1:8888/?token=(48桁の英数字の羅列:アクセストークン)
という表示が出ます。英数字の羅列を控えておきます。また、ターミナルを閉じるとコンテナが落ちてしまうため、そのままにしておきます。
docker-compose up -d
$ docker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
jupyter-notebook-server-container-tensorflow_notebook-1 jupyter-notebook-server-container-tensorflow_notebook "tini -g -- start-no…" tensorflow_notebook 11 seconds ago Up 10 seconds (health: starting) 0.0.0.0:6006->6006/tcp, :::6006->6006/tcp, 0.0.0.0:8888->8888/tcp, :::8888->8888/tcp
コンテナに乗り込みJupyter Notebookのパスワードを任意の物に変更します。
docker compose exec -it tensorflow_notebook bash
(base) jovyan@e6af7c1fe937:~$ jupyter notebook password
Enter password:
Verify password:
[NotebookPasswordApp] Wrote hashed password to /home/jovyan/.jupyter/jupyter_notebook_config.json
変更後、コンテナからログアウトします。
(base) jovyan@e6af7c1fe937:~$ exit
ログアウトした後、コンテナを再起動します。再起動後に、Webブラウザでhttp://サーバーIP:8888
にアクセスします。
docker compose restart
旧情報
Webブラウザを開きコンテナを稼働させているマシーンのIP:8888
でアクセスします。以下の画面が表示されれば一先ず成功です。
ここでPassword or token:
欄に先程控えておいた英数字を入力すればログインが完了し、利用可能になります。しかし、今回は所望のパスワードでログイン出来る様にしたいので下のSetup a Password
欄を利用します。Token
欄に先程控えた英数字を入力し、New Password
欄に所望のパスワードを入力します。Log in and set new password
をクリックすれば設定完了です。下図の様な画面に遷移すれば成功です。
設定したパスワードで再ログイン
画面右上のLogout
をクリックし、一旦終了します。これからコンテナの起動を永続化します。コンテナを起動したターミナル上でcontrol + C
を打鍵しコンテナを終了します。Stopping コンテナ名 ... done
と表示されます。以下のコマンドを実行し、今度はバックグラウンドでコンテナを起動します。Starting コンテナ名 ... done
と出たら、再度Webブラウザでコンテナを稼働させていマシーンのIP:8888
にアクセスします。
docker-compose up -d
以下の画面が出たら、設定したパスワードを入力しログインします。
下図の画面に遷移し、無事再ログインが出来ました。
2022/10/24追記: jupyterコマンドでの設定
jupyterコマンドで設定する方法も有ります.
実際にTensorFlowやPyTorchがGPUモードで動作するかの確認
そもそも巨費を投じてPC自作を行ったのはTensorFlowやPyTorchでDeep Learningの学習や推論の実験をやってみたいと思っていた為です。故に両者がGPUモードで動作しなければ今回の構築は水泡に帰します。最後に動作確認を行って終了です。GPUで動作するかの確認方法は以下のコードを実行します。適当なNotebook上で実行するだけで確認出来ます。
from tensorflow.python.client import device_lib
device_lib.list_local_devices()
実行結果
[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 845859908487858210,
name: "/device:XLA_CPU:0"
device_type: "XLA_CPU"
memory_limit: 17179869184
locality {
}
incarnation: 2134477200705340707
physical_device_desc: "device: XLA_CPU device",
name: "/device:XLA_GPU:0"
device_type: "XLA_GPU"
memory_limit: 17179869184
locality {
}
incarnation: 6110340117972168618
physical_device_desc: "device: XLA_GPU device"]
import torch
print(torch.cuda.is_available())
実行結果
True
KerasでMNIST
この世界のHello World的な位置付けのプログラムは矢張りKerasでMNISTを学習、推論させるプログラムでは無いでしょうか?動作テストも兼ねて以下のコードをNotebook上で実行してみます。
from keras.datasets import mnist
from keras.utils import to_categorical
from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense
from keras import models
model = models.Sequential()
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(Flatten())
model.add(Dense(64, activation='relu'))
model.add(Dense(10, activation='softmax'))
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
train_images = train_images.reshape((60000, 28, 28, 1))
train_images = train_images.astype('float32') / 255
test_images = test_images.reshape((10000, 28, 28, 1))
test_images = test_images.astype('float32') / 255
train_labels = to_categorical(train_labels)
test_labels = to_categorical(test_labels)
model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])
model.fit(train_images, train_labels, epochs=10, batch_size=64)
test_loss, test_acc = model.evaluate(test_images, test_labels)
model.summary()
モデルの構造
Model: "sequential_2"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d_2 (Conv2D) (None, 26, 26, 32) 320
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 13, 13, 32) 0
_________________________________________________________________
conv2d_3 (Conv2D) (None, 11, 11, 64) 18496
_________________________________________________________________
max_pooling2d_2 (MaxPooling2 (None, 5, 5, 64) 0
_________________________________________________________________
conv2d_4 (Conv2D) (None, 3, 3, 64) 36928
_________________________________________________________________
flatten_1 (Flatten) (None, 576) 0
_________________________________________________________________
dense_1 (Dense) (None, 64) 36928
_________________________________________________________________
dense_2 (Dense) (None, 10) 650
=================================================================
Total params: 93,322
Trainable params: 93,322
Non-trainable params: 0
_________________________________________________________________
実行結果
下図の様に約99.1%の正答率を達成しました。
<おまけ> JupyterLabを使いたい場合
デフォルト状態はJupter Notebook Serverで動作しますが、JupyterLab
も使用することが出来ます。方法は簡単でURL(コンテナが稼働しているマシーンのIP:8888
)の末尾に/lab
を追加するだけです。下図がJupyterLabが起動したスタートページです。小洒落たUIになりました。(昨今流行のダークモードも利用可)タブに表示されているタイトルもHome Page - Select or create a notebook
からJupyterLab
に変わります。
2020/9/12追記 Tensor Boardへの対応化
Tensor Boardを使える様にする為の改良方法を記事にまとめました。以下の記事に設定方法をまとめました。
まとめ
過去記事でeGPUのセットアップを実施し、GPUマシーンとして動作するマシーンとなりました。今回、DockerやNvidia Dockerをインストールしたことで、Deep Learning Workstationとして使えるマシーンが完成しました。今後投じた予算の元を取って更にお釣りが来るぐらいに活用したいと思います。
Reference
- NVIDIA Docker って今どうなってるの? (19.11版)
- Dockerで、GPU対応なコンテナ環境を整備する
- docker-composeでgpuを使う方法
- nVIDIA-docker2 を dockerから導入してみよう。
-
結論から言ってしまうと何事も無く無事完了しました。eGPU自体のセットアップを終えてOSから認識させることに成功すれば後はPCIExpress接続のGPUと操作は全く変わりません。寧ろDockerの進化にDocker Composeの開発が追い付いていないと痛感したセットアップになりました。 ↩
-
割り切りが必要かもしれませんが、AMDのGPUが機械学習の分野でNVIDIAと互角に渡り合う為の課題として、CUDAやcuDNNに匹敵するライブラリの開発、周辺環境の充実が挙げられると思います。TensorFlowは近々AMD GPUに完全対応との噂が出てますが、現状NVIDIAの独占市場であることは否めません。 ↩