TensorFlow实战之环境搭建

标签: 无 分类: 未分类 创建时间:2023-05-24 02:56:38 更新时间:2024-11-23 10:24:25

前言

我这里是 window 11 系统,有一个 GTX 3060 12G的显卡。

(1) 经过最终测试,我安装了如下的内容:

  • Anacoda:-2023.03-1-Windows-x86_64
  • python:3.10.9
  • pip:22.3.1
  • tensorflow:2.10.1
  • NVIDIA:531.79
  • CUDA:12.1
  • cudatoolkit:11.8.0
  • cudnn:8.2.1

(2) 因为我的anaconda安装到了 C:\Soft\ 文件夹下,所以配置的配置环境变量如下:

1
2
3
4
C:\Soft\anaconda3\pkgs\cudatoolkit-11.8.0-hd77b12b_0\Library\bin
C:\Soft\anaconda3\pkgs\cudnn-8.2.1-cuda11.3_0\Library\bin
C:\Soft\anaconda3
C:\Soft\anaconda3\Scripts
参考文章:
1.TensorFlow 安装与环境配置 这里安装 Anaconda 的 Python 3.7 64 位版本,NVi419.35,CUDA 版本10.1,TensorFlow 2.1,cudatoolkit=10.1 和 cudnn=7.6.5
2.如何使用wsl2搭建基于Tensorflow GPU的深度学习环境?
3.TensorFlow GPU不可用,WSL2安装 win11,安装的tensorflow的版本都是2.12的,但是从2.10开始tensorflow就不支持gpu了,这点在英文版的安装页面里有。

1.Anacoda

这个网上安装的过程很多,我自己也写了一点总结 Anaconda之安装和使用,下载 安装,然后配置环境变量。我这里配置了 “C:\Soft\anaconda3”。

安装了conda之后,可以配置虚拟环境,其实作为测试没有必要创建,随意好了。

1
2
3
4
5
6
7
8
9
10
11
12
conda create --name [env-name]      # 建立名为[env-name]的Conda虚拟环境
conda activate [env-name] # 进入名为[env-name]的Conda虚拟环境
conda deactivate # 退出当前的Conda虚拟环境
conda env remove --name [env-name] # 删除名为[env-name]的Conda虚拟环境
conda env list # 列出所有Conda虚拟环境

conda install [package-name] # 安装名为[package-name]的包
conda install [package-name]=X.X # 安装名为[package-name]的包并指定版本X.X
conda update [package-name] # 更新名为[package-name]的包
conda remove [package-name] # 删除名为[package-name]的包
conda list # 列出当前环境下已安装的所有包
conda search [package-name] # 列出名为[package-name]的包在conda源中的所有可用版本

除了命令行之外,还可以打开 Anaconda3 Navigator ,安装 Jupyter Notebook,很多的示例都是在这个上面编写的。

2.Python

python安装我也写过很多的文章,其实也就是下载安装配置环境变量。

如果先安装了 Anacod,其实他自带了 Python 3.10.9。也可以通过 conda 安装特定版本的 python

3.Pip

安装了Python基本上都是自带了pip,如果命令行没有相关的命令,那就看看是否配置了环境变量。因为我安装了 Anacoda,所以我的 pip 路径在:“C:\Soft\anaconda3\Scripts” 路径下。

1
2
3
4
5
6
pip install [package-name]              # 安装名为[package-name]的包
pip install [package-name]==X.X # 安装名为[package-name]的包并指定版本X.X
pip install [package-name] --proxy=代理服务器IP:端口号 # 使用代理服务器安装
pip install [package-name] --upgrade # 更新名为[package-name]的包
pip uninstall [package-name] # 删除名为[package-name]的包
pip list # 列出当前环境下已安装的所有包

安装完成之后,可以配置清华源。在用户目录文件创建pip文件夹,并创建了pip.ini。我的windows就是 “C:\Users\用户\pip” 目录。

