docker安装gpu版本的pytorch
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
以ubuntu安装为例
使用docker安装gpu版本的pytorch
参考
- 拉取镜像,选择合适的版本,我使用的版本:1.7.0-cuda11.0,根据宿主机的cuda版本号确定。查看宿主机版本号:nvidia-smi,名称看docker官网提供的
docker pull anibali/pytorch:1.7.0-cuda11.0
- 启动并创建容器
–gpus=all :使用gup的命令 –volume=" P W D : / a p p " : 将 当 前 目 录 映 射 到 容 器 中 的 工 作 目 录 / a p p p y t h o n 3 : 表 示 容 器 运 行 起 来 之 后 , 进 入 容 器 的 p y t h o n 环 境 − − u s e r = " PWD:/app" :将当前目录映射到容器中的工作目录/app python3:表示容器运行起来之后,进入容器的python环境 --user=" PWD:/app":将当前目录映射到容器中的工作目录/apppython3:表示容器运行起来之后,进入容器的python环境−−user="(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
上一篇:
IDEA上Java项目控制台中文乱码