Note: GPU support on native-Windows is only available for 2.10 or earlier versions, starting in TF 2.11, CUDA build is not supported for Windows. For using TensorFlow GPU on Windows, you will need to build/install TensorFlow in WSL2 or use tensorflow-cpu with TensorFlow-DirectML-Plugin
概要: Windows上的GPU支持仅适用于2.10或更早的版本,从tensorflow 2.11开始,Windows不支持CUDA构建。后面的版本需要其它的操作,但是到我发表这个文章为止,网上大部分都是使用2.10版本以前的方法,很多人会不知道这个改动根据网上旧版教程并且按照一律最新原则,安装最新版本导致各种奇怪bug。
pip install tensorflow-gpu==2.12.0: tensorflow and tensorflow-gpu have been the same package since TensorFlow 2.1, released in September 2019. Although the checksums differ due to metadata, they were built in the same way and both provide GPU support via Nvidia CUDA. As of December 2022, tensorflow-gpu has been removed and has been replaced with this new, empty package that generates an error upon .installation.
概要: python官方已经在截至2022年12月,tensorflow-gpu的2.12.0版本已被移除,并已被这个新的空包所取代,该包在安装时产生错误,但旧版的2.10.0等等的仍然可以用。而且后续也不会更新。直接pip安装tensorflow-gpu会默认安装2.12.0(我是python 3.10),这样安装会直接报错,说什么什么没有运行,然后下面说不是pip的问题,简单来说就是这个包已经没有了你安装不了。因此安装适合应该带上"==2.10.0"(可能是最新最简单的版本)。
网上也有说官方网站说cpu和gpu模式已经合并起来直接装tensorflow就行,我试过2.10.0和2.12.0(目前最新版)都只有cpu版本,然而我也没看见官方有这个说明,尚不清楚这个方法是否可行。
版本号对照可以参考tensorflow官方网站:https://tensorflow.google.cn/install/source_windows?hl=en#gpu
环境支持可以参考tensorflow官方网站(重点是软件要求):https://tensorflow.google.cn/install/gpu?hl=zh-cn
(1)python 3.7~3.10(这个简单不细说)
(2)Bazel 5.1.1(这个我没有管,好像本来就有那样。)下面三个重点:
(3)Compiler:MSVC 2019(我尚不知道能否不下载vs可以解决这个问题,我是通过本来就有的vs2022解决的。这个可以理解为是一个Visual Studio 2019或者更高版本里面的一个小组件,如果电脑有vs那就打开之前安装的那个程序Visual Studio Installer,因为我是2022的当时安装只有MSVC 2022,点击修改,然后在右边栏目点击展开使用c++的桌面开发,勾选MSVC … VS 2019 C++ x6…,右下角修改等待完成即可;如果电脑没有vs,直接百度下载vs即可,我目前是最新的vs2022社区版,后续也会弹出Visual Studio Installer,选了c++的桌面开发后,记得勾选MSVC … VS 2019 C++ x6…,步骤差不多。)
(4)CUDA 11.2(根据文档指示到网站 https://developer.nvidia.com/cuda-toolkit-archive 中找到CUDA 11.2版本(网上有说看N卡控制版面那个信息来判断是什么版本,其实只要不高于N卡控制版面支持的版本就行,版本不够高就更新自己的n卡驱动),点击进去选好后点击下载,安装就和安装软件一样点下一步就行,最好不要改变安装路径直接默认,可能我本来有n卡驱动缘故,我改了路径也仍然安装在默认路径。)
(5)cuDNN 8.1(根据文档指示到网站 https://developer.nvidia.com/rdp/cudnn-download 中点击 “Archived cuDNN Releases” 能看到以前的版本,找到8.1版本而且是对应CUDA 11.2的windows版本,必须严格对应版本,然后下载得到压缩包,解压后得到里面三个文件夹的意思是:把三个文件里面的东西放到刚刚安装的CUDA文件根目录(一般在:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2)中分别对应的文件夹名字(bin,include,lib\x64)里面,直接复制粘贴进去对应的文件夹就行。在这里推荐重启电脑一下!!!)
(1)进入你的python安装的包的文件夹(X:\···\Python\Python310\Lib\site-packages),将所有有tensorboard和tensorflow的文件夹全部删了,确保不会出现等下安装的不兼容现象。
(2)打开命令行输入:pip install tensorflow-gpu==2.10.0(我没有科学上网下载速度是正常速度),速度慢则选用国内源:pip install tensorflow-gpu==2.10.0 -i https://pypi.douban.com/simple ,等待安装成功。(国内源自己摸索下。一般到这里不会出问题,有什么问题重启电脑再试试这个步骤。有下载慢或者其它pip版本问题的自己简单处理一下即可。)
随便打开一个可以运行python的东西执行下面代码:(前提是你安装在了那个python环境里,不过一般小白不会有很多其它的环境)
import tensorflow as tf
gpus = tf.config.experimental.list_physical_devices(device_type='GPU')
cpus = tf.config.experimental.list_physical_devices(device_type='CPU')
print(gpus, cpus)
执行结果:(显示顺序不重要,有GPU就行)
[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')] [PhysicalDevice(name='/physical_device:CPU:0', device_type='CPU')]
import tensorflow as tf
version=tf.__version__ #输出tensorflow版本
gpu_ok=tf.test.is_gpu_available() #输出gpu可否使用(True/False)
print("tf version:",version,"\nuse GPU:",gpu_ok)
执行结果:(有红色的那些不重要,有下面那个是True就行)
tf version: 2.10.0
use GPU: True
(1)如果出现了一大推红色,说什么什么.dll无法执行的就重启一下电脑,可能是安装CUDA没有重启电脑。
(2)如果出现tensorflow 2.12.0 什么什么 tensorflow 2.10.0之类的就是版本各种各样不兼容,刚刚删除文件夹没有删除完全,重新删除按照步骤重新来即可。
import tensorflow as tf
# 定义一个变量
x = tf.Variable([1,2])
# 定义一个常量
a = tf.constant([3,3])
# 减法 op
sub = tf.subtract(x, a)
# 加法 op
add = tf.add(x,sub)
print(sub)
print(add)
tf.Tensor([-2 -1], shape=(2,), dtype=int32)
tf.Tensor([-1 1], shape=(2,), dtype=int32)
----以上为个人思考与见解,有误请指点,有想法也可联系交流!
~~~~~~~~~~~~~~ 谢谢观看!