1
2
3
4
5
6
7
8
9
10
11
12
[global]
timeout = 1000
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
extra-index-url = https://pypi.mirrors.ustc.edu.cn/simple/
http://pypi.douban.com/simple/
https://mirrors.aliyun.com/pypi/simple/
http://pypi.mirrors.ustc.edu.cn/simple/
trusted-host = pypi.tuna.tsinghua.edu.cn
mirrors.aliyun.com
pypi.mirrors.ustc.edu.cn
pypi.douban.com
pypi.mirrors.ustc.edu.cn
参考文章:
1.Python pip 安装与使用
2.pip 使用国内镜像源 这是在linux环境下创建 .pip 文件夹和 pip.conf 文件
3.Windows下更换pip源为清华源 windows下配置清华源,是在 appdata文件夹创建 pip 文件夹和pip.ini文件。
4.pip下载速度慢,改用清华或者阿里pip源解决下载速度慢问题 这里提供的多种源,还是挺快的。

4.Tensorflow

直接使用pip就可以安装Tensorflow。

1
2
3
4
5
6
7
## 安装了,我这里安装了 2.12.0 版本
pip install tensorflow
## 或者安装
pip install tensorflow == 2.10.1

##
conda install tensorflow

从 TensorFlow 2.1 开始 到TensorFlow 2.10 结束,pip 包 tensorflow 即同时包含 GPU 支持,无需通过特定的 pip 包 tensorflow-gpu 安装 GPU 版本。

如果对 pip 包的大小敏感,可使用 tensorflow-cpu 包安装仅支持 CPU 的 TensorFlow 版本。

1
pin install tensorflow-gpu
参考文章:
1.安装 TensorFlow 2 官方指南

5.NVIDIA显卡驱动

  • Windows 环境中,如果系统具有 NVIDIA 显卡,则往往已经自动安装了 NVIDIA 显卡驱动程序。

  • Linux 环境,安装的时候,可能需停用桌面环境。
    (1) 下载 官方 Nvidia 显卡驱动
    我电脑显卡是,系统是 UOS Server release 20, 我下载了最新的 ./NVIDIA-Linux-x86_64-550.54.14.run 驱动,因为我的是服务器上的版本,没有桌面,所以就少了很多的步骤,比如金庸

    1
    2
    3
    4
    5
    6
    # 系统内核版本
    uname -r
    # 系统版本
    cat /etc/redhat-release
    # gpu版本
    lspci | grep -i nvidia

(2) 安装

1
2
3
4
5
6
7
8
# 安装依赖
yum install dkms kernel-devel-$(uname -r) -y

# 执行权限
chmod +x ./NVIDIA-Linux-x86_64-550.54.14.run

# 安装驱动
./NVIDIA-Linux-x86_64-550.54.14.run --kernel-source-path=/usr/src/kernels/$(uname -r) -k $(uname -r) --dkms -s

(3) 验证
安装完成之后,可能有些警告:Unable to determine the path to install the libglvnd EGL vendor library config files. Check that you have pkg-config and the libglvnd development libraries installed, or specify a path with –glvnd-egl-config-path,后来我也没有管。使用 nvidia-smi 命令可以查看驱动是否安装成功。

1
nvidia-smi
参考文章:
【1】.DeepinOS 安装 tensorflow, cuda, cuDNN 最方便的方法
【2】.Linux查看GPU信息和使用情况
【3】.UOS 安装nvidia官方显卡驱动 方法一:安装官方闭源驱动(推荐);方法二:使用软件包管理器安装(不推荐);方法三:显卡驱动管理器安装(不推荐)。这里安装闭源驱动的时候还禁用 nouveau 驱动,进入系统级别 3,这些我都没有做。
【4】.CentOS7.0安装NVIDIA GTX1080Ti显卡驱动 这里还是有些问题解决方案的
【5】.centos安装cuda|gpu驱动 这里还安装了 cuda-toolkit,关闭了 X server
【6】.DeepinOS 安装 tensorflow, cuda, cuDNN 最方便的方法 sudo service lightdm stop #这一句是关闭图形桌面,这里还安装了 tensorflow。

问题:Cannot generate ORC metadata for CONFIG_UNWINDER_ORC=y, please install libelf-dev, libelf-devel or elfutils-libelf-devel

