tensorflow和pytorch官方都维护了不同版本的docker镜像。借助docker我们可以方便的搭建起深度学习实验环境。
但是想要在同一个容器内同时拥有tensorflow、pytorch、jupyter notebook 并支持GPU,就需要自己来动手了。
硬件环境:
华硕b450主板
AMD r7 2700 CPU
NVIDIA 2060 RTX显卡
16G内存
软件环境:
ubuntu 18.10
docker ce 18.09.3
nvidia驱动:nvidia-driver-418
配置思路:
基于tensorflow + gpu + jupyter镜像,再在容器内安装pytorch即可。
开始动手:
1、到Docker Hub找一个合适的docker镜像:
就用nightly-gpu-py3-jupyter了, 拉下来
docker pull tensorflow/tensorflow:nightly-gpu-py3-jupyter
2、参考tensorflow官方教程。要在docker内使用gpu,首先需要在host环境下安装nvidia-docker。
官方教程: https://www.tensorflow.org/install/docker
nvidia-docker项目地址:NVIDIA/nvidia-docker
注意:nvidia-docker对系统docker版本的要求极为严格,请仔细检查兼容性。
提示:为了不必要的麻烦,我直接重新安装了nvidia官方推荐的docker版本。(由于nvidia-docker尚不支持ubuntu18.10 Cosmic Cuttlefish,我安装的docker ce是适配18.04 Bionic Beaver的版本–> Index of linux/ubuntu/dists/bionic/pool/stable/amd64/)
docker安装教程,请参考:Get Docker CE for Ubuntu
3、如果一切正常,安装完成nvidia-docker后就可以在docker容器内使用gpu了。
测试一下: docker run –runtime=nvidia –rm nvidia/cuda nvidia-smi
注意 –runtime=nvidia是必须的,否则容器内检测不到GPU
4、启动tensorflow/tensorflow:nightly-gpu-py3-jupyter,就可以拥有一个支持tensorflow+GPU+jupyter notebook的实验环境了:
docker run --runtime=nvidia --name tf --rm -it -v /home/helo/data/tf:/tf -p 8888:8888 tensorflow/tensorflow:nightly-gpu-py3-jupyter
访问localhost:8888,输入token就能进入jupyter notebook了
检查一下GPU是否工作正常:
from tensorflow.python.client import device_lib
device_lib.list_local_devices()
5、添加pytroch支持
稍微修改一下刚才的docker run命令,让容器启动在后台。
docker run --runtime=nvidia --name tf -dt -v /home/helo/data/tf:/tf -p 8888:8888 tensorflow/tensorflow:nightly-gpu-py3-jupyter
使用docker exec命令进入容器内:
docker exec -it tf bash
安装pytorch:
pytorch官方安装教程:PyTorch
需要检查一下容器内python和cuda的版本:
python --version
nvcc --version
根据pytorch官方提示完成安装
6、检测pytorch是否安装成功(可能需要重启容器)
import torch
if torch.cuda.is_available():
device = torch.device("cuda") # a CUDA device object
y = torch.ones_like(x, device=device) # directly create a tensor on GPU
x = xto photography and illustration competition(device) # or just use strings ``.to("cuda")``
z = x + y
print(z)
print(Denise and Gary Zimmerman's Home On The Web("cpu", torch.double))
至此,基于docker的深度学习实验环境就配置完成了。记得docker commit一下。
补充:也可以在jupyter内的Terminal上完成pytorch安装