深度学习环境搭建起来比较麻烦,特别是 GPU 加速版。既要安装 Nvidia 的驱动,又要安装 cuda 和 cuDNN 。本文通过 docker 容器技术搭建基于keras (tensorflow) 的深度学习环境。
Docker 是一种容器技术,将你要运行的任何环境只通过几行命令就可以搭建完成。而 Docker 中除了用普通的 docker pull 方式直接拉取现成的深度学习镜像来搭建深学环境外,还可以通过用 Dockerfile 来完成这一任务。
经过笔者的不(jian)懈(chi)努(cai)力(keng),一个完整的经过测试的深度学习 Dockerfile 见以下链接:
https://github.com/zhudaoruyi/deep-learning-gpu-env
从 GitHub 上 clone 完后,(记住给个 Star )进入到 Dockerfile 所在的目录。
Dockerfile 构建镜像的方法
docker build -t name:tag .
注意后面有一个.符号,表示当前路径。docker 会在当前路径下自动寻找 Dockerfile 。
这一步,docker 执行 Dockerfile 中一行行的命令,利用 docker 的分层存储技术从 docker hub 中拉取相关的镜像,大概有十几层。执行完成后,docker 会生成一个约5GB的镜像。可以通过以下命令查看:
docker images
运行该镜像的方法(GPU加速)
nvidia-docker run -d -p 8888:8888 --name test -v /home/pzw:/home/workspace 镜像ID
nvidia-docker exec -it 容器ID
保存该镜像的方法
docker save -o 镜像名称
保存该容器的方法
docker export -o 容器名称
nvidia-docker 的安装
参考 https://github.com/zhudaoruyi/nvidia-docker
注意:安装 nvidia-docker 之前先安装好 docker
为了确认 nvidia-docker 是否安装成功,运行
nvidia-docker run --rm nvidia/cuda nvidia-smi
如果正确输出了本机的 GPU 信息,则安装成功。
例如:
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 367.48 Driver Version: 367.48 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Tesla M40 24GB Off | 0000:02:00.0 Off | 0 |
| N/A 33C P0 57W / 250W | 22427MiB / 22939MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
| 1 Tesla M40 24GB Off | 0000:82:00.0 Off | 0 |
| N/A 37C P0 58W / 250W | 21663MiB / 22939MiB | 0% Default |
+-------------------------------+----------------------+---------------------