赞
踩
目录
深度学习环境的搭建比较复杂,重要的是掌握整体的安装思路,这样才能游刃有余地应对由于软件硬件环境不同所带来的各种问题!
建议双系统,不要用虚拟机,因为虚拟机无法访问显卡,无法安装显卡驱。
电脑硬件: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选择启动系统。
系统安装完成后可查看系统信息:
lsb_release -a
例如,返回:
Distributor ID: Ubuntu
Description: Ubuntu 16.04.6 LTS//16年6月4月发布的稳定版本,LTS是Long Term Support:长时间支持版本
Release: 16.04//发行日期或者是发行版本号
Codename: xenial//ubuntu的代号名称
安装好系统后的一些快速配置工作:
- 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输入法,置顶。
查看显卡类型:
lspci | grep -i nvidia
结果显示:01:00.0 VGA compatible controller: NVIDIA Corporation GP106M [GeForce GTX 1060 Mobile 6GB] (rev a1))
准备工作:到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
备注1:其中添加链接库路径的命令export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}也可通过如下方式替代:
sudo gedit /etc/ld.so.conf.d/cuda.conf
写入
/usr/local/cuda-9.0/lib64
更新
sudo ldconfig
参考:Ryan的博客: 环境配置3-Ubuntu下安装CUDA8.0和cuDNN
备注2:我们看网上其他教程会发现有的教程是往其他文件中写入环境变量的,这里简要说明下不同文件写入环境变量的区别:
环境变量设置文件 | 应用的用户范围 | 适用的shell |
~/.bashrc | 当前用户 即将环境变量应用于该系统的当前用户(每个用户(登录名)有自己的.bashrc文件) | bash shell |
~/.profile | 当前用户 | 所有shell (包括sh\bash\ksh\rsh\csh等) |
/etc/bashrc | 全部用户 | bash shell |
/etc/profile | 全部用户 | 所有shell |
安装完后,检查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
备注:升级Cuda教程可参见:https://blog.csdn.net/Cxiazaiyu/article/details/115608705
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
备注:编译CuDNN的例子可能出现如下bug:
- Testing single precision
- CUDNN failure
- Error: CUDNN_STATUS_INTERNAL_ERROR
- mnistCUDNN.cpp:394
- Aborting...
这是由于破坏的缓存导致CUBLAS不工作,解决方案:
sudo rm -rf .nv/
PS:code samples是依赖于developer library;如果在未安装developer library的条件下运行安装code samples,会导致dependencies error,需要运行:
sudo apt-get install -f
以卸载未成功安装的文件。
测试是否能正常运行:官网下载code samples, 如果下载的tgz版本直接解压;如果下载的是deb版本,被安装在了/usr/src/cudnn_samples_v7下,放到有操作权限的路径下:
- $cp -r /usr/src/cudnn_samples_v7/ $HOME
- $ cd $HOME/cudnn_samples_v7/mnistCUDNN
进行编译:
- $make clean && make
- $ ./mnistCUDNN
若出现 Test passed! 表示安装成功。(具体步骤可参考 NVIDIA官方文档 。)
卸载cudnn:
sudo dpkg -l grep cudnn| #查看dpkg安装的软件
显示:
||/ Name Version Architecture Description
+++-==============-============-============-=================================
ii libcudnn7 7.4.2.24-1+cuda9.0 amd64 cuDNN runtime libraries
ii libcudnn7-dev 7.4.2.24-1+cuda9.0 amd64 cuDNN development libraries and headers
ii libcudnn7-doc 7.4.2.24-1+cuda9.0 amd64 cuDNN documents and samples
随后,依次卸载:
- sudo dpkg -r libcudnn7-doc
- sudo dpkg -r libcudnn7-dev
- sudo dpkg -r libcudnn7
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 //建立软连接libcudnn.so.7指向libcudnn.so.7.4.2
- 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
下面讲述opencv安装,支持C++和python。其中,Ubuntu16.04.06LTS系统内置了python2.7和python3.5,可以安装Opencv同时支持python2和python3。
1、先安装依赖项
如果在系统中共存python2和python3, 依赖项要同时安装python2和3的依赖项。其中,python2.7相关的库自动安装在/usr/local/lib/python2.7/dist-packages/文件夹下,python3.5相关的库自动安装在/usr/local/lib/python3.5/dist-packages/文件夹下。
- sudo apt-get update
- sudo apt-get upgrade #apt下载的deb包安装在/var/cache/apt/archives
- #Remove any previous installations of x264</h3> 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
- 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、编译
下载opencv安装包,并编译:
- mkdir build
- cd build
cmake使用默认设置生成makefile
cmake ../ #使用默认设定
或者根据需要修改设置(推荐)
- cmake -D CMAKE_BUILD_TYPE=RELEASE \
- -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 ..
-
- #自定义cmake的一些设置,语法: -D <var>=<value> 创建一个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. )
其他设置可以参考: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
- print(torch.cuda.is_available())
若显示true则表示安装成功。
查看pytorch及其匹配的cuda\cudnn\torchvision安装的版本:
- import torch
- print(torch.__version__)
- print(torch.version.cuda)
- print(torch.backends.cudnn.version())
-
- import torchvision
- print(torchvision.__version__)
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。