2
6

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 1 year has passed since last update.

Ubuntu 22.04 Docker GPU RTX3090 Pytorch環境 構築メモ

Last updated at Posted at 2022-06-04

Nvidia Driver, CUDA, CuDNN Version選定

Pytorchをいれるので、下記からCUDA11.7をいれることにした。

下記からCUDA11.7で必要なDriverのVerが>=515.48.07ということがわかる。

下記からCUDA11.7のときは、cuDnn8.6.0forCUDA 11.xが必要ということがわかる。

Docker Install

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を追加

Docker Groupへ追加
# 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
Screenshot from 2022-06-04 06-10-01.png

CUDA Install

  • 下記のCUDA TookKit11.7 Update1 から Linux, x86_64, Ubuntu, 22.04, runfile(local) を選択して表示されたコマンドをbashで実行

CUDA 11.7.1 Install
$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

CuDNN 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を適当なフォルダに作成

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

docker-compose.yml
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

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?