这个问题我没有单独的去处理这个东西,后来我直接就跳过了,用上面的安装步骤,直接就安装成功了。

参考文章:
【1】编译内核报错Cannot generate ORC metadata for CONFIG_UNWINDER_ORC=y, please install libelf-dev, libelf-deve 解决:apt-get install libelf-dev libssl-dev
【2】centos安装cuda|gpu驱动 yum install kernel-devel-$(uname -r)
【3】.Cannot generate ORC metadata for CONFIG_UNWINDER_ORC=y sudo dnf install elfutils-libelf-devel

6.CUDA Toolkit 和 cuDNN

在 Anaconda 环境下,推荐使用 conda 进行安装,因为我不知道如何对应版本,是不是需要确定的版本,于是我直接安装了最新版。

1
2
conda install cudatoolkit=X.X
conda install cudnn=X.X.X

安装 CUDA Toolkit 和 cuDNN,其中 X.X 和 X.X.X 分别为需要安装的 CUDA Toolkit 和 cuDNN 版本号,必须严格按照 TensorFlow 官方网站所说明的版本 安装。例如,对于 TensorFlow 2.12.1,可使用:

1
2
3
## 直接安装最新版的,这里我安装了 cudnn = 8.2.1 cudatoolkit = 11.8.0
conda install cudatoolkit
conda install cudnn

在安装前,可使用 conda search 命令搜索 conda 源中可用的版本号。

1
2
conda search cudatoolkit
conda search cudnn

(2) 配置环境变量
将 cudnn 和 cudatookit 的安装路径配置到环境变量中。我这里路径是在 anaconda 下的。

