目录

  • docker和nvidia-docker的区别
  • docker安装
  • docker-nvidia安装
  • 使用docker安装gpu版本的pytorch
  • 安装JupyterLab (可以选择不安装)
  • 命令解读


docker和nvidia-docker的区别

nvidia-docker是一个可以使用GPU的docker,nvidia-docker是在docker上做了一层封装,通过nvidia-docker-plugin,然后调用到docker上,其最终实现的还是在docker的启动命令上携带一些必要的参数。因此在安装nvidia-docker之前,需要先安装docker。

docker原生并不支持在他生成的容器中使用Nvidia GP资源。nvidia-docker是对docker的封装,提供一些必要的组件可以很方便的在容器中用GPU资源执行代码。从下面的图中可以很容器看到nvidia-docker共享了宿主机的CUDA Driver。

gpu安装 gpu安装docker_python

docker安装

见我之前的docker安装的博客

docker-nvidia安装

  1. NVIDIA Container Toolkit允许用户构建和运行GPU加速的Docker容器。该工具包包括容器运行时库和实用程序,用于自动配置容器以利用NVIDIA GPU。
  2. 首先宿主机安装了NVIDIA驱动程序,linux使用命令nvidia-smi查看
  3. 宿主机安装了doker
  4. 不用的操作系统安装命令不一样,具体请参考官方文档

官方文档 git
https://github.com/NVIDIA/nvidia-docker

以ubuntu安装为例

使用docker安装gpu版本的pytorch

参考 https://github.com/anibali/docker-pytorch

  1. 拉取镜像,选择合适的版本,我使用的版本:1.7.0-cuda11.0,根据宿主机的cuda版本号确定。查看宿主机版本号:nvidia-smi,名称看docker官网提供的https://hub.docker.com/r/anibali/pytorch/tags?page=1&ordering=last_updated
docker pull anibali/pytorch:1.7.0-cuda11.0
  1. 启动并创建容器

–gpus=all :使用gup的命令
–volume="gpu安装 gpu安装docker_docker_02(id -u)😒(id -g)":在容器内设置用户以匹配您的用户和组ID。可选,让其容器具有创建目录的权限。

docker run -it --init   --gpus=all   --ipc=host --name pytorch -p 1778:8888 --volume="$PWD:/app"   anibali/pytorch:1.7.0-cuda11.0 python3
  1. 进入容器,运行py文件,看是否成功。
docker exec -it 容器id bash
python

python.py文件

import torch
flag = torch.cuda.is_available()
print(flag)

ngpu= 1
# Decide which device we want to run on
device = torch.device("cuda:0" if (torch.cuda.is_available() and ngpu > 0) else "cpu")
print(device)
print(torch.cuda.get_device_name(0))
print(torch.rand(3,3).cuda())

运行成功,表名安装成功。

True
cuda:0
GeForce GTX 1080
tensor([[0.9530, 0.4746, 0.9819],
        [0.7192, 0.9427, 0.6768],
        [0.8594, 0.9490, 0.6551]], device='cuda:0')

安装JupyterLab (可以选择不安装)

命令解读

–rm :表名容器创建之后删除
nvidia/cuda:11.0-base :这是一个测试镜像,非常小,目的为了测试nvidia-docker是否安装成功,配合nvidia-smi命令使用

docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi

anibali/pytorch:1.7.0-cuda11.0:这是docker官方提供的安装好了使用cuda和pytorch环境的docker镜像,直接拿来使用,非常方便,不需要自己配置python环境,以及pip install torch了。

docker run -it --init   --gpus=all   --ipc=host --name pytorch -p 1778:8888 --volume="$PWD:/app"   anibali/pytorch:1.7.0-cuda11.0 python3

这是直接拉取nvidia/cuda镜像,该镜像配置好了cuda环境,使用该容器需要自己配置python环境以及各种第三方库,过程与宿主机安装python环境一样。

docker pull nvidia/cuda