巴拉巴

 找回密码
 立即注册

站内搜索

搜索
热搜: 活动 交友 discuz
查看: 32|回复: 0

Tensorflow 安装和 GPU 支持

[复制链接]

7

主题

9

帖子

23

积分

新手上路

Rank: 1

积分
23
发表于 2023-7-23 21:19:10 | 显示全部楼层 |阅读模式
最近开始学机器学习,折腾了下 Tensorflow 的安装方式,发现安装的时候还是有许多坑的,不同的方法也有许多优劣,在此做个笔记给大家分享一下。
首先,Tensorflow 官方提供了安装文档:https://www.tensorflow.org/install,不过里面只讲了 pip 安装和 Docker,本文会提到更多安装方法,可以看具体情况选择。
本文转自我的个人博客

本文使用:CC BY-NC-SA 4.0 许可


  • 上手难度:低
  • 维护难度:高
  • 推荐程度:低
Tensorflow 官方提供的方法之一就是直接 pip 安装,但我非常不建议这样安装。把不同项目需要的软件包全堆到一个环境里面,这样有非常大的概率会产生各种冲突报错,非常难以维护。
安装步骤
1. 确保有 Python 和 pip 环境
(截至 2023/5/32) Tensorflow 支持:

  • Python 3.6–3.9
  • Ubuntu 16.04 或更高版本
  • Windows 7 或更高版本
2. 使用 pip 安装 tensorflow 软件包
pip install tensorflow
3. 安装完成

  • 上手难度:中
  • 维护难度:低
  • 推荐程度:中
virtualenv 是一个比较经典的 Python 环境管理器,它通过创建虚拟环境,将每个环境隔离起来,防止软件包互相干扰。所以我们可以把它应用到 Tensorflow 的安装当中,将它的环境隔离开来。
但是它相对于 Conda 这个 Python 环境管理器来说,还是有许多局限:

  • 不能切 Python 版本(只能用本机版本)
  • 每次都要运行脚本启动环境
  • 不能随便移动文件夹
  • 管理功能欠缺
安装步骤
1. 确保有 Python 和 pip 环境
Python 3.6–3.9
2. 安装 virtualenv
pip install virtualenv
(由于 virtualenv 是一个工具,建议装到全局 Python 环境中)
3. 新建虚拟环境
在虚拟环境需要放置的目录打开 Terminal,执行:
virtualenv
(一般虚拟环境名起名为 venv 就行)
4. 启用虚拟环境
根据不同平台的不同 Terminal,选择不同的指令执行:

  • Windows 平台 CMD:.\venv\Script\activate.bat
  • Windows 平台 Powershell:.\venv\Script\activate.ps1
  • Windows 平台 Gitbash:source ./venv/Script/activate
  • Linux/macOS 平台 bash:source ./venv/bin/activate
启用后,命令行前面会多出一个括号,括号内为环境名,如:(venv)
4. 在虚拟环境内使用 pip 安装 tensorflow 软件包
启用虚拟环境后,该环境的软件包就是与外界隔离的了,直接 pip:
5. 退出虚拟环境
如果使用完毕需要退出的话,使用:
deactivate
简介

  • 上手难度:中
  • 维护难度:低
  • 推荐程度:高
