如何正确配置Python环境,并且顺利在Windows11上调用GPU使用Tensorflow2进行模型训练

本文讲述了如何在Windows环境下配置TensorFlow以使用GPU,包括选择合适的Python版本(3.10),避免CUDA不兼容问题,以及使用CUDA和TensorFlow-DirectML-Plugin进行GPU调度的详细步骤。作者分享了个人经历和常见问题解决方案。
部署运行你感兴趣的模型镜像

零、前言

        你可能遇到的问题:tensorflow调用不了GPU,使用CUDA明明能检测出来显卡,却是使用不了,python装最新的就好吗,除了CUDA还有什么办法调用gpu(A卡用户看这里),如何正确使用TensorFlow-DirectML-Plugin插件,etc。

一、 废话

       本人只是普通学校的普通本科生,托我姐的福,有幸接触到这一领域。(目前在做网络入侵检测)虽然目前还不能完全理解代码实际意义,但是在配置环境方面有了不少心得,初次入门深度学习,最终得以顺利跑通,颇为感叹,故留此纪录,以备后日之回忆,亦作经验,供他人学习(大概)

 二、Python 环境

        相信很多初入门的小伙伴对python版本这类东西还没有什么概念,以为新就是好,其实不然。本人就在这里吃了很大的亏。先把结论放在这里了,在Windows上,目前最稳定,最适用的版本是Python3.10.不论是Tensorflow,还是Stable Diffusion 最新版本都是基于Python3.10的,安装新的版本会遇到很多问题,后文再提及。安装Anaconda环境时,如何使自己的python环境为3.10呢?

        第一、是可以寻找历史版本(版本对应python版本下载列表)最新的使用Python3.10的版本是Anaconda 2023.03-1 (Apr 24, 2023)(点击即可下载X86_64版本)。(最简单办法)

        第二、如果你直接下下载了最新版本,也可以有办法的。首先,打开Anaconda Prompt,你会发现会有一个(base)这是默认的基础环境,对应的也就是你的Anaconda的Python版本。我们可以创建一个独立的环境,并且安装指定python版本。操作如下:

        1、首先创建一个虚拟环境

 为了方便我直接命名为python310.

conda create -n env_name python=3.X

        2.激活环境
conda activate env_name

这时候你会发现,()内已经变成你创建的虚拟环境名称了,python版本也来到了3.10.14,(python310)环境相当于一个全新的python环境,需要你自己去安装库、插件之类的。

        3.如何在IDE中使用该虚拟环境呢?

        本人使用的是Spyder,以spyder为例,顶部选项栏,Tools->Preference->(左侧目录)Python interpreter->Using the following Python interpreter->选择路径->(你的anaconda目录)envs/python310/python.exe.选择应用,此时重启,会发现kernel报错,因为这个环境中尚未配置spdyer-kernels,所以应当在Anaconda Prompt中安装(不要安装2.4以上版本,因为python3.10和kernels是对应关系

conda install spyder-kernels=2.4

完成以后,就可以发现,此时python环境已经来到3.10.14了。

至此,终于完成安装python3.10环境。 能在此基础上运行tensorflow了。

三、配置Tensorflow环境以及GPU调度

        1.Python310的理由

        基于Google官方的Tensorflow文档,我们需要仔细阅读基于Windows系统CPU/GPU部分所提到的版本对应关系。一定要一一对应。(我一开始安装的是tensorflow-2.16,python3.11,cuda12.3,cuDNN,结果GPU根本识别不出来)

CPU:

GPU:

请注意:在GPU上有一行特别重要的字

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

简而言之就是从TF2.11开始,就不支持在原生Windows系统上调度CUDA了。有两个解决办法,一是在WSL2(Linux)上运行,二是利用tensorflow-cpu和TensorFlow-DirectML-Plugin插件。因此,要么选择安装老版本tensorflow、CUDA、cuDNN,要么使用DirectML插件。

        2.使用CUDA指南

1.安装Microsoft Visual Studio

2.安装指定版本的CUDA,点击跳转(点击CUDA Toolkit1X.X即可下载)(最多11.2)

3.安装指定版本cuDNN(至高8.1)

4.安装指定版本python(如第二章节所说)

5.安装指定版本tensorflow-gpu

pip install tensorflow-gpu==2.10.0

6.检测是否识别GPU

import tensorflow as tf

# 检查 TensorFlow 是否看到 GPU
print("TensorFlow version:", tf.__version__)
print("Num GPUs Available: ", len(tf.config.list_physical_devices('GPU')))

# 打印出可用 GPU 的详细信息
if tf.config.list_physical_devices('GPU'):
    for gpu in tf.config.list_physical_devices('GPU'):
        print("Name:", gpu.name, "  Type:", gpu.device_type)

以上为使用CUDA和cuDNN使Tensorflow调用N卡进行模型训练的办法。

        3.使用TensorFlow-DirectML-Plugin插件指南(更推荐这个)

        安装CUDA和cuDNN过程复杂,并且对显卡有要求(必须为N卡),对显卡利用效果还有待考证(存疑,后期会再次尝试安装老版本CUDA,并测试性能),而且需要安装特定版本tensorflow-gpu。另一个实现路径就是TensorFlow-DirectML-Plugin插件。微软推出的通过directX12调用显卡的tensorflow插件。下面是基本安装流程:

        1.浏览官方文档

        一定要仔细阅读官方文档的各项安装指南,对环境的需求等等,我截取部分重要内容:

You can install tensorflow-directml-plugin by using Python x86-64 3.10. But tensorflow-directml-plugin isn't supported for version 3.11 and late。Python x86-64 3.7, 3.8, 3.9, or 3.10. Version 3.10 is also the maximum supported version.

又回到第一章所强调的配置python环境,选择合适的python版本的重要性

        2.pip安装tensorflow-cpu

        注意是tensorflow-cpu不是tensorflow也不是tensorflow-gpu

原文:"Currently the directml-plugin only works with tensorflow–cpu==2.10 and not tensorflow or tensorflow-gpu."

pip install tensorflow-cpu==2.10

如果曾经安装过,其他两种,可以先执行卸载。

pip uninstall tensorflow
pip uninstall tensorflow-gpu
        3.安装plugin
pip install tensorflow-directml-plugin

如果此时出现

ERROR: Could not find a version that satisfies the requirement tensorflow-directml-plugin (from versions: none)
ERROR: No matching distribution found for tensorflow-directml-plugin

那一定是前面的环境没有配置好,请重新按照上述步骤进行配置。如果一切顺利的话,那么就能成功让Tensorflow调用GPU啦。

        4.检测

        方法同上

import tensorflow as tf

# 检查 TensorFlow 是否看到 GPU
print("TensorFlow version:", tf.__version__)
print("Num GPUs Available: ", len(tf.config.list_physical_devices('GPU')))

# 打印出可用 GPU 的详细信息
if tf.config.list_physical_devices('GPU'):
    for gpu in tf.config.list_physical_devices('GPU'):
        print("Name:", gpu.name, "  Type:", gpu.device_type)

四、总结

        本人第一次写博客,在似懂非懂中前行,看到模型顺利开始训练,还是颇为感慨。留此纪念。会再写一篇博客记录Network-Intrusion-Detection的运行进展。长路漫漫,上下求索。

目前存在的问题:1.利用CUDA和这个DirectML插件的效率谁高尚不清楚

                             2.目前显卡占用率仅仅只有30%左右(正常现象?)并且16G显存很容易就满了()

TO BE CONTINUE

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值