TensorFlow识别GPU难道就这么难吗?还是我的GPU有问题?

2023-12-21 13:52

本文主要是介绍TensorFlow识别GPU难道就这么难吗?还是我的GPU有问题?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

b5cbb7c1e1bf32f6e98bda608ca92afa.gif

正文共:1220 字 20 图,预估阅读时间:2 分钟

有了上次的经验Windows部署TensorFlow后识别GPU失败,原因是啥?,我们这次操作就顺利多了,在保留之前环境的基础上,我们新建一台虚拟机来操作。

配置稍微堆高一点,避免影响性能,配置48核CPU、128 GB运行内存(全部锁定)、200 GB系统盘,镜像使用Windows 10的19041版本。

d9188e703598bab8cb1e1bc04f9ca13e.png

系统安装完成之后,GPU驱动没有自动安装,需要手工安装。

a21b69c4bc61716b427b3174d4546210.png

相比于之前,版本又更新了,下载安装一下。安装完成之后,和上次一样HPE服务器通过显卡直通安装Tesla M4,这算亮机成功了吗?,显示适配器驱动识别正常,NVIDIA控制面板只有系统信息可以展示,不能配置显示配置。

de394af6a05790c39df4eb0617f8e994.png

任务管理器中没有GPU选项。

dc3c3f4f2ba7577303dad21f004303fd.png

接下来安装Anaconda,安装过程中勾选Clear the package cache upon completion(完成后清除安装包缓存),本次安装前磁盘的已用空间为40.5 GB,安装完成后已用空间为45.6 GB,大约占用5.1 GB。

安装完成之后,打开Anaconda Navigator,进入“Environment”查看环境配置。点击页面下方的“Create”来创建一个新环境,指定名称为tensorflow,Python版本选择为3.11.5,点击“Create”完成创建。

8f8162aabb5fe9f5869b5dda4df31fe4.png

新环境创建完成之后,点击新环境后面的启动按钮,选择“Open Terminal”打开命令行终端。

afe7d0891af6bfed662af7c13ea4d177.png

然后输入以下命令来激活testtensorflow环境:

activate tensorflow

4b3c29a78fe1255078b76482fa8ee7b5.png