Conda 是目前非常流行也非常强大的一个 Python 环境管理器,它的基本功能和上文的 virtualenv 一致,但是它有很多好用的额外特性。
安装步骤
1. 下载 Anaconda
前往 Anaconda 官网下载安装包:https://www.anaconda.com/download/
2. 安装 Anaconda
运行安装包,前面的设置都默认就行,最后一步需要注意,需要勾选将 Anaconda3 加入到 PATH 环境变量中(虽然上面注明了不建议,但是如果不加入环境变量,后续的使用会麻烦很多)
如果安装的时候忘记勾选环境变量,也可以手动添加以下五条:
3. 初始化 Conda
首先要初始化 conda,如果不初始化的话,虚拟环境启用了没反应:
conda init
shell 类型需要根据自己的运行的 shell 选择:[‘bash’, ‘cmd.exe’, ‘fish’, ‘powershell’, ‘tcsh’, ‘xonsh’, ‘zsh’]
4. 配置 Conda 下载源
由于 Conda 默认下载源在国外,如果不调整的话下载速度会非常缓慢(当然可以用魔法)
5. 创建新环境
使用以下命令创建名为 tf 的 Python 版本 3.8 的新环境:
conda create -n tf python=3.8
6. 启用 tf 环境
conda activate tf
启用后,命令行前面会多出一个括号,括号内为环境名,如:(tf)
7. 安装 tensorflow
在 conda 内,我们一般不直接用 pip 安装软件包,而是使用 conda 来安装:
conda install -c anaconda tensorflow
8. 退出虚拟环境
conda deactivate
简介

  • 上手难度:高
  • 维护难度:低
  • 推荐程度:中
Tensorflow 官方推荐的第二个安装方法就是 Docker 容器了,使用 Docker 容器,你不需要配置任何东西,容器镜像已经配置好了。另外容器天然能够将环境隔离开来,因此也能防止软件包互相干扰。
不过容器作为一个新手接触较少的概念,并且涉及到很多指令操作,对于新手来说比较困难。各位视自己情况选择要不要用它。
本文的使用 docker 环境基于 Windows + WSL2 平台(会熟练用 Linux 的估计也不需要看这教程装 Docker)
安装步骤
1. 安装 WSL2 (Windows Subsystem for Linux 2)
另外,要使用 WSL2,需要满足 Windows 10 版本大于 2004 或 Windows 11.
安装 wsl 的方法可以参考微软官方文档:https://learn.microsoft.com/zh-cn/windows/wsl/install
2. 安装 Docker Desktop
安装 Docker Desktop 并使用 WSL2 作为后端可以参考微软官方文档:https://learn.microsoft.com/zh-cn/windows/wsl/tutorials/wsl-containers
其实最新版的 Docker Desktop 在装好 wsl2 后已经可以直接安装并识别到 wsl2 了,因此直接去下载安装包安装就行了:https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe
3. 拉取 tensorflow 镜像
tensorflow 官方镜像位于:tensorflow/tensorflow,有如下 tag 可以选择(来源)
每个基本标记都有会添加或更改功能的变体:
tensorflow/tensorflow:latest-gpu,如果还需要内置 jupyter 笔记本,可以拉取 tensorflow/tensorflow:latest-gpu-jupyter.4. 创建新容器
如果是 CPU 版本,在 Terminal 中执行命令:
docker run -d -v tensorflow/tensorflow:latest --name tf
如果是 GPU 版本,需要给容器添加 GPU:
docker run --gpus all -d -v tensorflow/tensorflow-gpu:latest --name tf-gpu
如果有 jupyter,还需要映射笔记本目录和对应端口:
docker run --gpus all -d -v :/tf/notebooks -p :8888 tensorflow/tensorflow:latest-gpu-jupyter --name tf-gpu
宿主目录选取一个主机存储笔记本的地方,这样容器删除后数据不会丢失。
宿主端口选取一个空闲的端口,可以直接选择一样的 8888.
5. 进入容器
创建容器后,可以先使用 docker ps 查看一下容器列表,然后执行以下命令进入容器内的 shell:docker exec -it  bash
如果选择的镜像带有 jupyter,在宿主机浏览器访问 127.0.0.1:8888 即可进入笔记本(没错,WSL2 Docker 的端口是直接映射到宿主机的)
6. 容器操作

  • 启动容器:docker start
  • 关闭容器:docker stop
  • 删除容器:docker remove
