选题5:构建一个docker,该docker包含Tensorflow库,并支持GPU加速,这样,别的用户可以下载该docker直接使用Tensorflow进行GPU开发
浙江理工大学 云计算课程 期末选题
镜像搭建详情请看视频https://www.bilibili.com/video/av56054503
OverView
因为GPU属于特定的厂商产品,需要特定的driver,Docker本身并不支持GPU。以前如果要在Docker中使用GPU,就需要在container中安装主机上使用GPU的driver,然后把主机上的GPU设备(例如:/dev/nvidia0)映射到container中。所以这样的Docker image并不具备可移植性。
Nvidia-docker项目就是为了解决这个问题,它让Docker image不需要知道底层GPU的相关信息,而是通过启动container时mount设备和驱动文件来实现的
本次实验旨在实现在一台主机上配置GPU开发环境,并通过docker打包成镜像后能在另外一台完全不同环境的主机上运行。
实验环境
打包环境
软件
ubuntu 18.04
cuda 9.0
cudnn 7.0.5
nvidia-driver 390.116
硬件
CPU:i7 5960x
内存:16GB ddr4
显卡:GTX 1080 Ti 11GB
测试环境
软件
kali
cuda 10.2
cudnn 无
nvidia-driver 430.14
硬件
CPU:i5 6200u
内存:8GB ddr4
显卡:940 MX 2GB
1.安装docker与nvidia-docker
1 | #安装docker |
拉取带有cuda的ubuntu镜像,在镜像里安装cudnn、tensorflow等
1 | nvidia-docker run --rm nvidia/cuda /bin/bash |
测试成功后对镜像进行打包
1 | sudo nvidia-docker commit <imageID> <imageName>:<imageVersion> |
另一台主机用户获得镜像后进行测试
载入打包好的镜像
1 | sudo nvidia-docker load < NewImages.tar |
测试内容
使用深度学习训练好的模型。通过视频识别高压电线缺陷
测试tensorflow运行情况
1 | import time |
1 | python test.py |
测试结果
脚本运行情况:
GPU占用率:
脚本处理结果:
总结成果
经过测试,Nvidia-docker打包后的镜像可以在不同linux内核、发行版,不同nvidia驱动、显卡型号的情况下运行,具有较好的可移植性和快速开发部署优势。
docker镜像现已上传到docker hub ,可以用以下命令获取
1 | docker pull fjh1997/cable-breakage-detection |
其中的测试脚本名称有所改动,test.py更名为为cable-detect.py
说些什么吧!