深度学习配置机器:Nvidia + Ubuntu + DL框架 + SDK

0 硬件(机器)

Nvidia硬件产品

参考资料

  • 关于显卡(入门级)(独显为主)(NVIDIA分析)(AMD详细分析) cnblogs
  • 【科普】英伟达显卡发展史及产品型号大全V2.1 百度贴吧-显卡吧
  • GPU购买指南

1 操作系统

选择目前稳定的长期支持版本:Ubuntu 16.04 LTS (Xenial Xerus)

查看系统版本:

uname -a
lsb_release -a

查看硬件信息

# 查看显卡
lspci | grep -i vga
lspci | grep -i nvidia
# (VGA接口编号)
lspci -v -s 02:00.0 

# 查看驱动版本
dpkg -l | grep nvidia
# 显卡设备
ls /dev/nvidia*
# Nvidia显卡运行状态
nvidia-smi
  • 全新安装:

  • 升级安装:

sudo apt update
sudo apt dist-upgrade
sudo apt autoremove
sudo do-release-upgrade -d


2 Nvidia驱动和开发包

驱动:

安装新版本前推荐卸载已有的Nvidia驱动:

sudo apt-get remove --purge nvidia*
  • 官网下载
    https://www.nvidia.cn/Download/index.aspx

  • ppa
    ppa中提供的显卡驱动,主页:https://launchpad.net/~graphics-drivers/+archive/ubuntu/ppa

# 添加源
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
 # 选择合适的且尽可能新的版本(2018年)
# 使用apt search '^nvidia\-[0-9]+$'
sudo apt-get install nvidia-396
# 删除源
sudo add-apt-repository --remove ppa:graphics-drivers/ppa
深度学习配置机器:Nvidia + Ubuntu + DL框架 + SDK_第1张图片
支持Ubuntu 16.04的驱动(2018年)

补充:
使用apt full-upgrade后升级后(包括驱动),可能造成运行nvidia-smi出现以下问题:

Failed to initialize NVML: Driver/library version mismatch.

原因:内核模块中nvidia驱动没有同步更新。
解决方案:
方式1: 直接重启
方式2:手动重新加载内核模块(先移除旧模块,再加载新模块)

# 查看依赖(可略)
lsmod | grep -i nvidia

# 依次依次依赖模块
sudo rmmod nvidia_uvm
sudo rmmod nvidia_drm 
sudo rmmod nvidia_modeset

# 移除旧模块(上一步不执行,会报错)
sudo rmmod nvidia

# 会自动加载相关模块
sudo nvidia-smi

参考:comzyh, 解决Driver/library version mismatch, 2017-04-06

查看已有驱动版本

dpkg -l | grep -i nvidia
cat /proc/driver/nvidia/version

CUDA:

CUDA(Compute Unified Device Architecture)是由NVIDIA所推出的一种集成技术,是该公司对于GPGPU的正式名称。这里主要指用于对Nvidia GPU进行并行计算的软件开发包,避免直接对GPU等底层编程,与之相类似还有OpenCL。

注意:
安装CUDA和CuDNN的版本需要符合Tesorflow相应版本的要求(版本过低可能导致后续tensorflow等框架安装失败)。

下载最新版本:

  • cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.deb
  • cuda-repo-ubuntu1604-8-0-local-cublas-performance-update_8.0.61-1_amd64.deb (这是更新包)
$ sudo dpkg -i cuda-xx.deb # 两个包都要,其实解压dk /var中
$ sudo apt update
$ sudo apt install cuda

.deb安装包:

# cuda 9.1 (2018年)下载安装
wget https://developer.nvidia.com/compute/cuda/9.1/Prod/local_installers/cuda_9.1.85_387.26_linux
sudo sh cuda_9.1.85_387.26_linux.run