接下来又到了安装TensorFlow的时候了,默认情况下,pip使用的是官方的Python Package Index (PyPI) 服务器(https://pypi.org/),但因为区域问题,我们在安装Python包时遇到了速度慢且网络不稳定的问题,此时我们考虑切换到国内的镜像源试一下。

常用的国内镜像源有,清华大学https://pypi.tuna.tsinghua.edu.cn/simple/,中国科学技术大学(USTC)https://pypi.mirrors.ustc.edu.cn/simple/,阿里云http://mirrors.aliyun.com/pypi/simple/。

切换pip源有两种常见方法:临时更换和永久修改。对于临时更换,只需在命令行中使用-i参数指定一个新的源地址,比如我们本次临时使用中国科学技术大学的镜像源(清华大学的有报错),命令如下:

pip install tensorflow -i https://pypi.mirrors.ustc.edu.cn/simple/

80a31af2c0a181e2100702e217ce6b1a.png

果然这个速度就快很多了,最快能到将近200 Mbps。

当然,如果你感觉每次安装库时都输入一遍国内镜像源地址麻烦的话,也可以试试永久修改。首先打开Windows文件资源管理器,在地址栏中输入“%appdata%”,然后回车,一般会进入到C:\Users\tesla\AppData\Roaming目录;然后新建一个“pip”文件夹,并在pip文件夹下,新建一个名为“pip.ini”的文件,并向文件中写入以下内容:

[global]
index-url = https://pypi.mirrors.ustc.edu.cn/simple/
trusted-host = pypi.mirrors.ustc.edu.cn

881d371848e801e022770ded1efa7079.png

最后保存并关闭pip.ini文件即可。

然后我们可以简单进行验证。

880b30f28d4e78dfa92da6cf9521f1ec.png

如果看到查找的路径与我们配置的源路径一直就说明修改成功了。

进入Python视图,输入以下命令检测TensorFlow版本。

import tensorflow as tf
print("TensorFlow version:", tf.__version__)

3e4e12ec6c7d1b83129d03509276e741.png

输入以下命令检测GPU状态。

tf.test.is_gpu_available()

d055aa8ffe3168599ffe58f1722ab124.png

哦吼,还是False,难道是没有装CUDA和cuDNN的原因?那就下载安装一个,CUDA文件大小3.1 GB,又不小。下载链接如下:

https://developer.download.nvidia.com/compute/cuda/12.3.1/local_installers/cuda_12.3.1_546.12_windows.exe

4b62651486e97747a3edff50ebad7389.png

安装过程和显卡驱动安装过程基本一致,需要注意一个Visual Studio的确认页面,Visual Studio的CUDA工具包是用来方便我们开发CUDA程序的,如果不需要开发CUDA程序,则不需要安装Visual Studio的CUDA工具包,勾选下面的同意选项即可。

344db9ad99824499c9189174596fb97c.png

之后按照提示完成安装即可。

06ac016d009d16b4467e0790fd5e6cb5.png

再安装一个cuDNN,记得选择和CUDA版本配套的版本,下载链接如下:

https://developer.download.nvidia.com/compute/cudnn/secure/8.9.6/local_installers/12.x/cudnn-windows-x86_64-8.9.6.50_cuda12-archive.zip

8c60052df0d74d8068dcf890caa69012.png

解压压缩包,会得到3个文件夹。

3862cdad93cdbaaef70eff151d36c3cd.png

然后,将bin中的所有文件复制到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.3\bin中,将include中的所有文件复制到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.3\include中,将\lib\x64中的所有文件复制到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.3\lib\x64中。

接下来,在计算机系统属性的“高级”页签中,点击进入“环境变量”配置,检查系统变量的Path中是否存在指向C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.3\bin的变量;如果不存在,请创建一个。

3b4862fcdc28e70cc22c23fd60b01928.png

操作完成后,我们可以在CMD命令提示符或PowerShell运行以下命令检查cuDNN是否安装成功,正常应该可以看到NVCC(NVIDIA Cuda Compiler)的版本信息。

nvcc --version

c12a1d0b320f951dc6834119dc906109.png

好了,现在CUDN和cuDNN都装好了,但还是不成功,重启试一下。

1287bccd154bf4597169a76ee7541a43.png

完蛋,崩溃了,怎么就不行呢?

410c8f60a69de07989cc361df01cce3c.gif

长按二维码
关注我们吧

b5492622c9976d219e7a94126228c423.jpeg

b1cb513e5c3fc00a67d9a697d8c3d934.png

Windows部署TensorFlow后识别GPU失败,原因是啥?

ESXi的超线程状态为“已禁用”,是谁动了我的服务器?

如何操作VMware ESXi虚拟机的克隆?

如何操作VMware ESXi虚拟机的迁移?

VMWare ESXi中,不同的虚拟网卡性能竟然能相差三倍!

VMWare ESXi 7.0的磁盘空间莫名少了120 GB?看这里!

79.55 Gbps!已经初步测得VMWare ESXi 6.7的vSwitch转发性能

添加E1000网卡进行测试,只有VMXNET3性能的四分之一

macOS unlocker 4.0.5 for VMware ESXi 7.0

CentOS 7搭建NFS服务器

手把手教你在天翼云部署一台FortiGate云主机

PVE8.0-2安装使用快速指导

借PVE8.0的Debian 12系统配置一下NFS服务器

不想用了PVE了怎么办?那就迁移到VMware呗!

在线文档频繁故障不稳定,其实可以自己搭一个Etherpad在线文档

地址重叠时,用户如何通过NAT访问对端IP网络?

手撸一个自动搭建openVPN服务器的SHELL脚本

HCL中虚拟设备的转发性能怎么样?今天我们来测一下

如何在最新版的HCL 5.10.0中导入NFV镜像?

这篇关于TensorFlow识别GPU难道就这么难吗?还是我的GPU有问题?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/520244

相关文章

关于@MapperScan和@ComponentScan的使用问题

《关于@MapperScan和@ComponentScan的使用问题》文章介绍了在使用`@MapperScan`和`@ComponentScan`时可能会遇到的包扫描冲突问题,并提供了解决方法,同时,... 目录@MapperScan和@ComponentScan的使用问题报错如下原因解决办法课外拓展总结@

MybatisGenerator文件生成不出对应文件的问题

《MybatisGenerator文件生成不出对应文件的问题》本文介绍了使用MybatisGenerator生成文件时遇到的问题及解决方法,主要步骤包括检查目标表是否存在、是否能连接到数据库、配置生成... 目录MyBATisGenerator 文件生成不出对应文件先在项目结构里引入“targetProje

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J

numpy求解线性代数相关问题

《numpy求解线性代数相关问题》本文主要介绍了numpy求解线性代数相关问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 在numpy中有numpy.array类型和numpy.mat类型,前者是数组类型,后者是矩阵类型。数组

解决systemctl reload nginx重启Nginx服务报错:Job for nginx.service invalid问题

《解决systemctlreloadnginx重启Nginx服务报错:Jobfornginx.serviceinvalid问题》文章描述了通过`systemctlstatusnginx.se... 目录systemctl reload nginx重启Nginx服务报错:Job for nginx.javas

Redis缓存问题与缓存更新机制详解

《Redis缓存问题与缓存更新机制详解》本文主要介绍了缓存问题及其解决方案,包括缓存穿透、缓存击穿、缓存雪崩等问题的成因以及相应的预防和解决方法,同时,还详细探讨了缓存更新机制,包括不同情况下的缓存更... 目录一、缓存问题1.1 缓存穿透1.1.1 问题来源1.1.2 解决方案1.2 缓存击穿1.2.1

vue解决子组件样式覆盖问题scoped deep

《vue解决子组件样式覆盖问题scopeddeep》文章主要介绍了在Vue项目中处理全局样式和局部样式的方法,包括使用scoped属性和深度选择器(/deep/)来覆盖子组件的样式,作者建议所有组件... 目录前言scoped分析deep分析使用总结所有组件必须加scoped父组件覆盖子组件使用deep前言

解决Cron定时任务中Pytest脚本无法发送邮件的问题

《解决Cron定时任务中Pytest脚本无法发送邮件的问题》文章探讨解决在Cron定时任务中运行Pytest脚本时邮件发送失败的问题,先优化环境变量,再检查Pytest邮件配置,接着配置文件确保SMT... 目录引言1. 环境变量优化:确保Cron任务可以正确执行解决方案:1.1. 创建一个脚本1.2. 修

Python 标准库time时间的访问和转换问题小结

《Python标准库time时间的访问和转换问题小结》time模块为Python提供了处理时间和日期的多种功能,适用于多种与时间相关的场景,包括获取当前时间、格式化时间、暂停程序执行、计算程序运行时... 目录模块介绍使用场景主要类主要函数 - time()- sleep()- localtime()- g