Caffe实战二,手写体识别例程:CPU、GPU、cuDNN速度对比

上一篇文章成功在CPU模式下编译了Caffe,接下来需要运行一个例程来直观的了解Caffe的作用。(参考:《深度学习 21天实战Caffe》第6天 运行手写体数字识别例程)

编译步骤:

CPU模式:

1、下载MNIST数据集
sudo ./data/mnist/get_mnist.sh
2、转换格式
sudo ./examples/mnist/create_mnist.sh
3、修改训练超参数文件
sudo vim examples/mnist/lenet_solver.prototxt
修改最后一行为:solver_mode : CPU
4、进行训练
sudo ./build/tools/caffe.bin train --solver=examples/mnist/lenet_solver.prototxt
5、用训练好的模型对数据进行预测
sudo ./build/tools/caffe.bin test \
-model examples/mnist/lenet_train_test.prototxt \
-weights examples/mnist/lenet_iter_10000.caffemodel \
-iterations 100

GPU模式:

1、重新编译Caffe
修改Makefile.config,屏蔽CPU_ONLY,即在CPU_ONLY前加上“#”
sudo make -j
2、修改训练超参数文件
sudo vim examples/mnist/lenet_solver.prototxt
修改最后一行为:solver_mode : GPU
3、进行训练
sudo ./build/tools/caffe.bin train --solver=examples/mnist/lenet_solver.prototxt
4、用训练好的模型对数据进行预测,并使用caffe time命令进行计时
sudo ./build/tools/caffe.bin time \
-model examples/mnist/lenet_train_test.prototxt \
-gpu 0

cuDNN模式:

1、重新编译Caffe
修改Makefile.config,去掉USE_CUDNN前的“#”(使用cuDNN加速)
sudo make -j
2、进行训练
sudo ./build/tools/caffe.bin train --solver=examples/mnist/lenet_solver.prototxt
3、用训练好的模型对数据进行预测,并使用caffe time命令进行计时
sudo ./build/tools/caffe.bin time \
-model examples/mnist/lenet_train_test.prototxt \
-gpu 0

结果对比:

CPU模式:

CPU_ONLY := 1
solver mode : CPU
测试时间:3633ms

GPU模式:

# CPU_ONLY := 1
solver mode : GPU
测试时间:673.594ms

cuDNN加速:

USE_CUDNN := 1
# CPU_ONLY := 1
solver mode : GPU
测试时间:246.016ms

由此可见,训练时间:CPU > GPU > cuDNN。