赞
踩
由于各种深度学习框架(TensorFlow、Pytorch等等)和 cuda 版本的更新较快,可能出现程序的编译和运行需要之前版本的 cuda 进行运行环境支持的情况。
为了满足应用程序和框架本身对不同版本的 cuda 的需求,这里即记录笔者了解到的 Windows 和Ubuntu 环境下 TensorFlow 所使用 cuda 版本以及TensorFlow使用不同版本的 cuda 进行运行的方法。
官网链接:
https://developer.nvidia.com/cuda-gpus
选则自己显卡类型对应的NVIDIA系列,可以得到显卡的计算能力(compute capability)
注意标注Notebook的为笔记本电脑
不知道自己显卡版本的可以通过“设备管理器”查看,或者使用第三方软件GPU-Z查看。请注意,AMD的显卡不可以使用英伟达开发的CUDA…
注意记下自己需要的tensorflow版本、CUDA版本、Cudnn版本、Python版本
以下是我windows系统的安装方案:
tf1.15.0+CUDA10.0.130+CuDNN7.4.2+Python3.7.11
tf2.5.0+CUDA11.2.0+CuDNN8.1.1+Python3.7.11
安装文件我都下载好啦~如果系统和方案和我一样的就可以直接下载用
链接:https://pan.baidu.com/s/1VGCSy7yAOhXwgHtPfmzRtw
提取码:sau0
https://www.tensorflow.org/install/source_windows
https://www.tensorflow.org/install/source#common_installation_problems
注意:
若要支持 Python 3.9,需要使用 TensorFlow 2.5 或更高版本。
若要支持 Python 3.8,需要使用 TensorFlow 2.2 或更高版本。
如果使用错误的Python版本,将无法安装TensorFlow!
https://www.nvidia.com/download/index.aspx?lang=en-us#
填入GPU的信息
得到下载链接
查看N卡状态
nvidia-smi
CUDA 是NVIDIA专门负责管理分配运算单元的框架
CUDA的本质是一个工具包(ToolKit)
CUDA是NVIDIA推出的用于自家GPU的并行计算框架,也就是说CUDA只能在NVIDIA的GPU上运行,而且只有当要解决的计算问题是可以大量并行计算的时候才能发挥CUDA的作用。
下载之前我们需要知道已经安装了什么版本的CUDA
至于怎样知道自己安装了多少个工具包,可以参考3.3的内容
下载链接:
https://developer.nvidia.com/cuda-toolkit-archive
我们可以选择两种安装方式
一种是离线安装即本地安装(推荐第一次安装CUDA的用户使用)
一种是在线安装(推荐已经安装多个CUDA版本的用户使用)
解释:NVIDIA显卡驱动和CUDA工具包本身是不具有捆绑关系的,也不是一一对应的关系,只不过是离线安装的CUDA工具包会默认安装与之匹配的最新的驱动程序,这不太好,我们直接安装一个最新版的显卡驱动,然后在线安装不同版本的CUDA即可。
这里我要安装到E盘,不是默认目录,所以选则自定义
(1)在windows平台下:
方法一(推荐):
直接进入CUDA的安装目录,默认是 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA
然后执行:type version.xxx
即可查看(有的是.txt文件,有的是.json文件)
方法二(不推荐):
通过命令查看:nvcc -V 或者是nvcc --version都可以,但前提是添加了环境变量
(2)在Linux平台下:
同windows类似,进入到安装目录,然后执行 cat version.txt 命令
cuDNN是一个SDK,是一个专门用于神经网络的加速包,注意,它跟我们的CUDA没有一一对应的关系,即每一个版本的CUDA可能有好几个版本的cuDNN与之对应,但一般有一个最新版本的cuDNN版本与CUDA对应更好。
cuDNN(CUDA Deep Neural Network library):是NVIDIA打造的针对深度神经网络的加速库,是一个用于深层神经网络的GPU加速库。如果你要用GPU训练模型,cuDNN不是必须的,但是一般会采用这个加速库。
需要注册和登陆NVIDIA 帐户并填写问卷才能下载
https://developer.nvidia.com/rdp/cudnn-archive
下载下来是个压缩包,解压后,里面有三个文件夹。
找到 CUDA 的安装路径,默认是 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1
复制 cuDNN bin 目录下的文件到 CUDA 的 bin 目录下(.dll)
复制 cuDNN include 目录下的文件到 CUDA 的 include 目录下(.h)
复制 cuDNN lib/x64 目录下的文件到 CUDA 的 lib/x64 目录下(.lib)
读不懂的看这个图
接下来设置环境变量:
计算机上点右键,打开属性->高级系统设置->环境变量,可以看到系统中多了CUDA_PATH和CUDA_PATH_V10_1两个环境变量,接下来,还要在系统中添加以下几个环境变量:
CUDA_SDK_PATH = C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.1
(这是默认安装位置的路径,经自定义路径后,我的路径为E:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.1)
CUDA_LIB_PATH = %CUDA_PATH%\lib\x64
CUDA_BIN_PATH = %CUDA_PATH%\bin
CUDA_SDK_BIN_PATH = %CUDA_SDK_PATH%\bin\win64
CUDA_SDK_LIB_PATH = %CUDA_SDK_PATH%\common\lib\x64
然后:
在系统变量 PATH 的末尾添加:
%CUDA_LIB_PATH%;%CUDA_BIN_PATH%;%CUDA_SDK_LIB_PATH%;%CUDA_SDK_BIN_PATH%;
'''
再添加如下4条(默认安装路径)
```python
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\lib\x64;
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin;
C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.1\common\lib\x64;
C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.1\bin\win64;
如果你选用了自定义路径,上述这些默认路径都应该相应替换为你的自定义路径,如下为我的环境变量和PATH的配置情况:
读不懂的看下面的图
cuDNN本质上就是一个C语言的H头文件
(1)在windows平台下:
直接进入安装目录:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\include
之下,然后找到cudnn_version.h 的头文件,直接点开查看,在最开始的部分会有如下定义:
#define CUDNN_MAJOR 8
#define CUDNN_MINOR 1
#define CUDNN_PATCHLEVEL 1
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)
即7500,也就是cudnn的版本为8.1.1版本;
(2)在Linux平台下:
通过命令进入到安装目录,执行如下命令:
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
即5005,即5.0.5版本的cudnn。
主要使用CUDA内置的deviceQuery.exe 和 bandwithTest.exe:
首先win+R启动cmd,cd到安装目录下的 …\extras\demo_suite,然后分别执行bandwidthTest.exe和deviceQuery.exe,应该得到下图:
CUPTI,即CUDA Profiling Tools Interface (CUPTI)。在CUDA分析工具接口(CUPTI)能够分析和跟踪靶向CUDA应用程序的工具的创建。CUPTI提供以下API:
Activity API,
Callback API,
事件API,
Metric API,和
Profiler API。
使用这些API,您可以开发分析工具,深入了解CUDA应用程序的CPU和GPU行为。CUPTI作为CUDA支持的所有平台上的动态库提供。请参阅CUPTI文档。
https://docs.nvidia.com/cupti/Cupti/index.html
(1)查看已有的python版本
方法一(推荐):
在命令窗口,输入
where python
它会显示python的对应路径,多个版本时候会显示多个路径
可以看到,有anaconda的版本,同时有programs的python3.8版本,但是我们需要python3.7版本
(2)python官网下载
https://www.python.org/downloads/
下完完成直接点击exe文件,安装过程注意勾选“添加到环境变量”
在anaconda prompt中新建环境,起的名字最好可以表现出tensorflow版本,如tf2,tensorflow1.7等,建立名为tensorflow2.5.0的环境,后面跟着的是对应python版本
conda create -n tf2 python=3.7
需要指定环境的路径,因此可以使用命令:
conda create -p /opt/environment/.conda/envs/env_name python=2.7
# To activate this environment, use
# 激活这个环境,使用如下命令:
# $ conda activate tf2
#
# To deactivate an active environment, use
# 关闭这个环境,使用如下命令:
# $ conda deactivate
到此环境创建完成,接下来就要在该环境中真正安装tensorflow了
激活虚拟环境:
activate
conda activate tf2
在不影响主机系统设置的情况下,在虚拟环境中安装软件包。首先升级 pip :
pip install --upgrade pip --user
然后pip安装tensoflow:(此处加入-i https://pypi.tuna.tsinghua.edu.cn/simple,表示使用清华镜像源安装,比较快)
pip install tensorflow_gpu==2.5.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
如果你下载的项目里有requiremwnts.txt文件指明要安装的库,那更好,先cd到这个txt文件所在的文件夹:
#我的项目放在D盘,而conda prompt中现在的路径在C盘((tensorflow1.7) C:\Users\xxx>)所以先进入D盘:
D:
#现在路径指示到D盘((tensorflow1.7) D:\>)然后cd到requiremwnts.txt所在的文件夹,如:
cd D:\PycharmProjects\facenet-master
然后按照requiremwnts.txt文件安装库
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
好了,在tensoflow2.5.0环境下,看看python在哪里
where python
可能会有多条路径,没关系,第一条就是当前环境的python:
(tf2) $ where python
E:\Users\THINKPAD\anaconda3\envs\tf2\python.exe
E:\Users\THINKPAD\anaconda3\python.exe
C:\Users\THINKPAD\AppData\Local\Programs\Python\Python38-32\python.exe
查看第一条:E:\Users\THINKPAD\anaconda3\envs\tf2\python.exe(每个人可能不一样)
它就是tensorflow2.5.0版本的python位置,记住你的位置,等会要用
现在打开Python
python
import tensorflow as tf
没有红色字报错,终于完成啦!
精致一点的话还可以输入exit,退出ipython环境
几个环境命令总结:
conda info --envs
#查询建立的所有环境
conda list
#查询安装的库,不同环境内的查询结果可能不同
conda activate (环境名)
#打开某环境,activate和环境名之间有一个空格
conda deactivate
#退出当前环境
conda remove -n (环境名)--all
#删除某环境,remove和环境名之间有一个空格,与--all之间也有空格
1.在新建工程的create页面点一下project interpreter的三角形,把该选项展开
2.选中靠下的选项:existing interpreter
3.点击路径框右边的三个点“…”,进入add python interpreter页
4.左边一列中选择conda environment
5.在interpreter栏中选择查看到的路径,如D:\anaconda\envs\tensorflow1.7\python.exe
6.为了以后方便使用,勾选make available to all projects
7.ok,检查一下interpreter是否在正确的环境,然后create创建工程即可
1.file–settings
2.在左边选项卡中选择project:工程名,再选择进入project interpreter页面
3.project interpreter路径框的下拉键,show all
4.点击右上方的“+”,进入add python interpreter页
5.左边一列中选择conda environment
6.在interpreter栏中选择查看到的路径,如D:\anaconda\envs\tensorflow1.7\python.exe
7.为了以后方便使用,勾选make available to all projects
8.OK
输入下列代码
import tensorflow as tf
tf.compat.v1.disable_eager_execution()
hello = tf.constant('hello,tensorf')
sess = tf.compat.v1.Session()
print(sess.run(hello))
运行结果:
'hello,world'
输出结果会有很多红色文字,这并不是报错
可以在前面加上这句话,就不会出现红色文字
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '1' # 不提示
根据源码查看os.environ["TF_CPP_MIN_LOG_LEVEL"]
的值的含义:
1、log信息共有四个等级,按重要性递增为:
INFO(通知)<WARNING(警告)<ERROR(错误)<FATAL(致命的);
2、值的含义:不同值设置的是基础log信息(base_loging),运行时会输出base等级及其之上(更为严重)的信息。具体如下:
base_loging 屏蔽信息 输出信息
“0” INFO 无 INFO + WARNING + ERROR + FATAL
“1” WARNING INFO WARNING + ERROR + FATAL
“2” ERROR INFO + WARNING ERROR + FATAL
“3” FATAL INFO + WARNING + ERROR FATAL
注意:
1、“0”为默认值,输出所有信息
2、设置为3时,不是说任何信息都不输出,ERROR之上还有FATAL
想要开启GPU模式运行程序,只需要在程序开头加上:(注意要放在TensorFlow前面)
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "0" # -1代表不使用GPU,如果有就改为0,1等
如果填-1,那么tensorflow-gpu会提示没有GPU设置,并自动运行cpu模式,;如果填对应的GPU编号(0开始),则使用相应的GPU
import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '1' os.environ['TF_XLA_FLAGS'] = '--tf_xla_enable_xla_devices' # os.environ['HDF5_DISABLE_VERSION_CHECK'] = '1' import tensorflow as tf # import cv2 from tensorflow import keras print("Num GPUs Available: ", len(tf.config.experimental.list_physical_devices('GPU'))) print(tf.__version__) fashion_mnist = keras.datasets.fashion_mnist (train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data() train_images = train_images / 255.0 test_images = test_images / 255.0 model = keras.Sequential([ keras.layers.Flatten(input_shape=(28, 28)), keras.layers.Dense(128, activation='relu'), keras.layers.Dense(10) ]) model.compile( optimizer='adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True), metrics=['accuracy']) model.fit(train_images, train_labels, epochs=15) test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2) print('\nTest accuracy:', test_acc)
ps:如果自己电脑的GPU实在配置不好,或者没有GPU,可以考虑使用谷歌云盘的colaboratory,有免费的云端GPU可以使用,效果也很好(一次连续使用不能超过12小时)
https://tensorflow.google.cn/install/pip#virtual-environment-install
https://blog.csdn.net/hello_program_world/article/details/111246738
https://blog.csdn.net/xiqi4145/article/details/110254093
https://blog.csdn.net/u011473714/article/details/95042856
https://blog.csdn.net/qq_41060020/article/details/105484288
检查环境
python
conda info -e
nvidia-smi
conda create -n cv_env python=3.8
从清华镜像里安装
https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
我安装的是这两个
cudatoolkit-11.3.1-h2bc3f7f_2.conda
https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/linux-64/cudatoolkit-11.3.1-h2bc3f7f_2.conda
cudnn-8.2.1-cuda11.3_0.conda
https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/linux-64/cudnn-8.2.1-cuda11.3_0.conda
改下载源
vi ~/.condarc
channels:
- defaults
show_channel_urls: true
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
cd Downloads/
ls
source activate cv_env
python
conda install --offline cudatoolkit-11.3.1-h2bc3f7f_2.conda
conda list
pip install --default-time=300 tensorflow-gpu==2.6.0 keras==2.6.0 -l https://pypi.tuna.tsinghua.edu.cn/simple
验证
python
import tensorflow as tf
tf.test.is_gpu_available()
import keras
tf.__version__
keras.__version__
uname -a # 查看电脑配置
ubuntu-drivers devices # 查看可安装驱动版本
sudo apt install nvidia-driver-470 # 安装驱动
nvidia-smi # 查看显卡状态
下载
官网下载anaconda安装包并解压
sh Anaconda3-2021.04-Linux-x86_64.sh # 安装
Do you accept the license terms? [yes|no]
[no] >>> yes
Do you wish the installer to initialize Anaconda3
by running conda init? [yes|no]
[no] >>> yes
查新打开终端自动进入base
进入python
(base) shoko@shoko-XPS:~/下载$ python
Python 3.8.8 (default, Apr 13 2021, 19:58:26)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
清华园下载安装文件
(base) shoko@shoko-XPS:~/下载$ ls
Anaconda3-2021.04-Linux-x86_64.sh
cudatoolkit-11.3.1-h2bc3f7f_2.tar.bz2
cudnn-8.2.1-cuda11.3_0.tar.bz2
tensorflow_gpu-2.6.0-cp38-cp38-manylinux2010_x86_64.whl
conda install cudatoolkit-11.3.1-h2bc3f7f_2.tar.bz2
conda install cudnn-8.2.1-cuda11.3_0.tar.bz2
pip install --default-time=300 tensorflow_gpu-2.6.0-cp38-cp38-manylinux2010_x86_64.whl keras==2.6.0 -i https://mirrors.aliyun.com/pypi/simple
python
>>> import tensorflow as tf
>>> tf.test.is_gpu_available()
True
>>> tf.__version_
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'tensorflow' has no attribute '__version_'
>>> tf.__version__
'2.6.0'
>>> import keras
>>> keras.__version__
'2.6.0'
1.在终端进入创建的环境,安装ipykernel
conda install ipykernel
2.将环境写入jupyter notebook的kernel中
python -m ipykernel install --user --name 环境名称 --display-name "在jupyter中显示的环境名称"
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。