设置环境变量(写入到~/.bashrc/etc/profile

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

验证(运行一个样例程序)

$ nvidia-smi

# 进入sample安装的目录
$ cd /usr/local/cuda/samples/1_Utilities/deviceQuery
$ makesudo 
$ ./deviceQuery # 看到GPU相关信息,RESULT=PASS

CuDNN

cudnn是一个构建在CUDA之上的神经网络层加速库。需要注册账户登录后才能下载,一般就选择适合自己系统的最新稳定版
选择 Library for Linux (Runtime和Development)

  • cudnn-8.0-linux-x64-v7.tgz
# 解压
$ tar -zxvf cudnn.tgz
# 复制相关头文件
$ sudo cp includue/cudnn.h /usr/local/cuda/include/
# 复制动态链接库
$ sudo cp lib/lib* /usr/local/cuda-8.0/lib64/ 

# 在/usr/local/cuda-8.0/lib64/链接相关文件
 # 删除原有动态文件
$ sudo rm -rf libcudnn.so libcudnn.so.5   
# 生成软衔接(注意这里注意libcudnn的版本)
$ sudo ln -s libcudnn.so.5.1.10 libcudnn.so.5  
$ sudo ln -s libcudnn.so.5 libcudnn.so  

补充:cudnn 7.1版本(cuda9.0版本)

  • 下载地址:http://developer.download.nvidia.com/compute/redist/cudnn/v7.1.2/cudnn-9.0-linux-x64-v7.1.tgz
  • 资料网站(https://gitlab.com/nvidia/cuda/blob/centos7/9.0/runtime/cudnn7/Dockerfile)
  • 安装
tar -zxvf cudnn-9.0-linux-x64-v7.1.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
# 复制库文件,同时也复制符号链接(-d)
sudo cp -d cuda/lib64/libcudnn* /usr/local/cuda/lib64/ 


3 深度学习框架

Google Tensorflow

推荐使用anaconda, 建立一个虚拟环境:

$ pip install tensorflow-gpu

问题:
运行tensorflow可能会出现:I tensorflow/core/platform/cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA
原因:不支持部分CPU指令
解决:自己编译tensorflow,参见官网
几个注意点:

  • 自己编译生成后的默认的whl不要修改名字,否则安装会有问题
  • bazel 尽量下载最新版本
    • 国内镜像下载地址:release 0.7.0 (2017-10-18);
    • Github相关讨论
  • 选项均选择默认,使用GPU需要配置cuda等选项;
    • 部分选项导致编译异常如:ERROR: missing input file '//third_party/mpi:mpio.h'.

Caffe

见官网:
http://caffe.berkeleyvision.org/install_apt.html
http://caffe.berkeleyvision.org/installation.html

Ubuntu 17.04以上版本有预编译包,直接安装

 # 仅有CPU
$ sudo apt install caffe-cpu
 # CUDA(有Nvidia GPU)
$ sudo apt install caffe-cuda

低版本(16以下)需要先安装一些包,主要:
更低的版本(14, 12)还有其他的依赖包

  • 通用的以来包 libXXX
$ sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-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
  • CUDA包
  • BLAS包:3选1(BLAS实现了基本的线性代数运算)
$ sudo apt-get install libatlas-base-dev  # ATLAS
$ sudo apt-get install libopenblas-dev # OpenBLAS
$ 安装Interl MKL
  1. 依赖包
  2. 编译安装
    make或cmake, cmake方式如下
mkdir build
cd build
cmake ..
make all
make install
make runtest
  1. 测试
$ cd ~/caffe-1.0 # 切换到caffe根目录
$ ./data/mnist/get_mnist.sh # 下载数据集
$  cd examples/mnist
$ ./create_mnist.sh # 转换数据格式
$ ./train_lenet.sh # 训练网络

中间出现的错误:
anaconda2/bin/../lib/libstdc++.so.6: version 'GLIBCXX_3.4.20' not found

解决:conda install libgcc

其他DL框架

mxnet, pylearn2, torch, theano, caffe2, keras

4 其他开发包SDK

OpenCV

从官网(代码托管在Github)下载源代码,3.3.0 安装参考:

  • opencv 3.3.0
  • 国外博客:http://www.pyimagesearch.com/2016/10/24/ubuntu-16-04-how-to-install-opencv/
  • 国内博客:https://www.cnblogs.com/arkenstone/p/6490017.html

基本步骤:

  1. 安装依赖包
  2. 下载源代码并解压
  3. 编译
# 最简单的形式
$ cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
$ make -j7 # -j表示并行进程数目,提高编译速度
$ sudo make install 

cmake指定Python(不要忘了最后的..上级目录):

cmake -D CMAKE_BUILD_TYPE=Release \
      -D CMAKE_INSTALL_PREFIX=/usr/local \
      -D INSTALL_PYTHON_EXAMPLES=ON \
      -D INSTALL_C_EXAMPLES=ON \
      -D PYTHON_EXECUTABLE=/usr/bin/python2.7 ..

4.测试
查询opencv版本号的命令:

pkg-config --modversion opencv

问题:
ippicv包下载失败
参考:http://blog.csdn.net/yiyuehuan/article/details/52951574
在github opencv_3rdparty的Branch中搜一下选择最新版

存放的目录和hash值有关:

ipp_file=../ippicv_linux_文件日期.tgz              &&
ipp_hash=$(md5sum $ipp_file | cut -d" " -f1)      &&
ipp_dir=3rdparty/ippicv/downloads/linux-$ipp_hash &&

mkdir -p $ipp_dir &&
cp $ipp_file $ipp_dir

Python 2中使用(编译时选择了Python2):
第二行是添加cv2.so所在路径,可以复制或建立符号链接

>>> import sys
>>> sys.path.append('/usr/local/lib/python2.7/site-packages') 
>>> import cv2
>>> print cv2.__version__

Matlab

Python


参考文档

  • [深度学习服务器环境配置: Ubuntu17.04+Nvidia GTX 1080+CUDA 9.0+cuDNN 7.0+TensorFlow 1.3], 52nlp, 2017-09-01
  • autocyz, Ubuntu16.04+cuda8.0+caffe安装教程, CSDN, 2016-08-24
  • xuzhongxiong, Ubuntu16.04+CUDA8.0+caffe配置, CSDN, 2016-10-01

你可能感兴趣的:(深度学习配置机器:Nvidia + Ubuntu + DL框架 + SDK)