在CentOS 7上安装Caffe

简介

Caffe 是一个广泛使用的清晰、高效、模块化的深度学习框架,是贾扬清(Yangqing Jia)在UC Berkeley 读博期间建立的项目,由伯克利AI实验室(Berkeley AI Research,BAIR)及社区贡献者开发。 Caffe 具有如下特点:架构清晰,模型和优化通过配置定义,CPU和GPU切换通过设置flag;代码扩展性好,开发者贡献了大量的改进,框架的代码和模型保持业界最新;运行速度快,适合科研和商业应用;丰富的社区,有从学术研究项目到大型商业项目的广泛应用,包括图像、语音、多媒体方面。

本教程主要介绍Caffe 在Centos 7上的安装和使用,包括安装过程,基本使用和简单示例运行。

GPU驱动安装

根据GPU型号从相应网站下载驱动,例如使用NVIDIA Tesla M60,从NVIDIA网站选择对应的型号和操作系统,CUDA Toolkit版本,下载驱动文件,如NVIDIA-Linux-x86_64-375.66.run,运行驱动文件,根据提示安装:

sh  NVIDIA-Linux-x86_64-375.66.run

安装完成后可以通过NVIDIA命令工具nvidia-smi查看GPU情况:

nvidia-smi
Wed Jun 28 11:39:28 2017
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 375.39                 Driver Version: 375.39                    |
|-------------------------------+----------------------+----------------------+
| 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 M60           Off  | 0000:00:02.0     Off |                  Off |
| N/A   36C    P0    38W / 150W |      0MiB /  8123MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+:

Caffe 安装过程

1.安装基础依赖库

安装Caffe所需的系统依赖库:

sudo yum install protobuf-devel leveldb-devel snappy-devel opencv-devel boost-devel hdf5-devel
sudo yum install gflags-devel glog-devel lmdb-devel

2.安装CUDA

NVIDIA网站选择最新的驱动版本,选择Linux,x86_64,CentOS 7,下载rpm(local)驱动文件,并安装

sudo rpm -i cuda-repo-rhel7-8-0-local-ga2-8.0.61-1.x86_64.rpm
sudo yum clean all
sudo yum install cuda

设置环境变量

export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:/usr/local/cuda-8.0/extras/CUPTI/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=/usr/local/cuda-8.0/

3.安装cuDNN

NVIDIA网站下载cuDNN 安装包,根据GPU及CUDA版本选择对应cuDNN版本,下载cuDNN v5.1 for CUDA8.0,解压拷贝到CUDA安装目录

cp include/* /usr/local/cuda/include
cp lib64/* /usr/local/cuda/lib64

4.安装BLAS

选择安装ATLAS,安装命令如下:

sudo yum install atlas-devel 
cd  /usr/lib64/atlas 
sudo ln -sv libsatlas.so.3.10 libcblas.so
sudo ln -sv libsatlas.so.3.10 libatlas.so

5.下载Caffe源码

github下载Caffe源码

git clone https://github.com/BVLC/caffe.git

6.安装python 依赖

进入caffe/python目录,安装requirements中依赖库

for req in $(cat requirements.txt); do pip install $req; done

7.编译

编辑Caffe 目录Makefile.config 文件,根据依赖库情况修改配置: 主要修改如下:

USE_CUDNN := 1
BLAS := atlas
BLAS_INCLUDE := /usr/include/atlas
BLAS_LIB := /usr/lib64/atlas
PYTHON_INCLUDE := /usr/include/python2.7 \
                /usr/lib64/python2.7/site-packages/numpy/core/include
PYTHON_LIB := /usr/lib64

编译和测试Caffe,-j选项为编译并行线程数,一般为CPU核数。

make all -j8
make test -j8
make runtest -j8

Caffe 使用示例

1.运行Caffe

进入Caffe 安装目录,执行./build/tools/caffe,可以根据caffe命令选项使用

./build/tools/caffe
caffe: command line brew
usage: caffe <command> <args>

commands:
  train           train or finetune a model
  test            score a model
  device_query    show GPU diagnostic information
  time            benchmark model execution time

2.MNIST 例子

进入Caffe目录,执行如下命令

下载数据集:
./data/mnist/get_mnist.sh
转换数据集:
./examples/mnist/create_mnist.sh
训练例子:
./examples/mnist/train_lenet.sh

训练输出示例如下:

./examples/mnist/train_lenet.sh
I0628 15:12:45.510594 54419 caffe.cpp:218] Using GPUs 0
I0628 15:12:46.025655 54419 caffe.cpp:223] GPU 0: Tesla M60
I0628 15:12:46.311704 54419 solver.cpp:44] Initializing solver from parameters:
test_iter: 100
test_interval: 500
base_lr: 0.01
display: 100
max_iter: 10000
lr_policy: "inv"
gamma: 0.0001
power: 0.75
momentum: 0.9
weight_decay: 0.0005
snapshot: 5000
snapshot_prefix: "examples/mnist/lenet"
...
I0628 15:13:12.870817 54419 sgd_solver.cpp:273] Snapshotting solver state to binary proto file examples/mnist/lenet_iter_10000.solverstate
I0628 15:13:12.874179 54419 solver.cpp:310] Iteration 10000, loss = 0.00265072
I0628 15:13:12.874205 54419 solver.cpp:330] Iteration 10000, Testing net (#0)
I0628 15:13:12.962249 54426 data_layer.cpp:73] Restarting data prefetching from start.
I0628 15:13:12.964479 54419 solver.cpp:397]     Test net output #0: accuracy = 0.9906
I0628 15:13:12.964511 54419 solver.cpp:397]     Test net output #1: loss = 0.0283195 (* 1 = 0.0283195 loss)
I0628 15:13:12.964524 54419 solver.cpp:315] Optimization Done.
I0628 15:13:12.964529 54419 caffe.cpp:259] Optimization Done.

参考资料

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值