1、caffe的计时功能
可以对比不同硬件、不同算法、不同模型的处理耗时情况,使得可以有针对性的进行硬件、算法、模型选型和评估;
对当前平台上网络各层前向/反向进行计时:
$./build/tools/caffe.bin time \
2、Caffe GPU加速模式
显卡配置高,需要大功率的电源和散热系统。
可以租用GPU云服务器,如阿里云HPC:https://www.aliyun.com/product/hpc
- GPU,图形处理器,并行架构,具备相连处理、矩阵运算功能;
注:Tesla系列GPU适合云端部署,Jetson系列GPU适合嵌入式应用;
- CUDA并行计算架构(Intel CPU+GPU):GPU编程环境,包括编译器nvcc、开发工具、运行时库和驱动等模块;
注:cuda之前有使用OpenGL等语言实现算法在GPU上运行,但是技巧太难掌握;
2.1、GPU CUDA 和深度学习
CUDA:cuBLAS软件库--相当于---CPU :OpenBLAS/MKL计算库
注:软件:深度学习SDK : DIGITS、cuDNN、cuSPARSE、cuBLAS、NCCL;
硬件:消费级器件Titan X、专业硬件系统DEVBOX、云山的解决方案AWS、Azure、IBM SoftLayer、阿里云HPC等
GPU架构上的CNN/DNN实现:cuda-convnet2、maxDNN,caffe中*.cu文件使用CUDA及其软件库编写。
2.2、Caffe GPU环境准备
(1).安装CPU驱动和CUDA Toolkit,务必查看官网教程;
注:阿里云HPC物理机,一件装GPU驱动352.79和CUDA Toolkit7.5,默认路径/usr/local/cuda/;编译器nvcc:/usr/local/cuda/bin/nvcc;
(2).验证驱动安装成功;
$nvidia-smi
注:查看GPU设备和驱动以及占用率等情况,nvidia-smi -h查看命令清单;
(3).验证CUDA安装成功
通过实例来验证:
$ cd /usr/local/cuda/samples/7_CUDALibraries/batchCUBLAS/
$ls #包含Makefile、batchCUBLAS.cpp等
$make #编译,可以看到调用了nvcc
$./batchCUBLAS -m4096 -n4096 -k4096 #利用cuBLAS实现矩阵乘计算
(4).切换到Cfaae GPU加速模式
修改Makefile.config选项:
#CPU_ONLY:=1
$make clean
$make -j
注 : 实例中需要修改超参数文件.prototxt中solver_mode :GPU或者命令行-gpu 0(在0号GPU上运行)
3、Caffe cuDNN(专业加速库)加速模式
3.1、获取cuDNN
默认CUDA安装不包括cuDNN【推荐CUDA7.5+cuDNN v3+Caffe 20160303]】
3.2、切换到Caffe cuDNN加速模式
修改Makefile.config选项:
#USE_CUDNN :=1
$make clean
$make -j
3.3、Caffe不同硬件配置性能
例:NVDIA K40
- 关掉ECC(风险自己承担):$sudo nvidia-smi -i --ecc-config=0 #对每个GPU重复 -i x
- 重启,设置GPU模式 : $sudo nvidia-smi -pm 1 #模式为persistence
- 设置时钟速率 : $sudo nvidia-smi -i 0 -ac 3004,875 #对每个GPU重复 -i x
注:每当驱动重新加载/重启时都恢复为。在ubuntu系统中将上述命令写入/etc/rc.local