1. 环境准备与依赖项安装

在Ubuntu 16.04系统上搭建深度学习开发环境,需要先安装必要的依赖项。这些基础组件将为后续的软件安装提供支持。

首先更新系统软件包列表:

sudo apt-get update
sudo apt-get upgrade -y

安装通用依赖项:

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev \
libopencv-dev libhdf5-serial-dev protobuf-compiler \
libboost-all-dev libgflags-dev libgoogle-glog-dev \
liblmdb-dev libatlas-base-dev

注意:安装过程中如果遇到依赖冲突,可以尝试使用 --fix-missing 参数自动修复依赖关系。

2. CUDA 8.0安装与配置

2.1 驱动准备

在安装CUDA之前,需要确保系统已安装合适的NVIDIA驱动:

sudo apt-get install nvidia-384

安装完成后重启系统,通过 nvidia-smi 命令验证驱动是否正常工作。

2.2 CUDA安装

从NVIDIA官网下载CUDA 8.0的runfile安装包:

wget https://developer.nvidia.com/compute/cuda/8.0/Prod2/local_installers/cuda_8.0.61_375.26_linux-run

执行安装:

sudo sh cuda_8.0.61_375.26_linux-run

安装过程中需要注意:

  1. 不安装自带的NVIDIA驱动(已单独安装)
  2. 接受许可协议
  3. 保持默认安装路径(/usr/local/cuda-8.0)

2.3 环境变量配置

在~/.bashrc文件中添加:

export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH

执行 source ~/.bashrc 使配置生效,通过 nvcc -V 验证安装。

3. cuDNN 6.0安装

从NVIDIA开发者网站下载cuDNN 6.0 for CUDA 8.0的安装包,解压后执行:

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*

4. OpenCV 3.1编译安装

4.1 源码准备

从OpenCV官网下载3.1.0版本源码并解压:

wget https://github.com/opencv/opencv/archive/3.1.0.zip
unzip 3.1.0.zip
cd opencv-3.1.0

4.2 编译配置

创建build目录并配置:

mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D WITH_CUDA=ON \
-D CUDA_ARCH_BIN="3.0 3.5 5.0 6.0" \
-D CUDA_ARCH_PTX="" \
-D WITH_CUBLAS=ON \
-D WITH_LIBV4L=ON \
-D BUILD_TESTS=OFF \
-D BUILD_PERF_TESTS=OFF ..

4.3 解决GraphCut问题

编辑 modules/cudalegacy/src/graphcuts.cpp 文件,修改:

#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)
为
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000)

4.4 编译与安装

make -j$(nproc)
sudo make install
sudo ldconfig

5. MATLAB 2017a安装

5.1 挂载ISO镜像

sudo mkdir /media/matlab
sudo mount -o loop R2017a_glnxa64.iso /media/matlab

5.2 执行安装

cd /media/matlab
sudo ./install

安装过程中选择"使用文件安装密钥"模式,输入许可证文件中的安装密钥。

5.3 破解与配置

复制破解文件到安装目录:

sudo cp -r Matlab_R2017a_Linux_Crack/R2017a /usr/local/MATLAB/

创建桌面快捷方式:

sudo ln -s /usr/local/MATLAB/R2017a/bin/matlab /usr/local/bin/matlab

6. Caffe编译与配置

6.1 获取源码

git clone https://github.com/BVLC/caffe.git
cd caffe
cp Makefile.config.example Makefile.config

6.2 配置文件修改

编辑Makefile.config,关键配置如下:

USE_CUDNN := 1
OPENCV_VERSION := 3
CUDA_DIR := /usr/local/cuda-8.0
BLAS := atlas
MATLAB_DIR := /usr/local/MATLAB/R2017a
PYTHON_INCLUDE := /usr/include/python2.7 \
                  /usr/lib/python2.7/dist-packages/numpy/core/include
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include \
                /usr/lib/x86_64-linux-gnu/hdf5/serial/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib \
                /usr/lib/x86_64-linux-gnu/hdf5/serial
LINKFLAGS := -Wl,-rpath,$(HOME)/anaconda2/lib

6.3 编译安装

make all -j$(nproc)
make test -j$(nproc)
make runtest -j$(nproc)
make pycaffe -j$(nproc)
make matcaffe -j$(nproc)

6.4 常见问题解决

问题1:libcudnn找不到

sudo ln -s /usr/local/cuda/lib64/libcudnn.so.6 /usr/local/cuda/lib64/libcudnn.so

问题2:hdf5相关错误 在Makefile.config中确保包含:

INCLUDE_DIRS := ... /usr/include/hdf5/serial
LIBRARY_DIRS := ... /usr/lib/x86_64-linux-gnu/hdf5/serial

问题3:protobuf缺失

conda install protobuf

7. 环境验证

7.1 Python接口测试

import caffe
print(caffe.__version__)

7.2 MATLAB接口测试

在MATLAB命令行执行:

addpath('/path/to/caffe/matlab');
caffe.set_mode_cpu();

7.3 MNIST测试

./data/mnist/get_mnist.sh
./examples/mnist/create_mnist.sh
./examples/mnist/train_lenet.sh

8. 使用技巧与优化建议

  1. 多版本管理 :使用virtualenv或conda创建独立Python环境
  2. 性能调优 :在Makefile.config中调整CUDA架构参数
  3. 内存优化 :对于小显存GPU,可减小batch size
  4. 开发工具 :推荐使用PyCharm专业版进行Python开发
  5. MATLAB优化 :设置MATLAB使用GPU计算:
gpuDevice()

9. 系统维护建议

  1. 定期清理编译中间文件:
make clean
  1. 更新驱动和CUDA时注意版本兼容性

  2. 重要配置文件备份:

tar -czvf caffe_config_backup.tar.gz Makefile.config
  1. 使用screen或tmux管理长时间运行的任务

这套环境配置虽然过程复杂,但完成后可以支持大多数深度学习研究和开发需求。在实际使用中,建议根据具体项目需求调整各组件版本。

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