当前位置:   article > 正文

配置TensorFlow的cuda环境教程_tensorflow cuda

tensorflow cuda

由于各种深度学习框架(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…

二、软件要求

1. 查看Python、tensorflow、CUDA、Cudnn版本的对应关系,确定版本方案

注意记下自己需要的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

Windows用户Tensorflow官网链接

https://www.tensorflow.org/install/source_windows

在这里插入图片描述

Linux用户Tensorflow官网链接

https://www.tensorflow.org/install/source#common_installation_problems

在这里插入图片描述
注意:
若要支持 Python 3.9,需要使用 TensorFlow 2.5 或更高版本。
若要支持 Python 3.8,需要使用 TensorFlow 2.2 或更高版本。
如果使用错误的Python版本,将无法安装TensorFlow!

2. 下载NVIDIA GPU 显卡驱动程序

显卡驱动的下载链接

https://www.nvidia.com/download/index.aspx?lang=en-us#

填入GPU的信息
在这里插入图片描述
得到下载链接
在这里插入图片描述

验证驱动安装成功

查看N卡状态

nvidia-smi
  • 1

3. 下载CUDA工具包

3.1 简介

CUDA 是NVIDIA专门负责管理分配运算单元的框架
CUDA的本质是一个工具包(ToolKit)

CUDA是NVIDIA推出的用于自家GPU的并行计算框架,也就是说CUDA只能在NVIDIA的GPU上运行,而且只有当要解决的计算问题是可以大量并行计算的时候才能发挥CUDA的作用。

3.2 下载方法

下载之前我们需要知道已经安装了什么版本的CUDA
至于怎样知道自己安装了多少个工具包,可以参考3.3的内容

安装最新版本CUDA工具包

下载链接:

https://developer.nvidia.com/cuda-toolkit-archive

在这里插入图片描述

我们可以选择两种安装方式
一种是离线安装即本地安装(推荐第一次安装CUDA的用户使用)
一种是在线安装(推荐已经安装多个CUDA版本的用户使用)

解释:NVIDIA显卡驱动和CUDA工具包本身是不具有捆绑关系的,也不是一一对应的关系,只不过是离线安装的CUDA工具包会默认安装与之匹配的最新的驱动程序,这不太好,我们直接安装一个最新版的显卡驱动,然后在线安装不同版本的CUDA即可。

这里我要安装到E盘,不是默认目录,所以选则自定义
在这里插入图片描述在这里插入图片描述

3.3 查看所安装的CUDA版本

(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 命令

4. cuDNN

4.1 简介

cuDNN是一个SDK,是一个专门用于神经网络的加速包,注意,它跟我们的CUDA没有一一对应的关系,即每一个版本的CUDA可能有好几个版本的cuDNN与之对应,但一般有一个最新版本的cuDNN版本与CUDA对应更好。

cuDNN(CUDA Deep Neural Network library):是NVIDIA打造的针对深度神经网络的加速库,是一个用于深层神经网络的GPU加速库。如果你要用GPU训练模型,cuDNN不是必须的,但是一般会采用这个加速库。

4.2 下载及安装

需要注册和登陆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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

然后:
在系统变量 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的配置情况:
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

读不懂的看下面的图
在这里插入图片描述
在这里插入图片描述

4.3 查看自己的cuDNN的版本

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)
  • 1
  • 2
  • 3
  • 4

即7500,也就是cudnn的版本为8.1.1版本;
(2)在Linux平台下:
通过命令进入到安装目录,执行如下命令:

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2  
  • 1

在这里插入图片描述
即5005,即5.0.5版本的cudnn。

4.4 验证是否配置成功

主要使用CUDA内置的deviceQuery.exe 和 bandwithTest.exe:
首先win+R启动cmd,cd到安装目录下的 …\extras\demo_suite,然后分别执行bandwidthTest.exe和deviceQuery.exe,应该得到下图:
在这里插入图片描述
在这里插入图片描述

5.CUDA 工具包附带的CUPTI(可选)

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

三、TensorFlow & Pyrhon

3.1 python安装

(1)查看已有的python版本
方法一(推荐):
在命令窗口,输入

where python
  • 1

它会显示python的对应路径,多个版本时候会显示多个路径
在这里插入图片描述
可以看到,有anaconda的版本,同时有programs的python3.8版本,但是我们需要python3.7版本
(2)python官网下载

https://www.python.org/downloads/

在这里插入图片描述
下完完成直接点击exe文件,安装过程注意勾选“添加到环境变量”

3.2 TensorFlow安装

在anaconda prompt中新建环境,起的名字最好可以表现出tensorflow版本,如tf2,tensorflow1.7等,建立名为tensorflow2.5.0的环境,后面跟着的是对应python版本

conda  create -n tf2 python=3.7
  • 1

需要指定环境的路径,因此可以使用命令:

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

到此环境创建完成,接下来就要在该环境中真正安装tensorflow了

激活虚拟环境:

activate
  • 1
conda activate tf2
  • 1

在不影响主机系统设置的情况下,在虚拟环境中安装软件包。首先升级 pip :

pip install --upgrade pip --user
  • 1

然后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
  • 1

如果你下载的项目里有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
  • 1
  • 2
  • 3
  • 4

然后按照requiremwnts.txt文件安装库

pip install -r requirements.txt -i  https://pypi.tuna.tsinghua.edu.cn/simple
  • 1

好了,在tensoflow2.5.0环境下,看看python在哪里

where python
  • 1

可能会有多条路径,没关系,第一条就是当前环境的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
  • 1
  • 2
  • 3
  • 4

查看第一条:E:\Users\THINKPAD\anaconda3\envs\tf2\python.exe(每个人可能不一样)
它就是tensorflow2.5.0版本的python位置,记住你的位置,等会要用

3.3 验证配置成功

现在打开Python

python
  • 1
import tensorflow as tf
  • 1

没有红色字报错,终于完成啦!
精致一点的话还可以输入exit,退出ipython环境

其他命令

几个环境命令总结:

conda info --envs
#查询建立的所有环境

conda list						
#查询安装的库,不同环境内的查询结果可能不同

conda activate (环境名)		
#打开某环境,activate和环境名之间有一个空格

conda deactivate				
#退出当前环境

conda remove -n (环境名)--all
#删除某环境,remove和环境名之间有一个空格,与--all之间也有空格

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

四、 在pycharm中使用该版本的tensorflow

如果你是要新建一个工程,那就:

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创建工程即可

如果你是要修改一个已有工程的interpreter:

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))
  • 1
  • 2
  • 3
  • 4
  • 5

