Anaconda是专注于数据分析、能够对包和环境进行管理的Python发行版本,包含了conda、Python等多个科学包及其依赖项。
conda 是开源包(packages)和虚拟环境(environment)的管理系统:
1)包管理:可以使用 conda 来安装、更新 、卸载工具包。
2)虚拟环境管理:在conda中可以建立多个虚拟环境,用于隔离不同项目所需的不同版本的工具包。
演示版本为4.10.3,文件Anaconda3-2021.11-Windows-x86_64.exe
常规安装流程,注意Advanced Installation Options这一页,有两种方式,选其中一种即可:
1)如下图1所示,两个都勾选,安装完成后,将在环境变量PATH中看到如图2所示的新增项。这种安装方法有用户反应安装失败或测试失败,可以尝试使用第2中方法(本人测试没有任何问题)。
2) 只勾选第2个,安装完成后,手动在环境变量PATH中添加如图2所示的新增项。
测试:
演示版本为4.5.11,文件Anaconda3-5.3.0-Linux-x86_64.sh
# 执行安装程序,一直回车
bash Anaconda3-5.3.0-Linux-x86_64.sh
是否同意协议(默认no),输入yes
(可能不出现)是否添加环境变量,有2种解决方案写在后面。
是否安装VSCode,输入no
(可能不出现)是否添加环境变量,有2种解决方案:
1)出现:输入yes(若输入no则等同于不出现,转2)),输入source ~/.bashrc立即生效
2)不出现:
修改环境变量 vim ~/.bashrc
在最后加上一行并保存(要修改成自己的路径) export PATH=/home/lu/anaconda3/bin:$PATH
立即生效 source ~/.bashrc
测试:
PyCharm是一种Python(Integrated Development Environment,集成开发环境),带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、项目管理、代码跳转、智能提示、自动完成单元测试、版本控制。此外,该IDE提供了一些高级功能,以用于支持Django框架下的专业Web开发。
演示版本为专业版2021.3,文件pycharm-professional-2021.3.exe
常规安装,注意下面的Installation Options全选即可,安装完成需要重启系统。安装完成后将有下面两个新的环境变量被自动添加。
测试:
打开,新建一个项目,解释器选择anaconda环境下的python.exe
演示版本为专业版2022.1,文件linux-pycharm-professional-2022.1.tar.gz
测试:
打开,新建一个项目,解释器选择anaconda环境下的python.exe
CUDA 目前有两种不同的 API:Driver API 和 Runtime API,分别对应两个CUDA版本(最高支持的CUDA版本 和 正在使用的CUDA版本)。其中 Driver API及最高支持的API版本 在安装CUDA Driver时被确定,Runtime API和正在使用的CUDA版本 在安装cudatoolkit时被确定。通常将 Runtime API和正在使用的CUDA版本 称为CUDA例如CUDA 10.1,将 Driver API及最高支持的API版本 称为CUDA Driver,例如CUDA 11.6 Driver。
纯硬件,深度学习一般使用NVIDIA GPU,作者测试Windows GPU 为 NVIDIA GTX 1050Ti,Linux 为 NVIDIA RTX 3060。
用来驱动显卡的程序,即GPU硬件所对应的软件。
根据显卡型号在官方网站可以下载驱动:https://www.nvidia.cn/Download/index.aspx?lang=cn#
Windows安装完驱动后,在 英伟达控制面板 帮助 系统信息 显示中可以看到 驱动程序版本,在组件中可以看到CUDA Driver版本,它的意思是现在所安装的显卡驱动程序 支持安装 CUDA 11.6.110及之前的所有版本,并不是已经安装了CUDA 11.6.110。
linux安装完驱动后,输入命令nvidia-smi可以看到 驱动程序版本(510.73.08)&CUDA Driver版本(11.6),同样它的意思是现在所安装的显卡驱动程序 支持安装 CUDA 11.6及之前的所有版本,并不是已经安装了CUDA 11.6
CUDA(ComputeUnified Device Architecture),是显卡厂商NVIDIA推出的运算平台。
cudatoolkit是CUDA开发工具包,有以下2种,应注意区分:
1)NIVDIA官网的cudatoolkit,下载后本地安装,较大(完整版),包含CUDA相关的开发(Development)、运行(Runtime)、调试(Nsight Systems、Nsight Compute)组件。网址为 https://developer.nvidia.com/cuda-toolkit-archive。
2)anaconda中的cudatoolkit,通过conda安装,较小(精简版),只包含CUDA的运行组件(Runtime)。命令为conda install cudatoolkit=???(一个等号)。
方法一安装完成后使用nvcc -V命令可以看到正在使用的CUDA版本,方法二则没有。
NVIDIA cuDNN是用于深度神经网络的GPU加速库,分别对应上面的2种cudatoolkit的安装方式为:
1)NIVDIA官网的cudatoolkit安装完成后,在官网下载对应版本的cuDNN,解压到CUDA的安装目录(同名文件夹将合并)。下载网址为https://developer.nvidia.com/rdp/cudnn-download。
2)anaconda中的cudatoolkit安装完成后,通过conda安装。命令为conda install cudnn=???(一个等号)。
演示版本为CUDA10.1+cuDNN7.6.5,文件cuda_10.1.168_425.25_win10.exe和cudnn-10.1-windows10-x64-v7.6.5.32.zip
安装CUDA
# 添加系统变量
变量名
CUDA_PATH_V10_1
变量值
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1
变量名
CUDA_PATH
变量值
%CUDA_PATH_V10_1%
变量名
Path
变量值
%CUDA_PATH%\bin
%CUDA_PATH%\include
%CUDA_PATH%\lib
%CUDA_PATH%\libnvvp
# 实际起作用的是Path的新增值
# 若安装了第2个CUDA版本例如11.3,则可以只新增一个 名CUDA_PATH_V11_3,值为其安装路径
# Path不动,仅修改CUDA_PATH值 为CUDA_PATH_V10_1则使用10.1的CUDA,为CUDA_PATH_V11_3则使用11.3的版本,修改后可能需要重启环境/重启系统
# 原理参考:Windows和Linux的环境变量 https://blog.csdn.net/qq_42283621/article/details/126079764
安装cuDNN
将cudnn-10.1-windows10-x64-v7.6.5.32.zip压缩包解压,内容复制到CUDA安装路径的同名文件夹下即可。
测试
在命令行模式下输入nvcc -V
演示版本为CUDA10.1+cuDNN7.6.5,文件cuda_10.1.105_418.39_linux.run和cudnn-10.1-linux-x64-v7.6.5.32.tgz
安装CUDA
sh cuda_10.1.105_418.39_linux.run
取消Driver(指的是CUDA Driver,如果已经安装即nvidia-smi有内容,那么这里应该取消),然后Install。
# 添加用户变量
# vim ~/.bashrc
export CUDA_HOME=/usr/local/cuda-10.1
export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH
export PATH=$CUDA_HOME/bin:$PATH
# source ~/.bashrc
# 实际起作用的是LD_LIBRARY_PATH和PATH的新增值
# 若安装了第2个CUDA版本例如11.3,则将CUDA_HOME改为CUDA 11.3的安装目录,source ~/.bashrc即可切换成功,LD_LIBRARY_PATH和PATH不用改动
# 原理参考:Windows和Linux的环境变量 https://blog.csdn.net/qq_42283621/article/details/126079764
安装cuDNN
将cudnn-10.1-linux-x64-v7.6.5.32.tgz压缩包解压,内容复制到CUDA安装路径的同名文件夹下即可。
测试
在命令行模式下输入nvcc -V
可能出现的问题
1. Failed to verify gcc version. See log at /var/log/cuda-installer.log for details.
解决:apt install build-essential
# 一个等号
conda install cudatoolkit=???
conda install cudnn=???
版本对应要求:TensorFlow/PyTorch对应CUDA、CUDA对应cuDNN(TensorFlow/PyTorch与cuDNN无需直接对应,下载cuDNN时在网址https://developer.nvidia.com/rdp/cudnn-download很容易找到CUDA的对应版本)
CUDA | PyTorch(pytorch) | TensorFlow(tensorflow tensorflow-gpu) |
---|---|---|
10.0 | 1.2.0 1.1.0 1.0.0 | 2.0.0 |
10.1 | 1.7.0 1.6.0 1.5.0 1.4.0 | 2.1.0 2.2.0 2.3.0 |
10.2 | 1.11.0 1.10.0 1.9.0 1.8.0 1.7.0 1.6.0 1.5.0 | |
11.0 | 1.7.0 | 2.4.0 |
11.1 | 1.8.0 | |
11.2 | 2.5.0 2.6.0 2.7.0 2.8.0 2.9.0 | |
11.3 | 1.12.1 1.11.0 1.10.0 1.9.0 | |
11.6 | 1.12.1 |
Facebook推出的深度学习框架,新版本的Pytorch兼容老版本,学习简单使用方便,学术界广泛使用。
# 安装测试testpytorch.py
import torch
print(f'PyTorch版本为{torch.__version__}')
if torch.cuda.is_available():
print(f'CUDA可用,版本为{torch.version.cuda}')
if torch.backends.cudnn.is_available():
print(f'cuDNN可用,版本为{ torch.backends.cudnn.version()}')
else:
print('cuDNN不可用')
else:
print('CUDA不可用')
if torch.cuda.is_available():
a = torch.tensor(1, device='cuda')
b = torch.tensor(2, device='cuda')
print(a + b)
else:
a = torch.tensor(1)
b = torch.tensor(2)
print(a + b)
cpu版本直接无脑安装即可,无需GPU/CUDA Driver/CUDA/cuDNN
windows和linux相同
# 创建虚拟环境
> conda create -n torchcpu python=3.7
> conda activate torchcpu
# 安装(官方https://pytorch.org/get-started/locally/的安装命令)
> conda install pytorch==1.11.0 torchvision==0.12.0 torchaudio==0.11.0 cpuonly -c pytorch
# 运行测试程序
> python testpytorch.py
# PyTorch版本为1.11.0
# CUDA不可用
# tensor(3)
需要有GPU和GPU Driver,无需 本地安装CUDA和 本地安装cuDNN
windows和linux相同
pytorch自带cudnn,官方提供的安装命令中包含conda install … cudatoolkit=??? -c pytorch
某些版本(旧版本常见)对某些GPU不支持(例如pytorch1.7.0对于GTX 3060)。
# 创建虚拟环境
> conda create -n torchgpu python=3.7
> conda activate torchgpu
# 安装(官方https://pytorch.org/get-started/locally/的安装命令)
> conda install pytorch==1.11.0 torchvision==0.12.0 torchaudio==0.11.0 cudatoolkit=11.3 -c pytorch
# 运行测试程序
> python testpytorch.py
# PyTorch版本为1.11.0
# CUDA可用,版本为11.3
# cuDNN可用,版本为8200
# tensor(3, device='cuda:0')
Geogle推出的深度学习框架,新老版本互相不兼容,推出时间早性能好,工业界广泛使用。
由于2020年之后Python2.7停止维护,故无法在win上安装tensorflow 1,linux上正常安装即可
# linux python2 tf1使用该测试程序,其他使用下面的测试程序
# 推荐使用conda命令安装,将自动下载对应的cudatoolkit和cudnn,
# 例如conda install tensorflow-gpu==1.15.0
# 运行该程序后,使用nvidia-smi命令查看是否有显存占用,
# 如果显存未占用可能需要再同时安装本地版的CUDA(cuda10.0 cudnn7.6,原因不祥)
import tensorflow as tf
print(tf.test.is_gpu_available())
sess = tf.Session()
for i in range(10000):
a = tf.constant(1)
b = tf.constant(2)
print (sess.run(a + b))
# 安装测试testtensorflow.py
import tensorflow as tf
print(f'TensorFlow版本为{tf.__version__}')
if tf.test.is_gpu_available():
print('CUDA可用')
a = tf.constant(1).gpu()
b = tf.constant(2).gpu()
t = a + b
print(t, t.device)
else:
print('CUDA不可用')
a = tf.constant(1)
b = tf.constant(2)
t = a + b
print(t, t.device)
cpu版本直接无脑安装即可,无需GPU/CUDA Driver/CUDA/cuDNN
windows和linux相同
# 创建虚拟环境
> conda create -n tfcpu python=3.7
> conda activate tfcpu
# 安装
> conda install tensorflow==2.3.0
# 运行测试程序
> python testtensorflow.py
# TensorFlow版本为2.3.0
# CUDA不可用
# tf.Tensor(3, shape=(), dtype=int32) /job:localhost/replica:0/task:0/device:CPU:0
需要有GPU和GPU Driver,无需 本地安装CUDA和 本地安装cuDNN
conda中存储的window和linux不同,window版本包括2.0.0、2.1.0、2.3.0、2.5.0、2.6.0,linux版本包括2.0.0、2.1.0、2.2.0、2.4.1。
通过conda命令安装cudatoolkit和cudnn
此安装方式某些版本(旧版本常见)对某些GPU不支持,可使用“本地CUDA”方法重试。
# 创建虚拟环境
> conda create -n tfgpu python=3.7
> conda activate tfgpu
# 安装
# linux(linux使用conda安装,将自动安装对应版本的cudatoolkit和cudnn)
> conda install tensorflow-gpu==2.2.0
# windows(windows使用conda安装,需手动安装对应版本的cudatoolkit和cudnn)
> conda install cudatoolkit=10.1
> conda install cudnn=7.6.5
> conda install tensorflow-gpu==2.3.0
# 运行测试程序(linux)
> python testtensorflow.py
# TensorFlow版本为2.2.0
# CUDA可用
# tf.Tensor(3, shape=(), dtype=int32) /job:localhost/replica:0/task:0/device:GPU:0
# 运行测试程序(windows)
> python testtensorflow.py
# TensorFlow版本为2.3.0
# CUDA可用
# tf.Tensor(3, shape=(), dtype=int32) /job:localhost/replica:0/task:0/device:GPU:0
需要有GPU、GPU Driver、本地安装CUDA 和 本地安装cuDNN
pip中存储的window和linux相同,包含2.0.0、2.1.0、2.2.0、2.3.0、2.4.0、2.5.0、2.6.0、2.7.0、2.8.0、2.9.0。
# 按照上面“本地安装CUDA-Windows”的方法安装CUDA10.1+cuDNN7.6.5
# 创建虚拟环境
> conda create -n tfgpulocal python=3.7
> conda activate tfgpulocal
# 安装
> pip install tensorflow-gpu==2.3.0
# 运行测试程序
> python testtensorflow.py
# TensorFlow版本为2.3.0
# CUDA可用
# tf.Tensor(3, shape=(), dtype=int32) /job:localhost/replica:0/task:0/device:GPU:0
# 可能出现的问题
问题:TypeError: Descriptors cannot not be created directly.
If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0.
If you cannot immediately regenerate your protos, some other possible workarounds are:
1. Downgrade the protobuf package to 3.20.x or lower.
2. Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower).
解决:pip install protobuf==3.20.1