深度学习Pytorch/Caffe-GPU环境配置

双系统Ubuntu16.04.06LTS+Nvidia显卡驱动 + Cuda9.0 + CuDNN7.4.2 +Opencv 3.4.6 + Pytorch/Caffe-GPU

目录

一、安装双系统

二、安装显卡驱动

三、安装Cuda9.0

四、安装CuDNN

五、Opencv 3.4.6

六、安装Pytorch

七、安装Caffe-GPU


 

深度学习环境的搭建比较复杂,重要的是掌握整体的安装思路,这样才能游刃有余地应对由于软件硬件环境不同所带来的各种问题!

一、安装双系统

建议双系统,不要用虚拟机,因为虚拟机无法访问显卡,无法安装显卡驱。

电脑硬件:HP OMEN 15-dc0011tx 暗影精灵 IV 代 144HZ i7-8750H 8G 128GSSD+1T GTX1060 6G独显;

软件:Window10家庭版64位(10.0,版本16299)+EUFI启动+GPT硬盘格式

准备工作:

  • 关闭快速启动:电源选项--选择电源按钮的功能--更改当前不可用的设置--取消选择"启用快速启动(推荐)"
  • 禁用安全启动:进入BIOS(F10 for HP), 系统设置--安全启动模式--禁用安全启动(disable)
  • 电脑分区:在SSD盘中分出50G, 机械硬盘压缩出 600G。
  • Ubuntu16.04.06LTS系统官网下载后用Ultraiso软件将镜像文件写入到U盘。

详细步骤可以查看 jiajinrang93的博客Window10系统下安装Ubuntu双系统教程及一些问题的解决办法(重要)以及 Ryan的博客:环境配置1-安装Ubuntu双系统


U盘启动进入Ubuntu安装界面:

  1. 安装Ubuntu系统时断网,防止在选地图处安装程序卡死;不勾选安装时更新,不勾选安装第三方软件;
  2. Ubuntu系统的界面语言选择英文,后面安装中文输入法就好。
  3. 安装类型:选择“其他选项”,自己创建调整分区。注意不要选“这台计算机已经安装了win10, 与win10共存”,否则Ubuntu引导会破坏win10引导,导致之后需要卸载Ubuntu删除引导时原来系统无法恢复。
  4. 添加Ubuntu系统分区:
  •   EFI系统分区:从之前SSD硬盘压缩出的freespace中添加出 1G  (注意EUFI启动是设置EFI system,而不是老版本grub引导的/boot),逻辑分区
  • swap: 主分区,SSD硬盘8G(因为我的电脑内存是8G的)。
  • 挂载 /usr  : 软件安装位置 ;SSD硬盘25G (如果硬盘更大,可以分配30~50G), Ext4日志文件系统,逻辑分区
  • 挂载 /      :除了home和usr的其他目录,如bin,dev,etc,lib,sys等; SSD硬盘16G,   Ext4日志文件系统,逻辑分区
  • /home :个人文件夹,存放自己的各种文件,下载的内容等,是最大的文件系统,所以使用从机械硬盘中压缩出的600G, Ext4日志文件系统,逻辑分区
  • 关键:安装启动引导器的设备选择刚刚添加的EFI system,千万不要按照默认的覆盖掉win10的启动引导器!!!!!

参考资料: Carina_Cao的博客:双硬盘SSD+HDD+ win10装双系统Ubuntu16.04


启动时选择系统:

  • 安装好后,引导会自动通过ubuntu引导;EUFI启动的安装无需再用软件制作引导;
  • 如果要使用window, 建议F9(惠普)选择window启动,而不是在ubuntu引导界面进入win10, 否则启动window10会很慢(>1min);如果经常使用window,偶尔使用ubuntu,可以在BIOS的 系统设置--操作系统的启动管理员 中把window引导设为优先,每次开机即自动进入window系统,需要ubuntu系统是用F9选择启动系统。

后续工作:

  • 进入Ubuntu系统后,system settings中选择Brightness&Lock,把关闭屏幕时间选择Never,并关闭Lock。
  • 不要安装软件中心弹出的自动更新!
  • Ubuntu系统无线网卡可能不能用,需要先连网线升级ubuntu软件包,方法:
sudo apt-get update //查看可安装的软件列表

sudo apt-get upgrade //进行安装包的更新

对于新上市的电脑,可能用的无线网卡还没有出linux系统的驱动,可以自己买一个外置的无线网卡,插在USB口使用。

  • 为Ubuntu系统安装中文输入法: 打开 系统设置->语言支持(System->Language Support),系统自动更新语言包;将键盘输入法系统由默认的iBus改为fcitx ,因为搜狗输入法是基于fcitx输入法系统的(如果Keyboard input method system的下拉菜单中不显示fcitx选项,就把Language for menus and windows中的灰色的汉语选项移到最顶端,fcitx即可刷新出来,然后再把English移到顶端); 下载搜狗输入法deb包并安装,方法:
sudo dpkg -i sogoupinyin_2.2.0.0108_amd64.deb   //包名称跟自己的版本保持一致

如果安装出现"dependency problems-leaving unconfigured"问题,则运行如下命令修复依赖项:

sudo apt-get install -f

然后再运行安装命令,成功安装。

最后,选择输入法,(可能需要重启),configure添加sogou输入法,置顶。

 

二、安装显卡驱动

准备工作:到NVIDIA官网找匹配自己网卡的驱动,我的版本为 NVIDIA-Linux-x86_64-418.74.run ;设置权限:

sudo chmod a+x NVIDIA-Linux-x86_64-418.74.run

禁用安全启动Secure Boot !!! (有人安装完双系统后恢复了安全启动,这会导致显卡驱动作为第三方软件无法正常安装,Ubuntu系统输入密码登陆后又不能进入系统,又跳回输入密码登录的界面)

安装思路:

1、禁用nouveau

打开黑名单:

sudo gedit /etc/modprobe.d/blacklist.conf

文件末尾添加:

blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist rivatv
blacklist nvidiafb

 PS: 禁用后执行以下命令,使得禁用立即生效。

sudo update-initramfs -u

 

2、删除原有的NVIDIA驱动

sudo apt-get --purge remove nvidia-*
sudo apt-get --purge remove xserver-xorg-video-nouveau

重启电脑!!! 

3、按Ctrl + Alt +F1到第一控制台(+F7是回到桌面) 

PS: Omen电脑进入第一控制台后不断显示"acpi INT3400:00:Unsupported event [0x86]",拔掉电源线后不再显示错误。ACPI即Advanced Configuration and Power Interface,可能是因为主板BIOS对acpi规范支持不好造成的,可进入BIOS关闭acpi功能。

4、结束X桌面服务,sudo service lightdm stop

5、进行安装

 sudo ./NVIDIA-Linux-x86_64-418.74.run --no-x-check --no-nouveau-check --no-opengl-files

6、安装完成后,sudo service lightdm start

具体安装步骤可参考: Ryan的博客:环境配置2-Ubuntu下安装NVIDIA显卡驱动

安装完后,一定要检查是否显卡已经正确安装,以便在后面安装Cuda出现问题时确认不是显卡驱动的问题。 方法:

nvidia-smi 

PS:关闭Ubuntu的Software&Updates自动更新,否则自动更新后可能导致Nvidia显卡驱动失效,需要重新安装Nvidia显卡驱动。

注意:最好不要自动安装显卡,即使用sudo add-apt-repository ppa:graphics-drivers/ppa工具,容易导致Ubuntu系统黑屏。

 

三、安装Cuda9.0

概述:深度学习需要大量的算力,模型的训练和推理在GPU上并行运行计算的速度是CPU的2~10倍,甚至更多。Cuda(Compute Unified Device Architecture)就是调用GPU的工具包,包括GPU加速库、调试和优化工具、C/C++编译器(nvcc)和动态链接库。调用GPU的cuda语言存放在.cu文件中,该语言是nvidia公司结合C/C++编写的,语法支持大部分C/C++,然后根据需要设计了一些其他的语法。

版本:显卡驱动支持的Cuda版本及其对应的Cudnn版本官网查询链接:https://docs.nvidia.com/deeplearning/sdk/cudnn-support-matrix/index.html   

Cuda官方安装指南可参见:https://developer.download.nvidia.cn/compute/cuda/9.0/Prod/docs/sidebar/CUDA_Quick_Start_Guide.pdf  (这里使用run文件安装,因为按照官网文档中的deb方法尝试无法正常安装)

深入学习cuda的官方资料:https://docs.nvidia.com/cuda/index.html 

安装思路:

1.更新仓库源

sudo apt-get update
sudo apt-get upgrade

2.安装依赖项

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 libopenblas-dev liblapack-dev libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev

3. Nvidia官网下载CUDA9.0,并运行安装。

sudo chmod a+x cuda_9.0.176_384.81_linux.run 
sudo sh cuda_9.0.176_384.81_linux.run

注意:安装界面会询问Install NVIDIA Accelerated Graphics Driver for Linux-86_64? 选择no !!! 因为之前已经手动安装了适合自己版本的显卡驱动。剩下的都选择默认值。

4. 配置环境变量

 sudo gedit ~/.bashrc

在打开的文件末尾加入

export CUDA_HOME=/usr/local/cuda-9.0
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}   //包括nvcc等工具
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}  //包括cublas等库

刷新

 source ~/.bashrc

如果gedit打不开~/.bashrc,可以使用

sudo vim ~/.bashrc

利用vim编辑文件的方法可以参见Anonymous的博客: [Linux/Ubuntu] vi/vim 使用方法讲解 。

5. 创建链接文件

 sudo gedit /etc/ld.so.conf.d/cuda.conf

或者

 sudo vim /etc/ld.so.conf.d/cuda.conf

写入

/usr/local/cuda-9.0/lib64

更新

 sudo ldconfig

 

参考:Ryan的博客: 环境配置3-Ubuntu下安装CUDA8.0和cuDNN


安装完后,检查Cuda是否已经正确安装,

nvcc --version

再跑一个例子确认是否正确,

cd /home/yly/NVIDIA_CUDA-9.0_Samples # 安装CUDA时软件自动制定的安装sample的路径 or /usr/local/cuda/samples (not recommanded,因为编译生成的程序会占用/usr的空间)
sudo make clean && sudo make -j$(nproc) -Wno-deprecated-gpu-targets
cd bin/x86_64/linux/release
./deviceQuery
./bandwidthTest

若编译通过则表示已经正确安装。

可参考 爱吃鱼的猫的博客: ubuntu下安装cuda+cudnn步骤 。

 

PS: 卸载Cuda (若以后更新Cuda版本需要卸载旧版的Cuda)

sudo /usr/local/cuda-9.0/bin/uninstall_cuda_9.0.pl

这样,/usr/local/cuda目录就清除了。但是 /usr/local/cuda-9.0目录下仍有cudnn文件,手动删除cuda-9.0文件夹:

sudo rm -rf /usr/local/cuda-9.0

 

四、安装CuDNN

CuDNN是Cuda的扩展库,专为深度学习打造。

安装CuDNN可以直接使用deb文件安装,也可以使用tgz压缩文件手动安装。

1、使用deb文件直接安装

依次安装runtime library, developer library和code samples。使用命令:

sudo dpkg -i libcudnn7_7.4.2.24-1+cuda9.0_amd64.deb
sudo dpkg -i libcudnn7-dev_7.4.2.24-1+cuda9.0_amd64.deb
sudo dpkg -i libcudnn7-doc_7.4.2.24-1+cuda9.0_amd64.deb

则cudnn默认被安装在如下路径:

/usr/include/x86_64-linux-gnu/cudnn_v7.h
/usr/lib/x86_64-linux-gnu/libcudnn_static_v7.a
/usr/lib/x86_64-linux-gnu/libcudnn.so
/usr/lib/x86_64-linux-gnu/libcudnn.so.7.4.2
/usr/lib/x86_64-linux-gnu/libcudnn_static.a
/usr/lib/x86_64-linux-gnu/libcudnn.so.7

随后进行测试,查看是否成功安装。具体步骤可参考 NVIDIA官方文档  。

PS:code samples是依赖于developer library;如果在未安装developer library的条件下运行安装code samples,会导致dependencies error,需要运行:

sudo apt-get install -f 

以卸载未成功安装的文件。

2、使用tgz压缩文件手动安装

CuDNN就是拷贝几个文件,换不同版本也只需要删除原来的文件后加入新版的文件。

解压:

$ tar -xzvf cudnn-8.0-linux-x64-v6.0.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*

生成软连接(如果没有这步可能找不到某些库,具体so.**数字根据自己下载的文件确定):

cd /usr/local/cuda-9.0/lib64/
sudo rm -rf libcudnn.so libcudnn.so.7   
sudo ln -sf libcudnn.so.7.4.2 libcudnn.so.7
sudo ln -sf libcudnn.so.7 libcudnn.so  

具体步骤可参考 NVIDIA官方文档  。


PS:cuDNN是CUDA扩展库,其的安装是插入式;因此,如果想要卸载CuDNN,也只需要删除这些文件:

$ sudo rm /usr/local/cuda/include/cudnn.h 
$ sudo rm -r /usr/local/cuda/lib64/libcudnn* 

 


查看CuDNN信息:

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

安装完成后测试是否能正常运行。官网下载code samples, 如果下载的tgz版本直接解压;如果下载的是deb版本,被安装在了/usr/src/cudnn_samples_v6下,放到有操作权限的路径下:

$cp -r /usr/src/cudnn_samples_v6/ $HOME
$ cd  $HOME/cudnn_samples_v6/mnistCUDNN

进行编译:

$make clean && make
$ ./mnistCUDNN

若出现 Test passed! 表示安装成功。


编译CuDNN的例子可能出现如下bug:

Testing single precision
CUDNN failure
Error: CUDNN_STATUS_INTERNAL_ERROR
mnistCUDNN.cpp:394
Aborting...

这是由于破坏的缓存导致CUBLAS不工作,解决方案:

sudo rm -rf .nv/ 

参考文件:https://devtalk.nvidia.com/default/topic/1025900/cudnn/cudnn-fails-with-cudnn_status_internal_error-on-mnist-sample-execution/


五、Opencv 3.4.6

Ubuntu16.04.06LTS系统内置了python2.7和python3.5,可以安装Opencv同时支持python2和python3。

1、先安装依赖项

如果在系统中共存python2和python3, 依赖项要同时安装python2和3的依赖项。其中,python2.7相关的库自动安装在/usr/local/lib/python2.7/disk-packages/文件夹下,python3.5相关的库自动安装在/usr/local/lib/python3.5/disk-packages/文件夹下。

  • 更新包:
sudo apt-get update
sudo apt-get upgrade  #apt下载的deb包安装在/var/cache/apt/archives
  • 安装环境库:
#Remove any previous installations of x264 if they were installed
sudo apt-get remove x264 libx264-dev
 
#Install dependencies 
sudo apt-get install build-essential checkinstall cmake pkg-config yasm  #Platform
sudo apt-get install git gfortran
sudo apt-get install libjpeg8-dev libjasper-dev libpng12-dev  #Media I/O
 
sudo apt-get install libtiff5-dev #Media I/O
  
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev # Video I/O
sudo apt-get install libxine2-dev libv4l-dev
sudo apt-get install libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev #GStreamer
sudo apt-get install qt5-default libgtk2.0-dev libtbb-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install libfaac-dev libmp3lame-dev libtheora-dev
sudo apt-get install libvorbis-dev libxvidcore-dev #libvorbis-dev: development files for Vorbis General Audio Compression Codec; libxvidcore-dev: open source MPEG-4 video codec
sudo apt-get install libopencore-amrnb-dev libopencore-amrwb-dev
sudo apt-get install x264 v4l-utils
 
# Optional dependencies
sudo apt-get install libprotobuf-dev protobuf-compiler
sudo apt-get install libgoogle-glog-dev libgflags-dev
sudo apt-get install libgphoto2-dev libeigen3-dev libhdf5-dev doxygen

安装Python库:

sudo apt-get install python-dev python-pip python3-dev python3-pip
sudo -H pip2 install -U pip numpy  # 安装或升级(如果已经安装了旧版本)pip和numpy
sudo -H pip3 install -U pip numpy # -U:update, 如果已经安装了旧版本,则升级到新版; sudo -H: set-home, 使用sudo命令默认把HOME environment variable设定在/root,不使用sudo则设定在/home/username下,-H则实现即使用sudo的权限,又将HOME environment variable设定在当前用户的/home/username路径下

#Optinal:
sudo pip install scipy matplotlib scikit-image scikit-learn ipython
sudo pip3 install scipy matplotlib scikit-image scikit-learn ipython 

PS (Optinal):

sudo apt-get install libtbb2 python-numpy python3-numpy libpython3.5-dev python3-setuptools

2、编译

mkdir build
cd build

cmake使用默认设置生成makefile

