docker中使用gpu(darknet-yolo,tensorflow)

(1)安装nvidia-docker
  nvidia-docker其实是docker引擎的一个应用插件,专门面向NVIDIA GPU,因为docker引擎是不支持NVIDIA驱动的,安装插件后可以在用户层上直接使用cuda。具体看上图。这个图很形象,docker引擎的运行机制也表现出来了,就是在系统内核之上通过cgroup和namespace虚拟出一个容器OS的用户空间,我不清楚这是否运行在ring0上,但是cuda和应用确实可以使用了(虚拟化的问题,如果关心此类问题可以了解一些关于docker、kvm等等虚拟化的实现方式,目前是系统类比较火热的话题)
  下载rpm包: https://github.com/NVIDIA/nvidia-docker/releases/download/v1.0.1/nvidia-docker-1.0.1-1.x86_64.rpm
  这里也可以通过添加apt或者yum sourcelist的方式进行安装
$ sudo rpm -i nvidia-docker-1.0.1-1.x86_64.rpm && rm nvidia-docker-1.0.1-1.x86_64.rpm
$ sudo systemctl start nvidia-docker
(2)容器测试
  我们还需要NVIDIA官方提供的docker容器nvidia/cuda,里面已经编译安装了CUDA和CUDNN,或者直接run,缺少image的会自动pull。
$ docker pull nvidia/cuda
 
(3)启动容器测试
nvidia-docker run -v /home/dwai/tensorflow_container/:/tensorflow_container  --rm -it nvidia/cuda:10.0-cudnn7-devel-ubuntu18.04 bash

下载了一份darknet的样例(关于darknet),在不使用GPU的情况下耗时22s,使用GPU的情况下耗时0.04s

修改Makefile,GPU=1,CUDNN=1

#修改cuda路径
NVCC=/usr/local/cuda-9.0/bin/nvcc #即改为本机CUDA安装地址

测试:

./detect cfg/yolov3.cfg ../darknet_weights/yolov3.weights data/dog.jpg

效果:

docker中使用gpu(darknet-yolo,tensorflow)_第1张图片

(4)在容器中使用tensorflow-gpu

拉取镜像

 启动容器

sudo docker run --name=dw_contatiner --runtime=nvidia --privileged=true -v /home/dwai/tensorflow_container/:/tf/tensorflow-tutorials/tensorflow_container -p 8888:8888 -p 5000:5000 -d tensorflow/tensorflow:nightly-gpu-py3-jupyter

进入jupyter

sudo docker exec dw_contatiner jupyter notebook list

 输入密码:dfc1c647055ec0a17168ac4260efc64fb44cabafe649d188

sess = tf.Session(config= tf.ConfigProto(log_device_placement=True))

docker中使用gpu(darknet-yolo,tensorflow)_第2张图片

 

 使用gpu成功

你可能感兴趣的:(docker中使用gpu(darknet-yolo,tensorflow))