目录
一、安装双系统
二、安装显卡驱动
三、安装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安装界面:
- 安装Ubuntu系统时断网,防止在选地图处安装程序卡死;不勾选安装时更新,不勾选安装第三方软件;
- Ubuntu系统的界面语言选择英文,后面安装中文输入法就好。
- 安装类型:选择“其他选项”,自己创建调整分区。注意不要选“这台计算机已经安装了win10, 与win10共存”,否则Ubuntu引导会破坏win10引导,导致之后需要卸载Ubuntu删除引导时原来系统无法恢复。
- 添加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选择启动系统。
后续工作:
sudo apt-get update //查看可安装的软件列表
sudo apt-get upgrade //进行安装包的更新
对于新上市的电脑,可能用的无线网卡还没有出linux系统的驱动,可以自己买一个外置的无线网卡,插在USB口使用。
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系统黑屏。
概述:深度学习需要大量的算力,模型的训练和推理在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是Cuda的扩展库,专为深度学习打造。
安装CuDNN可以直接使用deb文件安装,也可以使用tgz压缩文件手动安装。
依次安装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
以卸载未成功安装的文件。
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/
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 --libs 或pkg-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安装简洁。
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官方文档 。
稍微有些复杂,单独写了一篇博客,请见链接https://blog.csdn.net/Cxiazaiyu/article/details/81366171