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


(1)安裝nvidia-docker
  nvidia-docker其實是docker引擎的一個應用插件,專門面向NVIDIA GPU,因為docker引擎是不支持NVIDIA驅動的,安裝插件后可以在用戶層上直接使用cuda。具體看上圖。這個圖很形象,docker引擎的運行機制也表現出來了,就是在系統內核之上通過cgroup和namespace虛擬出一個容器OS的用戶空間,我不清楚這是否運行在ring0上,但是cuda和應用確實可以使用了(虛擬化的問題,如果關心此類問題可以了解一些關於docker、kvm等等虛擬化的實現方式,目前是系統類比較火熱的話題)
  這里也可以通過添加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

效果:

(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))

 

 使用gpu成功


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM