淘先锋技术网

首页 1 2 3 4 5 6 7

一. 前言

这篇就是总结一下Anaconda里也就是jupyter notebook中如何安装使用tensorflow的GPU版本,踩了好多好多坑,各种各样的错误,写这篇文章也是为了记录一下步骤和各种错误,以防自己忘了还要在踩坑。(这里我就默认已经装好了Anaconda和jupyter notebook了)

二. 所有步骤

1)通过Anaconda建造一个虚拟环境,保证不会影响到全局,一切都在虚拟环境中进行

2)下载匹配的cudacudnn根据自己的显卡算力与驱动版本选择,后面会说

3)下载tensorflow-gpu(版本要匹配上面的cuda与cudnn)

4)下载vc_redist

5)验证tensorflow-gpu是否能正常使用

6)将整备好的虚拟环境导入jupyter notebook

三. 具体步骤

1. 创建虚拟环境

1.1 打开Anaconda Prompt

1.2 利用Anaconda Prompt 创建一个虚拟环境

创建的代码如下,代码的意思就是创建一个名为tensorflow的文件夹也就是虚拟空间,此虚拟空间的python版本是3.7,一个“=”代表3.7随机一个版本,俩个“==”代表就固定一个版本,这里选择3.7的原因是我安装的tensorflow-gpu版本需要python在3.6-3.8之间

conda create -n tensorflow python=3.7

安装过程中会出现让你选择Y/N,输入Y回车就可以,其实就是问你是否安装一些扩展包,比如wheel或者pip等等,都是需要的

出现下面的界面就是安装成功了,会有提示你激活虚拟空间的代码

1.3 激活虚拟空间

建立好虚拟空间之后输入下面代码激活虚拟空间,进入虚拟空间,前面的(base)变成虚拟空间的名字即为成功进入了

conda activate tensorflow

2. cuda、cudnn、tensorflow-gpu 版本的选择与下载

2.1 cuda版本选择

cuda的版本一定要根据你自己的显卡型号来决定

先右键桌面点击英伟达控制面板

 点击左下角系统信息

查看你的驱动程序版本(要记住了,一会就根据这个来选择cuda的版本)

看一下自己的驱动版本符合哪些cuda版本,你可以使用所有低于你驱动程序版本的cudatoolkit,

注意:比你驱动程序版本高的cudatoolkit绝对不能使用

2.2 cuda、cudnn、tensorflow-gpu 版本对应关系

你可以去tensorflow的官网去查看他们的对应关系,能很明显的看出不同版本的tensorflow-gpu需要的cuDNN和CUDA以及python的版本

https://tensorflow.google.cn/install/source_windows?hl=zh-cn

2.3 个人安装的版本和步骤代码

我自己安装的tensorflow-gpu-2.2.0版本,对应的是CUDNN--7.6.5和CUDA--10.1版本

下载cuda代码如下:(使用的都是清华的镜像)

conda install cudatoolkit=10.1 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/win-64/

安装完毕如下

下载cudnn代码如下:

conda install cudnn=7 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/win-64/

安装完毕如下

下载tensorflow-gpu代码如下:(注意这里用的是pip)

pip install tensorflow-gpu==2.2.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

安装成功如下

3. 下载vc_redist

官方提供的vc_redist下载地址如下:

https://learn.microsoft.com/zh-cn/cpp/windows/latest-supported-vc-redist?view=msvc-170

选择X64进行下载,下载成功之后进行安装就行了,一直点击下一步就可以了,很简单(别忘了重启)

4. 验证tensorflow-GPU是否能正常使用

4.1 判断是否导入成功

在虚拟环境中打开python,然后导入tensorflow工具包,如果显示successfully即为成功

红线的部分都是需要输入的部分

python 

import tensorflow as tf

可能出现的错误(1):

当时遇到的第一种错误 protobuff 错误(版本过高,需要降低版本)

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).

解决办法:卸载原来的protobuff,然后再重新下载一个低版本的protobuff就可以了 

pip uninstall protobuf

pip install protobuf==3.19.0

可能出现的错误(2) :

当时遇到的第二种错误,是解决了第一种错误之后出现的,缺少 cudart64_101.dll 文件

解决方法:去重新下载一个cudart64_101.dll 文件,将其直接复制到 C:\Windows\System32 路径下,重新导入tensorflow就会发现错误消失变成successfully了

下载地址:cudart64_101.dll 免费下载 | DLL‑files.com

进入下载地址向下翻就能看到下载了,点击下载之后会弹出一个广告×了就行,然后等待5秒钟会自动在浏览器下载

4.2 判断GPU是否可以使用

首先,还是一样在虚拟环境中打开python,然后导入tensorflow,打印下面这条语句,下面这条语句是判断GPU是否能使用,如果能使用返回的就是True,反之返回False

注意:这里用的tf是在导入tensorflow时候as命名的缩写

print(tf.test.is_gpu_available())

可以看到最后返回的True,代表能正常使用 

可能出现的错误:

当时遇到了缺少各种.dll扩展,‘cublas64_10.dll’,‘cufft64_10.dll’,‘curand64_10.dll’,

‘cusparse64_10.dll’,‘cudnn64_7.dll’,错误整体信息如下

2020-06-15 20:30:54.310396: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library ‘cublas64_10.dll’; dlerror: cublas64_10.dll not found
2020-06-15 20:30:54.311457: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library ‘cufft64_10.dll’; dlerror: cufft64_10.dll not found
2020-06-15 20:30:54.312777: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library ‘curand64_10.dll’; dlerror: curand64_10.dll not found
2020-06-15 20:30:54.314450: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library ‘cusolver64_10.dll’; dlerror: cusolver64_10.dll not found
2020-06-15 20:30:54.315749: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library ‘cusparse64_10.dll’; dlerror: cusparse64_10.dll not found
2020-06-15 20:30:54.316863: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library ‘cudnn64_7.dll’; dlerror: cudnn64_7.dll not found
2020-06-15 20:30:54.317064: W tensorflow/core/common_runtime/gpu/gpu_device.cc:1592] Cannot dlopen some GPU libraries. Please make sure the missing libraries mentioned above are installed properly if you would like to use GPU. Follow the guide at https://www.tensorflow.org/install/gpu for how to download and setup the required libraries for your platform.
Skipping registering GPU devices…

解决方法:还是把这些包重新下载下来,然后放进 C:\Windows\System 路径下,注意和上一次错误存放.dll文件的路径是不一样的,链接我放下面了,需要的自行下载

链接:https://pan.baidu.com/s/1oy3_LbpuJ0JiUYk59Qjv9g?pwd=6666 
提取码:6666

然后你就能看到都开始显示successfully打开了,为True

5. 在juptyter notebook中进行使用

5.1 jupyter notebook中添加Anaconda中的虚拟环境

首先,还是在Anaconda Prompt中打开虚拟环境,忘了怎么进入虚拟环境的翻看上面1.3,进入虚拟环境之后输入下面代码,等待安装完成就行

pip install ipykernel ipython -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

继续输入下面代码,大概意思就是将内核装填进tensorflow这个虚拟环境中

ipython kernel install --user --name tensorflow

当出现一个C盘路径的时候就是添加成功了 

5.2 配置Anaconda的环境变量(如果你已经配置过,跳过这条即可)

鼠标右键 我的电脑 =》属性 =》在右边鼠标往下滑选择 高级系统设置 =》高级 =》环境变量

         

选择path进行编辑

找到你安装的Anaconda的位置,将Anaconda文件中 Library\bin 目录和 Scripts 目录复制下来,点击新建复制上去,一路确定就OK了(我的路径看起来是notebook其实是当时命名错了,就是Anaconda)

5.3 进入jupyter notebook查看 

首先,还是在虚拟环境中,输入jupyter notebook

jupyter notebook

 下面可以看出tensorflow的虚拟环境已经加载进去了

输入下面俩行代码,第一行判断是否gpu运行,第二行是查看有几个gpu可用,我这显示有一个设备可用

print(tf.test.is_gpu_available())

tf.config.list_physical_devices('GPU')

可能出现的错误:

你可能会出现在jupyter notebook中检测gpu为false,但是在刚才的Anaconda Prompt 中检测却为true,这是因为你没有配置环境变量导致的,可以看5.2重新配置一下环境变量

四.总结

为了实现这个期间出了各种各样的错误,反反复复弄了一天才弄好,也看了许多的大神笔记,吸取各路经验才把自己的弄好,每个人的情况都是不太一样的,也希望看这篇文章的如果遇到bug也不要灰心,多查查搜一搜总有一个解决办法属于你!

如果你有什么问题也可以探讨一下😊: [email protected]

******************番外:2023/5/22*******************

最近因为跑别人项目,安装了1.x版本的tensorflow,这个搭配毫无问题,用的都是conda install

其实conda install 就是下载到.conda/pkgs包下面,然后在自动移植到你的虚拟环境conda-meta包下面,这样的好处就是在其他虚拟环境你使用conda install如果pkgs包里有的话就不用再下载了,如果你想让你的虚拟环境的python降级,在虚拟环境中使用conda install python=xx,他就会自动将你的包还有一些扩展包降到匹配你python版本的级别了

tensorflow1.8.0 ==>python3.6==> cudnn-7.1.4==>cudatoolkit-9.0==>keras-2.1.6