在CentOS 6.5这样的老旧系统上搭建GPU版本的Caffe深度学习框架,是一项充满挑战但并非不可能完成的任务,这个过程的核心在于处理各个组件之间严苛的版本依赖关系,因为现代版本的软件往往已经放弃了对如此古老操作系统的支持,本文将详细梳理整个安装流程,提供关键配置要点,并帮助您规避常见的陷阱。
环境准备与前置依赖
在开始之前,请确保您拥有一台安装了CentOS 6.5操作系统的计算机,配备了一块受NVIDIA官方支持的GPU,并且拥有root权限或sudo权限,由于CentOS 6.5的官方源已经停止维护,您可能需要配置vault.centos.org作为软件源,以便能够使用yum
命令安装基础的编译工具。
安装必要的开发工具包和库,这些是编译Caffe及其依赖项的基础。
yum groupinstall -y "Development Tools" yum install -y kernel-devel-$(uname -r) wget git python-devel numpy
安装Caffe所需的一系列关键依赖库,这些库可以通过yum
直接安装,但需要注意版本兼容性。
yum install -y protobuf-devel leveldb-devel snappy-devel opencv-devel yum install -y hdf5-devel boost-devel gflags-devel glog-devel lmdb-devel
NVIDIA驱动与CUDA工具包的安装
这是整个过程中最关键也最容易出错的一环,由于CentOS 6.5的内核版本非常旧(通常是2.6.x),您不能安装最新版本的NVIDIA驱动,您需要寻找一个与您的内核和CUDA工具包版本都兼容的较旧驱动。
一个推荐的组合是使用CUDA 7.5或CUDA 7.0,它们对旧系统的支持相对较好,您可以从NVIDIA开发者网站的归档区域下载这些旧版本的CUDA Toolkit。
安装步骤:
禁用Nouveau驱动: Nouveau是开源的NVIDIA驱动,必须先禁用它,创建
/etc/modprobe.d/blacklist-nouveau.conf
文件,并添加以下内容:blacklist nouveau options nouveau modeset=0
然后运行
dracut --force
并重启系统。安装NVIDIA驱动: 从NVIDIA官网下载与CUDA 7.5兼容的驱动程序(352.xx系列),以root权限运行下载的
.run
文件,并按照提示完成安装,安装过程中选择接受协议,并选择安装32位兼容库(如果需要)。安装CUDA Toolkit: 下载CUDA 7.5的
.run
安装包,运行时,建议只安装“Toolkit”组件,因为驱动已在第一步单独安装,这样可以避免版本冲突,安装路径默认为/usr/local/cuda
。配置环境变量: 将CUDA的路径添加到系统环境变量中,编辑
~/.bashrc
或/etc/profile
文件,添加:export PATH=/usr/local/cuda/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
执行
source ~/.bashrc
使配置生效。
安装cuDNN加速库
cuDNN是NVIDIA为深度神经网络提供的GPU加速库,您需要一个与CUDA 7.5兼容的cuDNN版本(例如cuDNN v4或v5),同样,这需要从NVIDIA开发者网站的归档中下载。
下载后,解压压缩包,您会看到cuda
文件夹,将其中的库文件和头文件复制到CUDA安装目录下:
tar -xzvf cudnn-7.5-linux-x64-v5.1.tgz sudo cp cuda/include/cudnn.h /usr/local/cuda/include sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64 sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
编译与配置Caffe
现在所有依赖都已就位,可以开始编译Caffe了,建议从GitHub上克隆一个相对较旧但稳定的Caffe版本,以避免新代码对旧环境的不兼容。
git clone https://github.com/BVLC/caffe.git cd caffe
核心配置在于修改Makefile.config
文件,复制示例文件:
cp Makefile.config.example Makefile.config
使用文本编辑器打开Makefile.config
,进行如下关键修改:
配置项 | 原始值 | 修改后值 | 说明 |
---|---|---|---|
CPU_ONLY | CPU_ONLY := 1 | # CPU_ONLY := 1 | 注释掉此行以启用GPU支持 |
CUDA_DIR | CUDA_DIR := /usr/local/cuda | 确保路径正确 | 指向CUDA工具包的安装目录 |
BLAS | BLAS := open | BLAS := atlas 或 open | 选择系统中已安装的BLAS库 |
PYTHON_INCLUDE | 注释状态 | 取消注释 | 启用Python层支持 |
WITH_PYTHON_LAYER | # WITH_PYTHON_LAYER := 1 | WITH_PYTHON_LAYER := 1 | 启用Python层 |
配置完成后,开始编译,使用-j
参数可以加速编译过程,$(nproc)
会自动使用所有可用的CPU核心。
make all -j$(nproc) make test -j$(nproc) make runtest
如果make runtest
能够顺利通过,说明Caffe的GPU环境已经基本搭建成功,为了在Python中使用Caffe,还需要编译Python接口:
make pycaffe -j$(nproc)
将caffe/python
目录添加到PYTHONPATH
环境变量中,即可在Python脚本中import caffe
了。
相关问答FAQs
问题1:编译过程中提示GCC版本不兼容或C++11特性相关错误,该如何解决?
解答: 这是CentOS 6.5上最常见的问题之一,CentOS 6.5默认的GCC版本是4.4.7,而较新版本的Caffe或其依赖(如Boost)可能需要GCC 4.6以上版本甚至支持C++11,有两种主要解决方案:
- 使用DevToolSet: 安装CentOS SCLo(Software Collections)仓库,然后通过
yum install devtoolset-2
或devtoolset-3
来获取一个较新的GCC环境(如4.8.1),在编译前,需要先执行scl enable devtoolset-2 bash
来切换到新的GCC环境。 - 降级Caffe版本: 如果无法使用DevToolSet,可以尝试 checkout 一个更古老的Caffe版本(例如2015-2016年的某个commit),那个时期的Caffe代码对旧版GCC的兼容性更好。
问题2:运行make runtest
时,部分测试失败,提示“CUDA driver version is insufficient for CUDA runtime version”或找不到libcudart.so
等错误,是什么原因?
解答: 这个错误通常指向NVIDIA驱动、CUDA Toolkit和cuDNN之间的版本不匹配,或者环境变量配置问题。
- 版本不匹配: 请仔细核对您安装的NVIDIA驱动版本是否支持您所使用的CUDA Toolkit版本,CUDA 7.5通常需要352.xx系列的驱动,可以查阅CUDA Toolkit的Release Notes来确认。
- 环境变量: 确保您已经正确设置并
source
了LD_LIBRARY_PATH
和PATH
环境变量,可以通过echo $LD_LIBRARY_PATH
和nvcc --version
命令来检查,如果nvcc
命令找不到,说明PATH
设置有问题;如果运行时找不到库文件,说明LD_LIBRARY_PATH
设置有问题。 - 库文件完整性: 检查
/usr/local/cuda/lib64
目录下是否存在libcudart.so
、libcublas.so
以及cuDNN的库文件(如libcudnn.so
),确保它们都存在且具有可读权限。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复