百度网盘已弃用。随书资源已经放在码云和 github,方便国内外朋友下载。
码云:https://gitee.com/yongkezhao/PracticeCaffeIn21Days
github:https://github.com/zhaoyongke/Caffe21Days
----------------------------------------------------------
不少读者在准备 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/bash
docker 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
$ ./start_docker_with_gpu_cuda.sh 6ce
$ ./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
其次是 CUDA 版本。docker 镜像里默认编译好的 Caffe 依赖 CUDA 8.0,如果你宿主机上 CUDA 版本不同,需要重新编译 Caffe。