目录
- 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。
docker安装
见我之前的docker安装的博客
docker-nvidia安装
- NVIDIA Container Toolkit允许用户构建和运行GPU加速的Docker容器。该工具包包括容器运行时库和实用程序,用于自动配置容器以利用NVIDIA GPU。
- 首先宿主机安装了NVIDIA驱动程序,linux使用命令nvidia-smi查看
- 宿主机安装了doker
- 不用的操作系统安装命令不一样,具体请参考官方文档
官方文档 git
https://github.com/NVIDIA/nvidia-docker
以ubuntu安装为例
使用docker安装gpu版本的pytorch
参考 https://github.com/anibali/docker-pytorch
- 拉取镜像,选择合适的版本,我使用的版本: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
- 启动并创建容器
–gpus=all :使用gup的命令
–volume="(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
- 进入容器,运行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