1.Anaconda下载安装
Anaconda是开源的Python发行版本,是一个包管理器和虚拟环境管理器。
进入官网下载相应版本,切换到下载文件所在目录执行以下命令。
sudo bash ***.sh(下载文件)
conda --verison检测是否安装成功。
若显示conda 命令未找到,则执行下面这条指令:
vim ~/.bashrc
在最后面添加 export PATH="/home/Jackson/anaconda3/bin:$PATH"
保存退出后执行 source ~/.bashrc
#若出现NotWritableError:The current user does not have write permissions to required path.(anaconda3文件夹带锁)
#执行:
sudo chown -R username anaconda3(username为用户名)
注意:~/目录下的隐藏文件也需要赋予权限给当前用户
常用指令
conda --version(查看conda版本)
conda create -n 虚拟环境名 python=3.6(创建虚拟环境)
conda activate 虚拟环境名(激活虚拟环境)
conda deactivate(退出当前环境)
conda env list(列出虚拟环境)
conda remove -n 虚拟环境名 --all(删除虚拟环境)
conda list(列出当前环境安装的包)
conda env export > environment.yaml(将虚拟环境导出为一个YAML配置文件)
conda env create -f environment.yaml
conda create -n 虚拟环境名 --clone clone的环境名
2.安装TensorFlow
2.1安装及测试
conda --version(查看conda版本)
python --version(查看python版本)
pip install tensorflow==1.13.1(CPU版本)
#查看版本信息
import tensorflow as tf
version = tf.__version__
print(version)
pip install tensorflow-gpu==1.13.1(GPU版本) 或
pip install tensorflow-gpu==1.13.1 -i https://pypi.tuna.tsinghua.edu.cn/simple/
常用国内镜像源:
http://mirrors.aliyun.com/pypi/simple/
https://pypi.mirrors.ustc.edu.cn/simple/
http://pypi.douban.com/simple/
GPU版本需要安装cudatoolkit与cudnn包
2.2 显卡、显卡驱动、CUDA和cuDNN
显卡: 深度学习需要大量计算,GPU支持并行计算,可提高计算效率
驱动: 没有显卡驱动,就无法识别GPU硬件,也就无法调用其计算资源
CUDA:cudatoolkit是NVIDIA推出的用于自身GPU的并行计算框架,只有安装这个框架以后才能进行复杂的并行计算
cuDNN: CUDA Deep Neural Network library,是NVIDIA打造的针对深度神经网络的GPU加速库。
2.3TensorFlow版本对应python、cuDNN、CUDA
tensorflow-2.4.0 3.6-3.8 8.0 11.0
tensorflow-2.3.0 3.5-3.8 7.6 10.1
tensorflow-2.2.0 3.5-3.8 7.6 10.1
tensorflow-2.1.0 2.7,3.5-3.7 7.6 10.1
tensorflow-2.0.0 2.7,3.3-3.7 7.4 10.0
tensorflow-gpu-1.15.0 2.7,3.3-3.7 7.4 10.0
tensorflow-gpu-1.14.0 2.7,3.3-3.7 7.4 10.0
tensorflow-gpu-1.13.1 2.7,3.3-3.7 7.4 10.0
tensorflow-gpu-1.12.0 2.7,3.3-3.6 7 9
3. CUDA下载安装
3.1查看当前CUDA版本
CUDA和cuDNN版本要匹配
法1.
nvcc -V
法2.
cd /usr/local/cuda(切换到此路径下)
ls(查看该路径下包含的文件)
cat version.txt(查看CUDA版本)
3.2安装环境检查
uname -a(显示电脑及操作系统信息)
cat /proc/version(显示运行的内核版本信息)
cat /etc/issue(显示发行版本信息)
lspci | grep -i nvidia(查看nvidia显卡信息)
gcc --version(查看gcc版本)
lsmod | grep nouveau(检查nouveau是否被禁用,无输出则被禁用,正确安装NVIDIA驱动无输出)
3.3NVIDIA驱动下载安装
去NVIDIA官网,下载所装显卡的驱动版本,驱动文件
为.run文件,然后使用如下命令安装:
#安装前禁用nouveau,这个是Ubuntu默认用的开源驱动
sudo vim /etc/modprobe.d/blacklist.conf
#在文末添加
blacklist nouveau
options nouveau modeset=0
#更新
sudo update-initramfs -u
reboot
#检查是否禁用成功
lsmod | grep nouveau #无输出表示禁用成功
#安装桌面管理环境
sudo apt-get install lightdm 或
sudo apt-get install gdm3(Ubuntu默认使用的是gdm3)
#如需卸载原有驱动在安装新驱动,可执行如下指令:
#关闭图形处理界面
sudo service gdm3 stop 或
sudo service lightdm stop #根据个人情况选择停止图像界面,以便进入命令行模式
#Ctrl + Alt + F1进入命令行模式,卸载原有驱动
sudo apt-get --purge remove nvidia* #--purge表示同时卸载安装包和配置文件
#卸载完成后执行:
reboot
#重启后默认进入图形界面,若没有进入,则执行下面语句
sudo service gdm3 start 或
sudo service lightdm start 重新进入图形界面
#检测电脑NVIDIA显卡型号和推荐的显卡驱动型号
ubuntu-drivers devices
sudo chmod a+x ***.run
#安装驱动之前先安装gcc、g++、make等依赖
sudo apt-get install gcc g++ make
#台式机建议不加-no-opengl-files这项参数
sudo ./***.run - no-x-check -no-nouveau-check -no-opengl-files
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.
则说明系统内核升级了,导致新版本内核和原来的显卡驱动不匹配,解决办法如下:
#查看驱动版本号,可以看到nvidia-460.84文件夹,460.84表示驱动版本号,这个不同设备版本号会不同
ll /usr/src
#然后执行以下两条指令
sudo apt-get install dkms
sudo dkms install -m nvidia -v 460.84
#最后检查问题是否解决,如果可以显示出信息,则问题已解决
nvidia-smi
3.4 CUDA和cudatoolkit
NIVDIA官方提供安装的cudatoolkit包含了进行CUDA相关程序开发的编译、调试等过程相关的所有组件。
但对于各类深度学习框架而言,如TensorFlow、Pytorch,在使用GPU时只需要动态链接库的支持即可。
例如利用Anaconda安装Pytorch时,会自动为用户安装cudatoolkit,其中包含程序调用GPU时所要依赖的库。只要系统上存在兼容的NVIDIA driver,程序就可以直接运行,不需要NVIDIA官方提供的CUDA Toolkit。
3.5CUDA下载
对于1.13.1-2.0.0版本的TensorFlow,进入官网下载CUDA10.0。
#建议采用run文件方式进行安装,deb文件的话默认会再次安装显卡驱动,若电脑之前已经安装驱动,则会出现问题。
#可以由图形界面进入命令行模式后,删除驱动及相关配置文件
#先赋予run文件可执行权限
sudo chmod +x cuda_10.0.130_410.48_linux.run
sudo bash cuda_10.0.130_410.48_linux.run
遇到下面这条指令时,表示是否要安装驱动,此时要选择n,即不再重复安装显卡驱动
Install NVIDIA Accelerated Graphics Driver for Linux-x86*****
其他的选择y及默认路径即可
# 卸载cuda
#由图形界面模式进入命令行模式后执行
sudo apt-get --purge remove cuda*
安装结束后,执行以下指令配置变量:
可能会遇到下述问题:
The command could not be located because'/usr/bin' is not included in the PATH environment variable
因为当前/usr/bin的路径不在系统环境中,因此/usr/bin下的命令也无法使用,比如vi、sudo.
解决办法:
su
vim ~/.bashrc
export PATH=/usr/bin:$PATH(将/usr/bin写入环境变量)
没有上述问题则执行以下指令:
sudo gedit ~/.bashrc
#此处写的时cuda(软连接),而不是具体的cuda版本,是因为若要安装多个版本的cuda时,不需要在修改环境变量
export PATH="/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
export CUDA_HOME=/usr/local/cuda:$CUDA_HOME
命令行执行:
source ~/.bashrc(使环境变量生效)
注:修改/etc/profile里的内容,相当于系统环境变量,只需更改自己用户的环境变量配置文件(~/.bashrc)即可,多个用户之间可以保持独立性。
3.6多版本cuda安装并建立软连接(系统之前已安装好cuda-10.2, 现在再安装cuda-10.0)
注意,安装其他cuda版本是,遇到是否建立软连接选项时,选择n,否则会系统会自动指向最新安装的版本。
软链接(soft link)也成为符号链接(symbol link),类似于Windows系统中的快捷方式,通过访问这个软连接,可以准确定位到对应的实体文件。
#ln命令,该指令的作用是为一个文件在不同的位置建立一个同步的链接
#ln -s 源文件 目标文件,建立软连接并不会消耗磁盘空间,而硬链接是会占用磁盘空间的
cd /usr/local
ls
#可以看到安装好的cuda各个版本(cuda-10.0和cuda-10.2)以及建立好的软连接cuda:
cuda cuda-10.0 cuda-10.2
#其中cuda是建立的软连接,指向当前正在使用的cuda版本
#查看当前指向的cuda版本,此时指向的是第一次安装好的cuda版本,即cuda-10.2
stat cuda
#删除之前的软连接
cd /usr/local
sudo rm -rf cuda
#重新建立软连接
sudo ln -s /usr/local/cuda-10.0 /usr/local/cuda
#再次查看当前指向的cuda版本,此时指向的是第二次安装好的cuda版本,即cuda-10.0
stat cuda
4.cuDNN下载安装
对于1.13.1-2.0.0版本的TensorFlow,进入官网下载cuDNN7。
打开终端输入解压指令
sudo tar -zxvf cudnn-10.0-linux-x64-v7.6.5.32.tgz -C /usr/local/cuda/include
如果文件上锁,则切换到文件所在目录执行指令:
chmod 777 cudnn.h
将库(.lib)和头文件(.h)copy到之前的cuda目录:
sudo cp /usr/local/cuda/include/cuda/include/cudnn.h /usr/local/cuda-10.0/include
sudo cp /usr/local/cuda/include/cuda/lib64/libcudnn* /usr/local/cuda-10.0/lib64
修改访问权限
sudo chmod a+r /usr/local/cuda-10.0/include/cudnn.h
sudo chmod a+r /usr/local/cuda-10.0/lib64/libcudnn*
检查是否安装成功
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
出现如下信息表示安装成功:
#define CUDNN_MAJOR 7
#define CUDNN_PATCHLEVEL 5
--
#define CUDNN_VERSION(CUDNN_MAJOR * 1000 + CUDNN_MAJOR * 100 +CUDNN_PATCHLEVEL)
#include "driver_types.h"
5.测试TensorFlow
import tensordlow as tf
#验证CUDA是否可用
tf.test.is_built_with_cuda() #返回值为True表示可用
#验证GPU是否可用
tf.test.is_gpu_available() #返回值为True表示可用