cmake ../   #使用默认设定

或者根据需要修改设置(推荐)

cmake -D CMAKE_BUILD_TYPE=RELEASE \ #自定义cmake的一些设置,语法: -D = 创建一个cmake缓存条目,可以在CMakeCache.txt文件中查看(When cmake is first run in an empty build  tree,  it  creates  a CMakeCache.txt  file and populates it with customizable settings for the project.  This option may be used to specify  a  setting that  takes  priority  over  the  project's  default value. )
      -D CMAKE_INSTALL_PREFIX=/usr/local \
      -D INSTALL_C_EXAMPLES=ON \
      -D INSTALL_PYTHON_EXAMPLES=ON \
      -D WITH_TBB=ON \
      -D WITH_V4L=ON \
      -D WITH_QT=ON \
      -D WITH_OPENGL=ON \
      -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
      -D BUILD_EXAMPLES=ON ..    

其他设置可以参考:http://pvilas.com/2017/09/Install-opencv-cuda-python3.html

make -j$(nproc)
sudo make install #完成将动态链接库和pkgconfig安装到/usr/local/lib; 头文件安装到/usr/local/include

 

3、Opencv的库安装在/usr/local/lib, 设置lib库路径:

以下几种方法都可以实现路径配置,任选其一即可。

方法一:

sudo sh -c 'echo "/usr/local/lib" >> /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig

方法一的等效版本:打开配置文件后手动添加:

sudo gedit /etc/ld.so.conf.d/opencv.conf  

在文件中添加:

/usr/local/lib 

使之立即生效:

sudo ldconfig  

方法二:配置环境变量

pkgconfig是用户向程序提供相应库的路径、版本号等信息的程序,其中的opencv.pc封装了库文件路径、头文件路径、版本号、Cflags等参数。(例如,可以通过pkg-config opencv --libspkg-config opencv --modversion 命令分别查看opencv安装的库或者版本号。)pkgconfig首先在 /usr/lib/pkconfig/路径下查找opencv.pc;若没有找到,再到PKG_CONFIG_PATH这个环境变量所指定的路径下搜索;若仍未找到,就报错。

这里手动把opencv.pc所在路径添加到环境变量PKG_CONFIG_PATH中,具体方法如下:

sudo gedit /etc/profile 

在最后一行添加:

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH  

保存并使环境变量立即生效:

source /etc/profile 

4、测试是否安装成功。

可在 OpenCV官方安装文档 中下载测试代码,测试C++和python是否成功安装。

使用cmake-gui进行配置,详细步骤可参见 oppo62258801的博客:Ubuntu16.04+Cuda8.0(gtx1060)+OpenCV2.4.13+anaconda2+caffe详细配置 。里面写了安装完后如何测试是否成功。

 

六、安装Pytorch-GPU

Pytorch安装简洁。

sudo apt update
sudo apt install python3-pip  # pip for python3
sudo apt install python2-pip  # pip for python2 

通过官网命令安装。

或者官网下载,如torch-0.2.0.post3-cp36-cp36m-manylinux1_x86_64.whl , 其中0.2.0表示PyTorch版本,cp36表示支持Python3.6,cuda80表示支持GPU版本。

Tricks:

  • 有时连网下载慢、多次中断,可以尝试手机开热点下载。
  • 如果仍无法直接下载,可以到torch下载网站 和torchvision下载网站 下载指定版本的wheel文件,然后使用如下命令安装。
sudo pip3 install torch-0.2.0.post3-cp36-cp36m-manylinux1_x86_64.whl 

步骤可参见 红色石头的专栏: Ubuntu16.04环境下PyTorch简易安装教程 。

最后通过验证是否已经正确安装,方法:

python
import torch
import torchvision
print(torch.cuda.is_available())

若显示true则表示安装成功。

Pytorch作为python的包被安装在/usr/local/lib/python3.5/dist-packages/torch/ 路径下。

如果需要版本降级或者安装指定版本,可以参见另一篇博文:https://blog.csdn.net/Cxiazaiyu/article/details/91129657  。

关于Pytorch的C++接口,即libtorch部署可以参见libtorch官方文档 。

七、安装Caffe-GPU

稍微有些复杂,单独写了一篇博客,请见链接https://blog.csdn.net/Cxiazaiyu/article/details/81366171


你可能感兴趣的:(深度学习)