该文档主要是针对ubuntu16版本的深度学习环境安装配置,深度学习领域进步太快,有些安装配置用不上了。
链接
1)下载并安装ultraIso
ultraIso是一款光盘映像文件制作/编辑/转换工具,它可以直接编辑ISO文件和从ISO中提取文件和目录,也可以从CD-ROM制作光盘映像或者将硬盘上的文件制作成ISO文件。同时,也可以处理ISO文件的启动信息,从而制作可引导光盘。
ultraIso
上面链接是正版的,文章开头的百度网盘链接提供了破解版,安装之后运行注册机生成注册码,重新启动程序。
2)下载ubuntu iso文件
ubuntu16镜像文件
2)写入iso文件到U盘
打开ultralso文件,将ubuntu的iso文件加载进去,然后写入U盘,具体步骤参见该链接。
1)U盘插入电脑USB口,重启,工具开机提示,如按F11,进入boot
不同笔记本可能进去BOOT的快捷键不一样,这个需要查询电脑的主板和快捷键,开机界面有时候会提示按键选择,我的台式机提示是del键进入boot设置,进去之后将U盘设置为第一启动项。
2)安装过程最重要的就是分区了
当然貌似只有选择something else 这个选项才可以进入分区选择,不然其他选项貌似不能自定义分区。
挂载点 | 大小 | 分区 | 格式 |
---|---|---|---|
/ | 110GB | 主分区 | ext4 |
/boot | 2GB | 逻辑分区 | ext4 |
/home | 110GB | 逻辑分区 | ext4 |
swap | 10GB | 逻辑分区 | 不用管 |
/var | 10GB | 逻辑分区 | ext4 |
/usr | 100GB | 逻辑分区 | ext4 |
关于分区,要点就是/,swap一定要有,其他的目录挂不挂出来随意,然后/,/home,/usr都尽量大,/usr/local是软件默认安装路径,所以要装大型的软件,这个小了会导致以后下载不下来东西或者装不上。
一般分这四个区就可以了:
1、/swap 逻辑分区 swap分区 大小为内存为8G(挂载点:交换空间,相当于windows中的内存条)
2、/ 主分区 ext4格式 大小为120~150G(挂载点:EXT4日志文件系统,根目录,相当于windows中的c盘)
3、/boot 逻辑分区 大小为500M~1G(挂载点:EXT4日志文件系统,启动引导项,存放系统启动时所需的文件)
4、/home 逻辑分区 相当于我的文档 大小为剩余大小(挂载点:EXT4日志文件系统,用户工作目录,相当于windows下除c盘的其它盘)
5、配置ubuntu基本环境
sudo apt-get update
sudo apt-get install vim openssh-server git cmake cmake-qt-gui
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
有遇到安装之后没有中文输入法的情况:
3)中文输入法安装:
(1)打开搜狗拼音官网:
https://pinyin.sogou.com/linux/
(2)打开系统设置里的language设置,主要是选择Keyboard input method system:为fcitx
设置完毕后重启即可
(3)执行:
fcitx-configtool
如果没有找到刚才安装的sogou输入法,建议更新一下源:
sudo apt-get update
4)**(个性化)**ubuntu16.04的启动栏(Unity)方向更改
sudo apt install dconf-editor
dconf-editor
依次展开:com --> canonical --> unity --> launcher – > laucher-position – > Bottom
1)查询显卡型号
安装驱动得弄清楚显卡型号,在ubuntu命令窗口键入:
$ lspci | grep -i nvidia # 查询显卡型号
上面指令执行之后,前边的序号 "01:00.0"是显卡的代号,另外还返回了一个十六进制代码(有的直接就返回型号),将其输入到下面的网站中就可以查看具体的显卡型号了:
http://pci-ids.ucw.cz/mods/PC/10de?action=help?help=pci
查看指定显卡的详细信息用以下指令:
lspci -v -s 01:00.0
查看电脑现在安装的驱动版本
sudo dpkg --list | grep nvidia-*
2)查看自己的Linux版本
目的:因为不同的cuda版本要求的ubuntu系统型号不一样,例如最新的ubuntu20只能安装cuda11了。
cat /etc/*release
3)查看是否安装了gcc
gcc --version
若未安装使用下面命令安装
sudo apt-get install build-essential
4)查看系统是否安装了kernel header和package development
目的:cuda有规定了系统内核的最低版本
在下载cuda文件的那个页面有个安装指导文档,里面有详细的介绍。
a.查看正在运行的系统内核版本:
$ uname -r
b.安装对应kernel版本的kernel header 和 package development
sudo apt-get install linux-headers-$(uname -r)
5)下载显卡驱动
为什么需要安装显卡驱动?
显卡是硬件层面的,软件需要通过一定的通信规则才能去控制硬件,因此就需要下载对应版本的驱动。
哪里查找相应显卡驱动?
https://www.nvidia.cn/Download/index.aspx?lang=cn
为了方便,百度网盘上有版本(455.23)的显卡驱动文件。
通过上面链接就可以查看和下载对应的驱动,这里显卡驱动可以任意版本的,但是要跟cuda版本对应,下表就是显卡驱动版本和cuda版本的对应表。
CUDA Toolkit | Linux x86_64 Driver Version | Windows x86_64 Driver Version |
---|---|---|
CUDA 11.1 | >=455.23 | >=456.38 |
CUDA 11.0.3 Update 1 | >= 450.51.06 | >= 451.82 |
CUDA 11.0.2 GA | >= 450.51.05 | >= 451.48 |
CUDA 11.0.1 RC | >= 450.36.06 | >= 451.22 |
CUDA 10.2.89 | >= 440.33 | >= 441.22 |
CUDA 10.1 (10.1.105 general release, and updates) | >= 418.39 | >= 418.96 |
CUDA 10.0.130 | >= 410.48 | >= 411.31 |
CUDA 9.2 (9.2.148 Update 1) | >= 396.37 | >= 398.26 |
CUDA 9.2 (9.2.88) | >= 396.26 | >= 397.44 |
CUDA 9.1 (9.1.85) | >= 390.46 | >= 391.29 |
CUDA 9.0 (9.0.76) | >= 384.81 | >= 385.54 |
CUDA 8.0 (8.0.61 GA2) | >= 375.26 | >= 376.51 |
CUDA 8.0 (8.0.44) | >= 367.48 | >= 369.30 |
CUDA 7.5 (7.5.16) | >= 352.31 | >= 353.66 |
CUDA 7.0 (7.0.28) | >= 346.46 | >= 347.62 |
上面表格哪里来?
https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html#abstract
6)下载cuda
哪里下载?
https://developer.nvidia.com/cuda-toolkit-archive
下载哪个版本?
上面说了,如果已经安装了某个版本的NVIDIA驱动,那么就按照表格下载对应的cuda版本,上面下载的显卡驱动版本是455.23,那么安装的驱动应该是CUDA11.1,显卡驱动版本高些,CUDA可以先下兼容。
为了以后方便,百度网盘链接提供了一个cuda11.1版本的。
7)下载cudnn
哪里下载?
https://developer.nvidia.com/rdp/cudnn-archive#a-collapse742-10
下载哪个版本?
选择对应版本的 cuDNN Library for Linux,下载之后名字的后缀可能不是.tgz的,直接改成.tgz就可以。
如果之前安装过nvidia驱动导致无限循环登录,那么请先卸载驱动,此时由于登录不进图像界面,可以在登录界面状态下,按Ctrl + Alt + F1,进入命令行模式,执行:
sudo /usr/bin/nvidia-uninstall
如果没有找到nvidia-uninstall文件,那么可以执行以下指令:
#sudo apt-get remove nvidia-*
sh ./nvidia.run --uninstall #其中nvidia.run代表是安装驱动时的.run文件,然后根据提示进行操作就行。我的.run文件是NVIDIA-Linux-x86_64-455.23.run
sudo /usr/local/cuda-9.0/bin/uninstall_cuda_8.0.pl #cuda-9.0代表自己之前装的cuda版本
sudo reboot
1)禁用 nouveau驱动(必要操作)
$ lsmod | grep nouveau
如果有输出则代表nouveau正在加载,需要我们手动禁掉nouveau.
手动禁掉nouveau方法:
a.在/etc/modprobe.d中编辑blacklist.conf
输入命令:
sudo vim /etc/modprobe.d/blacklist.conf
在文件中输入以下内容:
blacklist nouveau
options nouveau modeset=0
b.执行:
sudo update-initramfs -u
目的:由于nouveau是构建在内核中的,因此需要执行以下指令;
c.再执行:
lsmod | grep nouveau
可能会出现还是有输出,重启电脑即可。
nouveau,是一个自由及开放源代码显卡驱动程序,是为Nvidia的显示卡所编写,也可用于属于系统芯片的NVIDIA Tegra系列,此驱动程序是由一群独立的软件工程师所编写,Nvidia的员工也提供了少许帮助。所以nouveau开源驱动基本上是不能正常使用的,性能极低。如果安装NVIDIA没有关闭nouveau会遇到冲突的问题。
2)进入到显卡驱动安装文件的路径,执行:
sudo chmod 777 NVIDIA-Linux-x86_64-455.23.run #给该run文件赋予读写改权限
sudo sh NVIDIA-Linux-x86_64-455.23.run -no-x-check -no-nouveau-check -no-opengl-files
注: 遇到提示是否安装openGL ,选择no(如果你的电脑是双显,且主显是非NVIDIA的GPU在工作需要选择no,否则可以yes),其他都选择yes或者默认即可。(如果电脑是双显卡且在这一步选择了yes,那么你极有可能安装完CUDA之后,重启图形化界面后遇到登录界面循环问题:输入密码后又跳回密码输入界面。 这是因为你的电脑是双显,而且用来显示的那块GPU不是NVIDIA,则OpenGL Libraries就不应该安装,否则你正在使用的那块GPU(非NVIDIA的GPU)的OpenGL Libraries会被覆盖,然后GUI就无法工作了。)
安装成功后,会显示installed,否则会显示failed。
3)输入命令检查是否安装正确
nvidia-smi
如果你遇到了重复登陆情况,不用急着重装系统,官方教程上有提及,原因上一步的注中有提及,在安装openGL时你可能不注意选择了yes,请卸载驱动,然后重装。
卸载:由于登陆进入不到图形用户界面(GUI),但我们可以进入到文本用户界面(TUI)
在登陆界面状态下,按Ctrl + Alt + f1,进入TUI,执行:
sh ./nvidia.run --uninstall #其中nvidia.run代表是安装驱动时的.run文件,然后根据提示进行操作就行。我的.run文件是NVIDIA-Linux-x86_64-455.23.run
如果找不到之前安装的显卡驱动文件,可以用下面的命令
sudo apt-get install autoremove --purge nvidia*
然后重启
重新安装.run 再次安装时请一定留意,在提示是否安装OpenGL时,你的是双显卡应该选则n。
$ sudo reboot
重新安装.run 再次安装时请一定留意,在提示是否安装OpenGL时,你的是双显卡应该选则n。
**问题一:**本来已经装好显卡驱动了,然后在某次重启后:屏幕分辨率变低了;终端输入nvidia-smi,报错
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver.Make sure that the latest NVIDIA driver is installed and running
安装显卡驱动时,提示kernal module有错(一般Error中只要涉及到kernal的,都是这个问题)也就是内核有问题。
就是内核进错了(查看内核的方法:终端输入uname -r),这里提供两种解决方法。
方法一(暂时解决问题,永久解决请移步方法二):
方法二(永久解决问题)
step1:sudo apt-get install dkms
step2: sudo dkms install -m nvidia -v 455.32
再次输入nvidia-smi
时,熟悉的界面就会回来啦。
其中step2 中的455.32是NVIDIA的版本号,当你不知道的时候,进入/usr/src目录中,可以看到里面有nvidia文件夹,后缀就是其版本号
然后重启sudo reboot
参考博客
前言:cuda安装不上的根本原因都是没有仔细看官网的安装指导,在下载cuda安装文件的时候,在那个界面的最下方有一个安装指导书( Installation Guide for Linux),按照官网的指导应该是可以正确安装的。
1)路径切换到cuda安装文件下
2)赋予该文件权限
sudo chmod 777 ./cuda_11.1.1_455.32.00_linux.run
3)直接安装可能会出现缺少依赖库,需要安装以下依赖库:
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
4)安装
sudo ./cuda_11.1.1_455.32.00_linux.run
执行之后,取消勾选安装显卡驱动的选项即可。
在安装CUDA时可能有下面的信息:
Installing the CUDA Toolkit in /usr/local/cuda-11.1 …
Missing recommended library: libGLU.so
Missing recommended library: libX11.so
Missing recommended library: libXi.so
Missing recommended library: libXmu.so
则需要再次安装依赖库
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
5)配置环境变量
echo 'export PATH=/usr/local/cuda-11.1/bin/:$PATH'>>~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-11.1/lib64:$LD_LIBRARY_PATH'>>~/.bashrc
echo 'export CUDA_HOME=/usr/local/cuda-11.1'>>~/.bashrc # Pytorch 使用 CUDA_HOME 指定的路径作为运行时使用的 cuda 版本的目录,如果没有设置,默认是/usr/local/cuda
source ~/.bashrc #令环境生效
安装多个版本的CUDA
将~/.bashrc
下与cuda相关的路径都改为 /usr/local/cuda/
而不使用 /usr/local/cuda-8.0/
或/usr/local/cuda-9.0/
。
#在切换cuda版本时
rm -rf /usr/local/cuda#删除之前创建的软链接
sudo ln -s /usr/local/cuda-8.0/ /usr/local/cuda/
nvcc --version #查看当前 cuda 版本
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2016 NVIDIA Corporation
Built on Mon_Jan_23_12:24:11_CST_2017
Cuda compilation tools, release 8.0, V8.0.62
#cuda8.0 切换到 cuda9.0
rm -rf /usr/local/cuda
sudo ln -s /usr/local/cuda-9.0/ /usr/local/cuda/
nvcc --version
cuDNN的全称为NVIDIA CUDA® Deep Neural Network library,是NVIDIA专门针对深度神经网络(Deep Neural Networks)中的基础操作而设计基于GPU的加速库。cuDNN为深度神经网络中的标准流程提供了高度优化的实现方式,例如convolution、pooling、normalization以及activation layers的前向以及后向过程。cuDNN只是NVIDIA深度神经网络软件开发包中的其中一种加速库。想了解NVIDIA深度神经网络加速库中的其他包请戳链接https://developer.nvidia.com/deep-learning-software。如果没有编译cuDNN的话,执行一些基于Caffe这一深度学习框架的程序速度上要慢3-5倍.
https://developer.nvidia.com/rdp/cudnn-archive#a-collapse742-10
选择对应版本的 cuDNN Library for Linux,下载之后名字的后缀可能不是.tgz的,直接改成.tgz就可以,同样百度网盘提供了cudnn-9.0-linux-x64-v7.6.5.32.tgz的文件。
1)将上面下载好的安装包解压
sudo tar -zxvf cudnn-9.0-linux-x64-v7.6.5.32.tgz -C /usr/local/cudnn #根据下载的包更改名称
2)将解压后的文件中的lib64文件夹关联到环境变量中。这一步很重要
cd
sudo vim .bashrc
在末尾加入:
export LD_LIBRARY_PATH=/usr/local/cudnn/cuda/lib64:$LD_LIBRARY_PATH
保存退出之后,执行
source .bashrc
然后,在cudnn目录下依次执行:
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
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
3)测试
下载三个文件:
cuDNN Runtime Library for Ubuntu16.04 (Deb)
cuDNN Developer Library for Ubuntu16.04 (Deb)
cuDNN Code Samples and User Guide for Ubuntu16.04 (Deb)
https://developer.nvidia.com/rdp/cudnn-archive
百度网盘提供了三个文件的链接。
下载之后用ubuntu默认的安装工具安装,如果没有默认安装工具,那么就使用下面命令:
sudo dpkg -i libcudnn8_8.0.4.30-1+cuda11.1_amd64.deb
sudo dpkg -i libcudnn8-dev_8.0.4.30-1+cuda11.1_amd64.deb
sudo dpkg -i libcudnn7-sam__x.x.x.64-1+cuda9.0_amd64.deb
安装之后,依次执行以下指令:
sudo cp -r /usr/src/cudnn_samples_v8/ /家目录/cudnntest
cd /家目录/cudnntest/mnistCUDNN
sudo make
sudo ./mnistCUDNN
如果cuDNN之前安装成功的话应该显示 Test passed !
有时需要在其他电脑上远程控制,使用vnc是个不错的选择。
1)安装ssh
sudo apt-get install openssh-server
2)安装VNC
sudo apt-get install xrdp vnc4server xbase-clients
3)安装dconf-editor
sudo apt-get install dconf-editor
安装完毕之后,执行sudo dconf-editor,打开之后,依次展开org->gnome->desktop->remote-access,然后取消 “requlre-encryption”和"prompt-enabled"的勾选即可。
4)设置Ubuntu的远程控制,将其设置为允许被远程连接。
进入系统-》首选项-》(输入zhuo或者desk)桌面共享。将【允许其他人查看您的桌面】这一项勾上,然后在安全那项,勾选【要求远程用户输入此密码】,并设置远程密码。并且我们取消勾选【必须为对本机器的每次访问进行确定】(这样做,是为了被远程的时候不需要再确认,否则每次远程都要人为确认才能被远程,会很繁琐)
该链接列举了VNC链接中的一些问题,可能有所帮助。
5)在另外一台电脑使用VNC Viewer进行链接。
1)下载Anaconda安装包
https://www.anaconda.com/products/individual#linux
2)安装Anaconda
sudo sh ~/Downloads/Anaconda3-2020.07-Linux-x86_64.sh
anaconda会自动将环境变量添加到PATH里面,如果后面你发现输出conda提示没有该命令,那么你需要source ~/.bashrc
这样就是更新环境变量,就可以正常使用了。如果发现这样还是没用,那么需要手动添加环境变量,编辑~/.basrc 文件,在最后面加上
export PATH=/anaconda3目录/bin:$PATH
3)测试
在终端输入python.这条命令会启动Python交互界面,如果Anaconda安装成功并可以运行,则将会显示相应的版本号。退出交互界面输入exit()或quit()。
conda --version
conda update conda
4)创建虚拟环境
conda create --name
例:
conda create -n deep-learning python=3.6 numpy pandas
即创建一个名为“deep-learning ”的环境,环境中安装版本为3.6的python,同时也安装了numpy和pandas。
5)删除虚拟环境
conda remove -n python36 --all
5)显示安装过的虚拟环境
conda info -e
或者
conda env list
6)切换环境
终端切换环境:
source activate
pycharm切换环境:
打开PyCharm,点击左上角 **File -> Settings -> Project Interpreter -> ⚙ -> Add…**点左边的 Conda Environment,我们已经建好了环境所以选择 Existing environment,找到新建环境的路径(在 Anaconda 安装路径下的 envs 文件夹中),点进去选择 python.exe 文件。
7)退出环境
conda deactivate
8)删除环境
conda remove --name env-name --all
9)安装包
可能会遇到下载慢的问题,可以把源切换到国内源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
另外为了保险起见,建议同时添加第三方conda源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
鉴于国内访问anaconda官方源网速较慢,配置国内源加速下载,目前国内部分源被anaconda官方终止合作,所以本次同时添加官方和国内源:
显示已有源:
conda config --show
添加源:
conda config --add channels https://repo.anaconda.com/pkgs/main
conda config --add channels https://conda.anaconda.org/anaconda
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
conda config --add channels conda-forge
conda config --add channels r
conda config --add channels bioconda
也可以使用pip安装,可能会遇到下载慢的问题,更改pip源至国内镜像
临时使用:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple gevent
永久修改:
linux下,修改 ~/.pip/pip.conf(没有.pip和pip.conf就创建一个),内容如下:
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=mirrors.aliyun.com
10)获取当前环境已安装的包
conda list
11)查找包
conda search package_name
12)删除包
conda remove package_name
后话)共享虚拟环境
什么是共享虚拟环境?
当我们在本机上开发了一套代码,然后将代码上传到github或者发给项目组其他人,这是别人可不知道我们开发的代码上面用到了哪些依赖,conda提供了方便得功能将虚拟环境中所有依赖包统一导出一个配置文件中,在别的机器上使用这套代码时,根据conda导出的配置文件重建虚拟环境即可,这就是共享虚拟环境功能。在多人协作开发及开源的情况下,共享虚拟环境无疑是一个非常实用的功能。
先来导出依赖到配置文件:
conda env export --file python36_env.yml
environment.yaml是导出依赖的目标文件,运行命令后,当前目录下就回生成一个environment.yaml文件,包含了所有依赖信息。
根据配置文件创建虚拟环境:
conda env create -f /home/chb/code/python36_env.yml
运行上述命令后,在新机器上也会创建一个一模一样的虚拟环境。
###################################################################
上面指令很多!还好anaconda提供了图形化界面
在annaconda家目录/bin/,该目录下有一个annaconda_navigator可执行文件,执行;
./annaconda_navigator
pytorch是根据不同的cuda版本安装的
https://pytorch.org/get-started/previous-versions/
执行:
conda install pytorch==1.0.1 torchvision==0.2.2 cudatoolkit=9.0 #这里我去掉了-c pytorch这个参数
如果遇到下载速度慢的问题,应该执行第三节(安装Anaconda)的第(9)小步。
后面发现可以使用anaconda的navigator进行安装,连带cuda,cudnn也一起安装,不过版本可能没有那么多可以选。进入anaconda安装目录下的bin文件夹,执行’./anaconda_navigator’指令,即可打开UI界面进行配置。
测试:
如果使用pytorch,上面步骤全部完成,在终端输入python,然后依次执行以下指令
import torch
print(torch.__version__) #查看torch当前版本号
print(torch.version.cuda)#当前torch使用的cuda版本号
print(torch.cuda.is_available())#查看当前cuda是否可用于当前版本的Torch