如果你的电脑有 Nvidia 显卡,那么可以通过 CUDA 加速 Tensorflow 的训练过程,我的 GTX1650 相比 i7-9750H 可以加速大概 5 倍,用显卡跑的话 CPU 也不会满载 100% 了,电脑也不会因为跑训练而卡顿。
不过要支持 GPU 加速的话,需要有额外配置,该部分主要讲的就是 GPU 的额外配置。
注:使用容器安装的话不需要这一步,官方镜像已经给你配置好了环境,但是你还是需要安装显卡驱动。
根据 Tensorflow 官方文档:https://www.tensorflow.org/install/gpu,我们需要安装的依赖有:

  • NVIDIA 显卡驱动
  • NVIDIA CUDA 工具包
  • NVIDIA cuDNN 库
  • (可选) TensorRT
我们下面依次安装:
NVIDIA 显卡驱动
这个应该所有人都装过了,在此略去。不过附上官网下载页面:
NVIDIA CUDA 工具包
首先进入官网下载页面:
根据自己的操作系统选择对应版本,对于 Windows,选择 exe(local) 下载安装包。
(如果使用的是 WSL2,需要在 Linux 栏目下找到 WSL-Ubuntu 版本)
下载后,执行安装器即可完成安装。
安装后,进入命令行输入以下编译器指令检查安装:
nvcc -V
如果有正确输出则成功安装,如:
如果有问题的话,可以去检查一下自己的环境变量是否有问题:
NVIDIA cuDNN 库
首先查看自己显卡的 CUDA 版本,在命令行中执行:nvidia-smi在右上角即可找到版本号,例如:CUDA Version: 11.8
然后进入官网下载页面:
选择对应 CUDA 版本的 cuDNN 库,我选择的是最新的 v8.9.0. 展开列表后会有各个版本的,我们选择第一个 Windows 版本下载。
下载后得到一个 .zip 压缩包,将其解压得到以下文件结构:
然后我们找到 CUDA 工具包的目录:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\\,它的文件结构是:将 cuDNN 库根据文件结构一一对应地拷贝到 CUDA 工具包的目录里面即可。
这一步做完之后,记得重启一遍电脑。
首先,对于现在使用的 Tensorflow 2,pip 的 tensorflow 软件包已经同时包含了 CPU 和 GPU 支持,不存在 Tensorflow 1.x 的 tensorflow-gpu 软件包了。因此,如果使用 pip 的话,直接安装 tensorflow 软件包。
但是这里面还是有坑,conda 的 tensorflow 软件包只包含了 CPU 版本的,而支持 GPU 版本的软件包为 tensorflow-gpu,因此如果使用 conda 的话,需要安装 tensorflow-gpu 软件包。
所以,正确的安装方式如下:

  • 对于使用纯 pip 或用 virtualenv + pip 的:pip install tensorflow
  • 对于使用 conda 的:启用虚拟环境后用 conda install tensorflow-gpu 安装
另外,tensorflow 2 支持的 Python 版本为 3.6~3.9,因此在创建 conda 环境时记得指定对应的版本。如果要使用最新的 tensorflow,就创建最新的 Python 版本:conda create -n tf python=3.9使用 Python 运行以下代码检查 Tensorflow 是否正确识别到了 GPU:
如果输出的列表中有一个 device_type 为 CPU,有一个 device_type 为 GPU,则同时识别到了 CPU 和 GPU。一个正确的输出如下:
这个的原因是,自从 numpy 1.14 后,np.object 被废弃了,被改为了 object。而 tensorflow 还没有更新,导致与 numpy 的兼容问题。这个可以通过降级 numpy 解决:
conda install numpy==1.23.4
有时候经过上面的检查没问题,但是训练的时候崩溃报错 Could not locate zlibwapi.dll,这个是因为没有装 zlib 库。
前往 zlib 官网下载对应的 dll 库:http://www.winimage.com/zLibDll/
选择 AMD64/Intel EM64T 版本的 zlib123dll.zip 下载,解压后找到 zlibwapi.dll 这个文件,放置到 CUDA 工具包的 bin 目录下即可。

来源:http://www.yidianzixun.com/article/0pryblqj
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 返回顶部