Nvidia Driver, CUDA, CuDNN Version選定
Pytorchをいれるので、下記からCUDA11.7をいれることにした。
下記からCUDA11.7で必要なDriverのVerが>=515.48.07ということがわかる。
下記からCUDA11.7のときは、cuDnn8.6.0forCUDA 11.xが必要ということがわかる。
Docker Install
$ sudo apt-get update
$ sudo apt-get install ca-certificates curl gnupg lsb-release
$ 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
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudoなしでDockerを実行するため、UserGroupにDockerを追加
# Usergroupの確認
$ cat /etc/group | grep docker
# なければUserGroup追加
$ sudo groupadd docker
#
$ sudo gpasswd -a $USER docker
#
$ sudo systemctl restart docker
参考URL
Nvidia Driver Install
ソフトウェアとアップデートから nvidia-driverをInstall
CUDA Install
- 下記のCUDA TookKit11.7 Update1 から Linux, x86_64, Ubuntu, 22.04, runfile(local) を選択して表示されたコマンドをbashで実行
$wget https://developer.download.nvidia.com/compute/cuda/11.7.1/local_installers/cuda_11.7.1_515.65.01_linux.run
$sudo sh cuda_11.7.1_515.65.01_linux.run
CuDNN Install
- 下記からCuDNNのTarファイル(ここでは Local Installer for Linux x86_64 (Tar))をDownLoad
- 下記のTar File InstallationにしたがってInstall
$ tar -xvf cudnn-linux-x86_64-8.x.x.x_cudaX.Y-archive.tar.xz
$ sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include
$ sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64
$ sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
Setting up NVIDIA Container Toolkit
下記を実行してNVIDIA Container ToolKitをInstall
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
$ sudo apt-get update
$ sudo apt-get install -y nvidia-docker2
$ sudo systemctl restart docker
$ sudo docker run --rm --gpus all nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi
最後に nvidia-smiが表示されればOK
参考URL
Dockerfile作成
下記のDockerfileを適当なフォルダに作成
FROM nvidia/cuda:11.3.1-base-ubuntu20.04
USER root
RUN apt-get update
RUN apt-get -y install locales && \
localedef -f UTF-8 -i ja_JP ja_JP.UTF-8
RUN apt-get install -y vim less
ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:ja
ENV LC_ALL ja_JP.UTF-8
ENV TZ JST-9
ENV TERM xterm
RUN mkdir -p /root/work
WORKDIR /root/work
Docker操作
上記のDockerFileの場所で下記を実行
$ docker build -t ubuntu:gpu-base ./
$ docker run -it --gpus all -v $(pwd)/work:/root/work --name ubuntu_gpu-base ubuntu:gpu-base
するとコンテナのbashに入るので、そこで下記を実行して
Python3.10 と Pytorch(CUDA11.3)をInstall
$ apt -y update
$ apt -y install build-essential libbz2-dev libdb-dev libreadline-dev libffi-dev libgdbm-dev liblzma-dev libncursesw5-dev libsqlite3-dev libssl-dev zlib1g-dev uuid-dev tk-dev
$ apt -y install wget
$ wget https://www.python.org/ftp/python/3.10.4/Python-3.10.4.tar.xz
$ tar xJf Python-3.10.4.tar.xz
$ cd Python-3.10.4
$ ./configure
$ make
$ make install
$ pip3 install torch torchvision torchaudio
GPUの確認
下記を実行してTrueがでればOK。
$ python3
>>> import torch
>>> torch.cuda.is_available()
コンテナのImages化
上記で、ubuntu_gpu-baseにPytorchのGPU環境ができたので、それを使いまわしするために、そのコンテナをImage化する。
docker commit ubuntu_gpu-base ubuntu:pytorch-gpu-base
これで、ubuntu:pytorch-gpu-baseができているのが確認できる。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu pytorch-gpu-base 975ed33d3b4f 10 seconds ago 6.44GB
ubuntu gpu-base aac3bb538e10 14 minutes ago 325MB
nvidia/cuda 11.7.1-base-ubuntu22.04 fb867644c24a 3 weeks ago 208MB
ubuntu:pytorch-gpu-base からコンテナをつくる
cd (作業フォルダ)
mkdir work
docker run -it --gpus all -v $(pwd)/work:/root/work --name pytorch1 ubuntu:pytorch-gpu-base
#これで、コンテナ内のbashにはいるので、exitでいっかい抜ける
root@xxxxxxx:~/work# exit
#止まってるコンテナを確認すると pytorch1という名前のコンテナができていることがわかる。
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0f87d847b8b2 ubuntu:pytorch-gpu-base "bash" 18 seconds ago Exited (0) 5 seconds ago pytorch1
b7dac43a585c ubuntu:gpu-base "bash" 17 minutes ago Exited (2) 8 minutes ago ubuntu_gpu-base
#次回からは、下記でstartでOK(vs code から起動でもOK)
$ docker start pytorch1
docker compose
version: '3.9'
services:
otto:
image: ubuntu:gpu-pytorch
hostname: localhost
ports:
- 7474:7474
volumes:
- ${PWD}/work:/root/work
tty: true
runtime: nvidia
$ docker compose up -d
おまけ
Docker コンテナの起動
$ docker start ubuntu_gpu-base
Docker コンテナにbashではいる
$ docker exec -it ubuntu_gpu-base bash
Docker コンテナのImage化
コンテナを停止させてから、 docker commit [コンテナ名] [リポジトリ名:タグ名]
$ docker commit ubuntu_gpu-base ubuntu:gpu-pytorch
Ubuntu Version Check
lsb_release -a
Nvidia Driver version 確認
nvidia-smi
参考Url