win10 搭建 tensorflow-gpu 环境

  • win10 下安装 tensorflow-2.2 2.5 及 gpu 加速.

  • 资料来源:

    https://www.tensorflow.org/install/pip
    https://blog.csdn.net/Anysky_fighting/article/details/105320858

  • 更新

    1
    2
    20.07.08 初始化
    21.06.25 更新内容,修正错误

导语

算是第一个机器学习的博文,win10 下安装 tensorflow-2.2 2.5 及配置 gpu 加速.

不得不说还是 linux 下香,跑个 docker 就行了.win10 下太难了…下个大版本更新 wsl2 带来了 gpu 的支持,继续等吧,预览版实在不敢上.

简介

Tensorflow 是目前最流行的机器学习框架,由 Google 开发以 Apache 2.0 开源.

TF 提供了 Python C++ Java Go Rust 等语言的 API.基本覆盖了我接触范围内全部编程语言.

TF 支持 Keras,入门已经没什么难度了.并且预见之后的有部分工作是在 Android 上进行,TensorFlow Lite 估计也跑不了.

计划上近期只是 TF 的入门,以 Python 为主.

安装 Tensorflow

win10 下基本上可以概括成

  • 安装 Python
  • pip 安装 tensorflow
  • 安装 GPU 驱动
  • 安装 CUDA/cuDNN
  • 验证

Python 环境

非常多的文章推荐使用 Anaconda ,但是 Anaconda 还是过重了,就入门的目的而言.

这里仅是 Python 3.9 + virtualenv virtualenvwrapper 的组合.

因为还需要跑别的环境,virtualenv 生成一个专用的 Python 环境.

  • Python 直接由官网下载安装即可
  • virtualenv 直接 pip install virtualenv,它能生成一个 python 的虚拟运行环境.
  • virtualenvwrapper 是 virtualenv 的后端,可以全局管理生成的环境,但也不是必须的.pip install virtualenvwrapper

虚拟环境

创建一个虚拟环境,但是 win 下要进入虚拟环境需要执行脚本,win10 默认是禁止执行脚本,需要设置运行执行.

1
2
3
4
5
6
7
8
9
10
11
virtualenv tf

# 设置允许执行脚本
set-executionpolicy remotesigned

# 切换到虚拟环境 tf
cd tf/Scripts/
./activate

# 退出虚拟环境 tf
deactivate

安装Tensorflow

在 2.1 版本以后 gpu 和 cpu 支持已经合并了,没必要再单独安装 tensorflow-gpu.

网络问题就不提了,换源或者怎么样,直连非常慢.

1
pip install tensorflow

GPU 驱动

CUDA10.1 以上官网给的要求是 418.x 以上驱动.如果不是在 NVIDIA 驱动程序下载 下载.

CUDA/cuDNN

在很多文章中提到要到官网对照 tf 版本和 cuda/cuDnn 的版本,在 Build from source on Windows 查找版本对应关系.有时对应关系查不到,请切换到英文版本.

  • 2.2 版本却是 cuda10.1 和 cuDnn7.4 但是 cuDnn7.4 根本就没有对应 cuda10.1 的版本.

  • 2.5 对应的是 cuDNN 8.1 和 CUDA 11.2.

安装 CUDA

  • 比较坑的一点是你需要先安装 Visual Studio 2019,cuda 安装时需要编译点什么东西.下载 Visual Studio 2019 Community 一路默认配置即可.
  • CUDA Toolkit Archive 下载 cuda 版本, 2~3 G 之间,最好不要使用其他渠道下载.
  • 一路默认配置安装到底.
  • 默认是在 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v版本号 看到有文件了,即安装成功.

安装 cuDNN

  • cudnn 需要注册一个账户,基本什么邮箱都可以.
  • 一定要选择对应 cuda 版本的 cudnn,这里是 cudnn-10.1-windows10-x64-v7.6.5.32.
  • 解压后文件夹的 /bin /include /lib 都复制到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v版本号.

测试

进入 tf 的虚拟环境

1
2
3
4
5
import tensorflow as tf
a = tf.test.is_built_with_cuda() # 判断CUDA是否可以用
b = tf.test.is_gpu_available(cuda_only=False,min_cuda_compute_capability=None) # 判断GPU是否可以用
print(a)
print(b)

最后输出 True True 表明 cuda 和 gpu 可用了.

import tensorflow as tf 遇到的两个问题

  • Could not find the DLL(s) 'msvcp140_1.dll',这里需要到提示 the-latest-supported-visual-c-downloads 下载支持包,安装一下即可.
  • Could not load dynamic library 'cudart64_101.dll'; dlerror: cudart64_101.dll not found,cudart64_101.dll 是 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin 下的一个文件,如果提示缺失到 CUDART64_101.DLL 下载,解压后添加到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin 下,重启即可.

结语

正式开始机器学习的入门,希望能啃下来…

最终算是额外耽误了一年的时间,时间不等人,加油.