1
2
3
4
# cudatoolkit
C:\Soft\anaconda3\pkgs\cudatoolkit-11.8.0-hd77b12b_0\Library\bin
## cudnn
C:\Soft\anaconda3\pkgs\cudnn-8.2.1-cuda11.3_0\Library\bin
参考文章:
【1】.GPU 支持 这是中文官方对于TensorFlow支持的GPU的说明。
【2】.CUDA Installation Guide for Microsoft Windows CUDA在windows上的安,官方的文档。
【3】.安装tensorflow GPU版本–tensorflow-gpu版本与CUDA版本对应关系(持续更新,目前到TF2.10.1) CUdnn与CUDA的对应关系,还有2.1以后版本的检查。TF:2.10 对应 CUDA:11.6,cudnn:8.6
【4】.tensorflow GPU版安装说明 把CUDA和cuDNN的bin目录下的dll文件直接复制到系统system32目录中
【5】.[tensorflow]tensorflow与cuda对应关系表
【6】.使用虚拟环境conda安装不同版本的cuda,cudnn,pytorch 在虚拟环境中安装完cuda和cudnn想要测试是否安装成功,不能使用nvcc -V命令测试,需要在虚拟环境中安装pytorch包进行测试装好pytorch后,命令行输入python,进入python的命令行,导入torch包
【7】.查看CUDA和CUDNN是否安装成功(conda 环境 conda list,有cudnn ,则说明CUDA和CUDNN已经配置成功

7.测试GPU是否可用

因为我安装的Tensorflow 是2.12.0版本,比较小新,为了测试GPU是否可用,我费了好大的力气。后来安装了 tensorflow 2.10.1 版本,使用了下面的方法,测试是否可用,这个版本的 tensorflow 能输出正确的GPU信息。

1
2
3
4
5
6
7
8
9
10
11
import tensorflow as tf

# 打印GPU设备列表
print(tf.config.list_physical_devices('GPU'))

# 或者
gpus = tf.config.experimental.list_physical_devices(device_type='GPU')
cpus = tf.config.experimental.list_physical_devices(device_type='CPU')
print(gpus, cpus)
# 打印gpu数量
print("Num GPUs Available: ", len(gpus))
参考文章:
1.tensorflow gpu环境安装 conda search cudnn=8 –info,可以查看cudnn8的各个子版本与cuda版本的关系
2.Tensorflow 2.1.0 failed to list GPU devices and detect GPU devices automatically Actually, there is a toy example in this tutorial which uses gpus = tf.config.experimental.list_physical_devices(‘GPU’)this API to check if there is any avaliable gpu device
3.tensorflow查看gpu是否可用 len(tf.config.experimental.list_physical_devices(‘GPU’)) 会返回可用的 GPU 数量。如果返回值大于 0,则表示 TensorFlow 可以使用 GPU。
4.Tensorflow 2.0 list_physical_devices doesn’t detect my GPU tensorflow and then installing “tensorflow-gpu“ will resolves your issue

8.TensorFlow-DirectML-Plugin

在 tensorflow 2.11 之后就不提供 gpu 版本了,转而代之的就是 TensorFlow-DirectML-Plugin,这个库是微软提供的。

参考文章:
1.Enable GPU Acceleration for TensorFlow 2 with tensorflow-directml-plugin
2通过Tensorflow-DirectML 快速启用 AMD及NVIDIA GPU 加速 不同的GPU与Tensorflow进行整合调用的时候,会有很多的技术细节,最近使用微软的DirectML感觉还可以,非常方便,在windows及WSL Linux下都能很好的使用GPU的运算能力
3.TensorFlow + DirectML with Windows ML: Real-time object detection from video 这是微软的官方文档,介绍了安装和配置 Directml 。
4.microsoft /tensorflow-directml-plugin DirectML PluggableDevice plugin for TensorFlow 2

9.IDEA

大部分的文章其实推荐的是使用Pycharm进行开发和调试的。

参考文章:
1.在idea环境下搭建tensorflow环境
2.TensorFlow笔记-02-使用PyCharm搭建TensorFlow环境(win版非虚拟机)
3.IDEA配置Anaconda图文并茂
4.【Python】Java工程师学Python之常用开发工具 Idea和PyCharm的区别就是Idea需要安装Python的插件,而PyCharm是专门用来开发Python的工具,Idea在安装插件后基本没啥区别,唯一点就是可能官方的插件没有PyCharm更新得快
5.Cannot add conda environment to Pycharm - Conda executable path is empty even when it’s not
6.系统配置:pycharm结合anaconda管理项目环境

问题

(1) Use tf.config.list_physical_devices('GPU') instead
最早的就是 tensorflow 2.1 之前的版本。结果出现这个错误。

1
2
3
import tensorflow as tf
gpu_device_name = tf.test.gpu_device_name()
print(gpu_device_name)

【解决方案】
就是使用新的测试代码 Use tf.config.list_physical_devices('GPU') instead

参考文章:
1.tensorflow测试gpu是否可用 这是1.xx版本的。
2.Tensorflow-GPU测试是否可用 tf.config.list_physical_devices(‘GPU’)
3.tf.test.is_gpu_available

(2) print(tf.config.list_physical_devices(‘GPU’)) 打印为空
安装了 tensorflow 2.12.0 之后,打印GPU是否可用,结果显示为空。

【解决方案】
win11,安装的tensorflow的版本都是2.12的,但是从2.10开始tensorflow就不支持gpu了,这点在英文版的安装页面里有。而中文版是没有这个提示的,估计也是很多人试了很多遍,检查了很多次环境变量都解决不了为什么就是不能调用gpu的原因。此时我们只能通过wsl2的方式来安装了,这是在windows里运行了一个虚拟机环境,效果自然大打折扣了。

还有一种方式,就是使用 TensorFlow-DirectML-Plugin,也就是 DirectML 这个东西,暂时没有深入的研究。

参考文章:
1.Tensorflow找不到GPU:tensorflow 2.11.0版本开始,在windows上不再支持GPU 根据该条提示,Tensorflow 2.10是最后一个在本地windows上支持GPU的版本。从2.11版本开始,需要在windows WLS2(适用于 Linux 的 Windows 子系统)上安装才能使用GPU。所以要在native-windows上使用GPU,就只能安装2.10.0版本及以下的版本,或者安装老版的tensorflow-gpu。我卸载了之前安装的2.11.0版本,安装了2.10.0版本。
2.Tensorflow-gpu version 2.12.0 is not available TensorFlow 2.10 was the last TensorFlow release that supported GPU on native-Windows. Starting with TensorFlow 2.11, you will need to install TensorFlow in WSL2, or install tensorflow-cpu and, optionally, try the TensorFlow-DirectML-Plugin
3.Windows上tensorflow的GPU死活引用不了(tensorflow 2.11无法调用GPU) tensorflow对于gpu的支持只到2.10,如果你装了最新的tf(2.11),需要先卸载2.11

(3) module ‘tensorflow’ has no attribute ‘config’
当我从tensorflow 2.10.1 切换到 2.12.0的时候,结果上面的代码无法运行了,出现错误。这个问题我尝试,多半就是 pip uninstall 没有卸载干净 tensorflow 。于是我又卸载了其他的模块

1
2
3
4
5
6
7
# 查看全部模块
pip list
# 卸载相关软件
pip uninstall tensorflow-estimator
pip uninstall tensorflow-intel
pip uninstall tensorflow-io-gcs-filesystem
pip uninstall tensorflow

【解决方案】
把pip list 列出的全部的tensorflow的东西全部卸载之后,再次安装,结果就可以了。

参考文章:
1.‘tensorflow’ has no attribute ‘config’
2.TensorFlow 2.12 正式发布 主要功能和改进
3.AttributeError: module ‘tensorflow’ has no attribute ‘version If this returns an error, you may need to reinstall TensorFlow.
4.卸载不掉Tensorflow 这个给我灵感了,先要把全部的tensorflow列出来。
5.怎样完全卸载tensorflow?

(4) Failed to establish a new connection: [Errno 11001]
莫名其妙的出现了这个问题。

【解决方案】
可能网络不好,以后再尝试就好了。

(5) multiple errors encountered anaconda navigator
当我从开始菜单打开 Anaconda Navigator 安装 Jupyter Notebook 的时候,死活安装不上,出现了这个错误。

【解决方法】
我当时安装 Anaconda 的时候,是 Admin 安装的,所以启动的时候,也需要用 Admin 启动。找到开始菜单,打开 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Anaconda3 (64-bit) 文件夹,然后右键 Anaconda Navigator “以管理员身份运行” 即可。

或者找到上面的快捷方式,右键 “属性”,选择 “兼容性”,勾选始终 “以管理员身份运行” 即可。

参考文章:
1.Anaconda Navigator - Multiple Errors Encountered You can enable this behaviour by default by navigating to the Anaconda launch shortcut, right-click > Properties, go to Shortcut tab, click Advanced, and tick ‘Always launch as administrator’.
2.Windows10怎么设置始终以管理员身份运行某个软件
小额赞助
本人提供免费与付费咨询服务,感谢您的支持!赞助请发邮件通知,方便公布您的善意!
**光 3.01 元
Sun 3.00 元
bibichuan 3.00 元
微信公众号
广告位
诚心邀请广大金主爸爸洽谈合作
每日一省
isNaN 和 Number.isNaN 函数的区别?

1.函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断。

2.函数 Number.isNaN 会首先判断传入参数是否为数字,如果是数字再继续判断是否为 NaN ,不会进行数据类型的转换,这种方法对于 NaN 的判断更为准确。

每日二省
为什么0.1+0.2 ! == 0.3,如何让其相等?

一个直接的解决方法就是设置一个误差范围,通常称为“机器精度”。对JavaScript来说,这个值通常为2-52,在ES6中,提供了Number.EPSILON属性,而它的值就是2-52,只要判断0.1+0.2-0.3是否小于Number.EPSILON,如果小于,就可以判断为0.1+0.2 ===0.3。

每日三省
== 操作符的强制类型转换规则?

1.首先会判断两者类型是否**相同,**相同的话就比较两者的大小。

2.类型不相同的话,就会进行类型转换。

3.会先判断是否在对比 null 和 undefined,是的话就会返回 true。

4.判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number。

5.判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断。

6.判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断。

每日英语
Happiness is time precipitation, smile is the lonely sad.
幸福是年华的沉淀,微笑是寂寞的悲伤。