深度学习环境搭建之 Nvidia Docker容器
环境准备
操作系统 ubuntu 20.04
安装 docker
安装 Nvidia 驱动
操作系统
$ uname -a
Linux chengnanfeng-Z490-GAMING-X 5.8.0-36-generic #40~20.04.1-Ubuntu SMP Wed Jan 6 10:15:55 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
. /etc/os-release;echo $ID$VERSION_ID
ubuntu20.04
Docker
$ sudo docker version
Client: Docker Engine - Community
Version: 20.10.2
API version: 1.41
Go version: go1.13.15
Git commit: 2291f61
Built: Mon Dec 28 16:17:43 2020
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.2
API version: 1.41 (minimum version 1.12)
Go version: go1.13.15
Git commit: 8891c58
Built: Mon Dec 28 16:15:19 2020
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.4.3
GitCommit: 269548fa27e0089a8b8278fc4fc781d7f65a939b
runc:
Version: 1.0.0-rc92
GitCommit: ff819c7e9184c13b7c2607fe6c30ae19403a7aff
docker-init:
Version: 0.19.0
GitCommit: de40ad0
安装 Nvidia 驱动
1、通过系统的软件与更新来安装:
选择第一个安装Nvidia官方驱动(第二个是开源驱动,这里不关心)
2、重启
3、更新到最新的驱动:
sudo apt update
sudo apt upgrade
4、验证
nvidia-smi
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 460.32.03 Driver Version: 460.32.03 CUDA Version: 11.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 GeForce RTX 3080 Off | 00000000:01:00.0 On | N/A |
| 0% 32C P8 14W / 320W | 187MiB / 10015MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| 0 N/A N/A 958 G /usr/lib/xorg/Xorg 35MiB |
| 0 N/A N/A 1651 G /usr/lib/xorg/Xorg 72MiB |
| 0 N/A N/A 1784 G /usr/bin/gnome-shell 53MiB |
| 0 N/A N/A 3038 G /usr/lib/firefox/firefox 3MiB |
| 0 N/A N/A 4520 G /usr/lib/firefox/firefox 3MiB |
| 0 N/A N/A 4605 G /usr/lib/firefox/firefox 3MiB |
+-----------------------------------------------------------------------------+
Nvidia-docker2 容器
安装
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
curl -s -L https://nvidia.github.io/nvidia-container-runtime/experimental/$distribution/nvidia-container-runtime.list | sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo apt-get install -y nvidia-docker2
sudo systemctl restart docker
容器运行
nvida/cuda 下有很多版本容器,搜索版本
https://registry.hub.docker.com/r/nvidia/cuda
下载对应的镜像
docker pull nvidia/cuda:11.1-devel-ubuntu20.04
docker 命令示例
sudo apt install nvidia-container-toolkit
sudo docker run --rm --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=all nvidia/cuda nvidia-smi
sudo docker run --rm --gpus 2 nvidia/cuda nvidia-smi
sudo docker run --gpus '"device=1,2"' nvidia/cuda nvidia-smi --query-gpu=uuid --format-csv
sudo docker run --rm --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=1,2 nvidia/cuda nvidia-smi --query-gpu=uuid --format=csv
nvidia-smi -i 3 --query-gpu=uuid --format=csv