在服务器上配置Caffe环境,最稳妥的方式是基于Ubuntu系统通过源码编译安装,并严格匹配CUDA、cuDNN与依赖库的版本,其中版本对齐是决定成败的关键因素。
配置前的准备工作
硬件与操作系统要求
Caffe对GPU服务器支持最完善,但CPU模式也可运行,你需要一张NVIDIA显卡,计算能力不低于3.5,例如GTX 1080、Titan X或V100等,操作系统方面,Ubuntu 16.04是社区长期验证的版本,Ubuntu 18.04也可以,但你需要额外处理部分依赖的版本兼容性,如果你使用CentOS或RHEL,建议通过Docker运行Caffe,避免系统库冲突。
基础软件与编译工具
在终端中依次安装编译工具:
sudo apt-get update sudo apt-get install build-essential cmake git pkg-config
Caffe依赖大量库,包括protobuf、leveldb、snappy、boost、hdf5、gflags、glog、lmdb、opencv等,建议一次性安装系统级依赖:
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler sudo apt-get install --no-install-recommends libboost-all-dev sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
OpenCV建议使用3.x版本,如果你需要Python接口,同时安装python-opencv或通过pip安装。
关键依赖版本选择
行业共识认为,Caffe对依赖库版本敏感,尤其是protobuf和OpenCV,Ubuntu 16.04默认的protobuf 2.6.1与Caffe完全匹配;如果你使用Ubuntu 18.04,protobuf版本为3.x,此时需要手动降级或使用修改后的Caffe分支,对于OpenCV,Caffe官方支持2.4和3.x,推荐使用3.4.0。业内专家指出,使用Ubuntu 16.04并配合系统默认依赖是最省心的方案,可以避免大量编译错误。
caffe环境配置步骤详解
安装CUDA与cuDNN
Caffe官方推荐CUDA 8.0,但如果你使用较新显卡(如RTX 2080 Ti),可能需要CUDA 10.0或更高,这时需要选择兼容的Caffe源码(如官方分支caffe-cuda10),下载CUDA runfile后执行:
sudo sh cuda_8.0.61_375.26_linux.run --no-opengl-libs
配置环境变量,在~/.bashrc中添加:
export PATH=/usr/local/cuda-8.0/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH
cuDNN下载后解压,复制文件到CUDA目录:
tar -xzvf cudnn-8.0-linux-x64-v7.tgz sudo cp cuda/include/cudnn.h /usr/local/cuda/include/ sudo cp cuda/lib64/libcudnn /usr/local/cuda/lib64/
验证cuDNN安装:
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
编译Caffe
克隆源码:
git clone https://github.com/BVLC/caffe.git cd caffe
复制配置文件模板:
cp Makefile.config.example Makefile.config
编辑Makefile.config,关键修改项如下:
- 取消注释
USE_CUDNN := 1 - 如果使用OpenCV 3,取消注释
OPENCV_VERSION := 3 - 设置Python接口路径:
PYTHON_INCLUDE := /usr/include/python2.7或/usr/include/python3.5 - 根据显卡架构调整
CUDA_ARCH,例如GTX 1080添加-gencode arch=compute_61,code=sm_61 - 如果使用OpenBLAS,设置
BLAS := open
保存后编译:
make all -j`nproc` make test -j`nproc` make runtest
如果全部测试通过,说明编译成功,这是caffe环境配置步骤中最核心的验证环节。
安装Python接口(pycaffe)
进入caffe/python目录,安装依赖:
for req in $(cat requirements.txt); do pip install $req; done
然后编译Python接口:
make pycaffe
将caffe/python加入PYTHONPATH:
echo "export PYTHONPATH=/path/to/caffe/python:$PYTHONPATH" >> ~/.bashrc source ~/.bashrc
测试Python接口:
python -c "import caffe; print(caffe.__version__)"
验证完整环境
下载mnist数据集,运行示例:
./data/mnist/get_mnist.sh ./examples/mnist/create_mnist.sh ./examples/mnist/train_lenet.sh
如果网络正常收敛,表明caffe环境搭建完成。
服务器配置caffe深度学习环境的关键点
多GPU与分布式训练
如果你的服务器有多张GPU,Caffe默认使用ID 0的GPU,要使用多GPU,需在编译时加入 USE_NCCL := 1,并安装NCCL 2.x,在solver.prototxt中设置 device_id: 0,1,2,3,或通过命令行指定 --gpu=0,1,2,3。多GPU配置时,网络带宽和NCCL版本直接影响加速比,建议使用NVIDIA官方推荐的NCCL 2.4以上版本。
性能优化建议
- 使用cuDNN加速:编译时开启
USE_CUDNN := 1,可显著提升卷积层速度,通常加速比在2-4倍之间。 - 更改为Release模式:编译时设置
DEBUG := 0,默认已是Release,无需额外操作。 - 使用OpenBLAS代替ATLAS:编译时选择
BLAS := open,并在系统中安装libopenblas-dev。 - 调整输入流水线:使用LevelDB或LMDB,避免磁盘I/O成为瓶颈。
使用Docker简化部署
如果你不想管理版本依赖,Docker镜像是服务器配置caffe深度学习环境的主流趋势,官方提供cuda8.0-cudnn7的caffe镜像,拉取后即可使用,避免宿主机环境污染。
docker pull bvlc/caffe:cuda8.0-cudnn7 docker run -it --gpus all bvlc/caffe:cuda8.0-cudnn7 caffe --version
这种方式特别适合多服务器批量部署,环境一致性高。
常见问题与解决方案
编译报错:’caffe/proto/caffe.pb.h’ 没有那个文件
原因:protobuf未生成c++文件,解决方案:运行 make clean,然后重新编译,或手动执行 protoc src/caffe/proto/caffe.proto --cpp_out=.。
运行时报错:Check failed: error == cudaSuccess (2 vs. 0) out of memory
原因:GPU显存不足,解决方案:减小batch size,或使用 --gpu=0 指定单GPU,或使用 caffe.set_mode_cpu() 暂时使用CPU调试。
找不到libcudnn.so.7
原因:动态库路径未正确设置,解决方案:确保 LD_LIBRARY_PATH 包含cuDNN库路径,或使用 sudo ldconfig 刷新缓存,如果仍不行,可手动添加软链接。
Python接口报错:No module named caffe
原因:PYTHONPATH未设置或未包含caffe/python,解决方案:检查环境变量,并确认编译pycaffe成功。
服务器配置caffe环境并不是高门槛的任务,只要版本对齐、步骤清晰,多数新手都能在半天内完成。 如果遇到阻力,优先核对CUDA、cuDNN、protobuf的版本,这是整个配置的基石,对于生产环境,建议使用Docker镜像或考虑迁移至更现代的框架,以降低维护成本。
关于caffe环境配置的常见问题
服务器配置caffe环境时如何选择CUDA版本?
Caffe官方推荐CUDA 8.0与cuDNN v7,这套组合经历最广泛测试,如果你使用较新显卡(如安培架构),可能需要CUDA 11.x,此时建议使用Caffe的社区分支(如caffe2)或考虑迁移至PyTorch等框架,另一种方案是使用Docker镜像,官方提供了cuda9.0-cudnn7的caffe镜像,可在较新系统上直接运行,免去配置烦恼。
caffe环境搭建完成后如何测试?
最简单的测试是运行caffe的mnist示例,首先下载mnist数据集,转换格式,然后训练,如果网络能正常收敛,说明环境基本正确,你也可以运行 make runtest 执行单元测试,全部通过即代表配置完整。
编译caffe时提示找不到cuda.h怎么办?
最常见的原因是CUDA安装后未设置环境变量,检查 /usr/local/cuda/include 是否存在cuda.h,然后在Makefile.config中确保 CUDA_DIR 指向正确路径,如果使用系统默认路径,通常无需修改,若依旧报错,可尝试 export CUDA_HOME=/usr/local/cuda 后再编译。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/534727.html



