【深度学习:21 天实战 Caffe】Docker 镜像更新

来源:互联网 发布:风控系统源码 编辑:程序博客网 时间:2024/05/17 02:24

不少读者在准备 Caffe 环境时耗费太多时间,本文希望能大大加速这部分进程。

考虑读者的本地环境各异,很难统一用一套流程,为此制作了标准 Docker 镜像,包含了 Caffe 和必备的依赖包,开箱即用。

Docker 官方 Hub:https://hub.docker.com/r/zhaoyongke/bookenv/tags/

阿里云 Docker Hub :https://dev.aliyun.com/detail.html?spm=5176.1972343.2.2.9Nu3FD&repoId=5237


1. 快速搭建 Day 4 环境:


从官方拉取 docker image$ docker pull zhaoyongke/bookenv:caffe_cpu_only如果速度很慢,推荐阿里云 Docker Hub:$ docker pull registry.cn-hangzhou.aliyuncs.com/master_caffe_in_21days/caffe:cpu_only


创建一个 docker 实例:

$ docker run -ti registry.cn-hangzhou.aliyuncs.com/master_caffe_in_21days/caffe:cpu_only

创建成功后,依次执行如下命令来运行 MNIST 例程。

切到 Caffe 目录。该源码克隆于 master 分支(20161112)。

$ cd root/caffe/$ ./build/tools/caffe.bin$ vi examples/mnist/lenet_solver.prototxt
将 solver_mode: GPU 改为 CPU
安装 wget,便于执行获取数据脚本$ apt-get install wget
获取 MNIST 数据集$ ./data/mnist/get_mnist.sh
用 MNIST 数据集创建 LMDB 数据库$ ./examples/mnist/create_mnist.sh
执行训练$ ./examples/mnist/train_lenet.sh



2. 快速搭建 Day 15 环境:

Docker 官方 Hub:$ docker pull zhaoyongke/bookenv:caffe_gpu_driver367.57阿里云 Docker Hub:$ docker pull registry.cn-hangzhou.aliyuncs.com/master_caffe_in_21days/caffe:gpu_driver367.57



编写 Shell 脚本内容如下,保存为 start_docker_with_gpu_cuda.sh

#!/bin/bashdocker run -ti \--device /dev/nvidia0:/dev/nvidia0 \--device /dev/nvidiactl:/dev/nvidiactl \--device /dev/nvidia-uvm:/dev/nvidia-uvm \-v /usr/local/cuda:/usr/local/cuda \$1 \/bin/bash

创建 GPU Docker 实例:

$ ./start_docker_with_gpu_cuda.sh 6ce

其中 6ce 就是上图对应刚刚 pull 下来的 docker image id 缩写,也可以用 image repo:tag 这种格式:

$ ./start_docker_with_gpu_cuda.sh registry.cn-hangzhou.aliyuncs.com/master_caffe_in_21days/caffe:gpu_driver367.57

看到不如 image id 简洁。


GPU 环境比较特殊,需要做额外的工作才能保证可用。

首先是驱动版本,如果你宿主机的 GPU 驱动版本与 docker 实例中版本不一致,会报错:



解决方法:

将宿主机的驱动安装包(NVIDIA-Linux-x86_64-xxx.xx.run)拷贝到 /usr/local/cuda/ 下面(因为我们做了宿主机和 docker 文件共享,通过该目录可以互相传递文件),然后在 docker 实例中 cd 到 /usr/local/cuda/ 可以看到驱动安装包。

执行如下命令:

$ ./NVIDIA-Linux-x86_64-xxx.xx.run -s -N --no-kernel-module

等待安装成功,再运行 nvidia-smi,一切正常了。


其次是 CUDA 版本。docker 镜像里默认编译好的 Caffe 依赖 CUDA 8.0,如果你宿主机上 CUDA 版本不同,需要重新编译 Caffe。














2 0