运行结果:

'hello,world'
  • 1

设置log输出信息

输出结果会有很多红色文字,这并不是报错
可以在前面加上这句话,就不会出现红色文字

os.environ['TF_CPP_MIN_LOG_LEVEL'] = '1' # 不提示
  • 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模式

想要开启GPU模式运行程序,只需要在程序开头加上:(注意要放在TensorFlow前面)

import os
os.environ["CUDA_VISIBLE_DEVICES"] = "0"  # -1代表不使用GPU,如果有就改为0,1等
  • 1
  • 2

如果填-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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

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

Ubuntu配置GPU版tensorflow

方法1

检查环境

python
  • 1
conda info -e
  • 1
nvidia-smi
  • 1
conda create -n cv_env python=3.8
  • 1

从清华镜像里安装
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
  • 1
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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
cd Downloads/
  • 1
ls
  • 1
source activate cv_env
  • 1
python
  • 1
conda install --offline cudatoolkit-11.3.1-h2bc3f7f_2.conda
  • 1
conda list
  • 1
pip install --default-time=300 tensorflow-gpu==2.6.0 keras==2.6.0 -l https://pypi.tuna.tsinghua.edu.cn/simple
  • 1

验证

python
  • 1
import tensorflow as tf
  • 1
tf.test.is_gpu_available()
  • 1
import keras
  • 1
tf.__version__
  • 1
keras.__version__
  • 1

方法2

uname -a # 查看电脑配置
  • 1
ubuntu-drivers devices # 查看可安装驱动版本
  • 1
sudo apt install nvidia-driver-470 # 安装驱动
  • 1
nvidia-smi # 查看显卡状态
  • 1

下载
官网下载anaconda安装包并解压

sh Anaconda3-2021.04-Linux-x86_64.sh # 安装
  • 1
Do you accept the license terms? [yes|no]
[no] >>> yes

  • 1
  • 2
  • 3
Do you wish the installer to initialize Anaconda3
by running conda init? [yes|no]
[no] >>> yes

  • 1
  • 2
  • 3
  • 4

查新打开终端自动进入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.
>>> 

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

清华园下载安装文件

(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
  • 1
  • 2
  • 3
  • 4
  • 5
conda install cudatoolkit-11.3.1-h2bc3f7f_2.tar.bz2 
  • 1
conda install cudnn-8.2.1-cuda11.3_0.tar.bz2
  • 1
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
  • 1
python
  • 1
>>> 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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

在jupyter中进入conda创建的虚拟环境

1.在终端进入创建的环境,安装ipykernel

conda install ipykernel
  • 1

2.将环境写入jupyter notebook的kernel中

python -m ipykernel install --user --name 环境名称 --display-name "在jupyter中显示的环境名称"
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/95667
推荐阅读
相关标签
  

闽ICP备14008679号