TensorFlow 是一个端到端开源机器学习平台。它拥有一个全面而灵活的生态系统,其中包含各种工具、库和社区资源,可助力研究人员推动先进机器学习技术的发展,并使开发者能够轻松地构建和部署由机器学习提供支持的应用。

https://tensorflow.google.cn/

起初,我尝试在Winddows通过wsl2的Docker使用Debian原始的安装jupyter notebook,并且直接使用pip安装TensorFlow,然而,随着进一步的使用,我发现了一个TensorFlow找不到GPU的警告,我们都知道,只使用CPU进行训练效率非常低下,于是我尝试在Docker上配置GPU支持,但这行不通,除GPU驱动程序之外还需要cuda工具包和cuDNN SDK。我尝试安装这些缺少的软件,但各种尝试总是以失败告终,我可能对Linux调用GPU的知识了解还不够,正如想要实现Windows PE系统的GPU支持,也是一个难题。

我查阅了很多关于”TensorFlow使用GPU”的文章,有较多文章还是使用TensorFlow 1.15及更早版本,这导致了教程的时效性难以保证。

于是我尝试直接在Windows安装jupyter notebook,并且已安装了NVIDIA(我的笔记本电脑使用的是NVIDIA)的显卡驱动程序,我的GPU型号是NVIDIA GeForce MX110。

NVIDIA GeForce MX110

驱动程序版本: 31.0.15.1694
驱动程序日期: 2022/7/21
DirectX 版本: 12 (FL 11.0)
物理位置: PCI 总线 1、设备 0、功能 0

利用率 0%
专用 GPU 内存 0.0/2.0 GB
共享 GPU 内存 0.0/9.9 GB
GPU 内存 0.0/11.9 GB

如您所见,这是一个低端的显卡,它似乎不支持cuda(支持列表可以在支持 CUDA® 的 GPU 卡找到),但是我在NVIDIA的控制面板里面又看到了cuda的设置,于是我决定赌一把。

先安装cuda,然后再安装cuDNN,需要适合您的电脑的版本,安装细节可以在显卡支持 TensorFlow找到。

安装完后增加这两者的环境变量,需要根据安装的位置、版本等实际情况增加系统Path环境变量。(我的是增加了图中的前5个)我偷懒选择cuda安装到了系统盘(懒到不想选择目录),推荐的做法是安装到系统盘之外以节省系统盘的空间。

最后,重启Windows,并使用TensorFlow测试一下GPU。

from tensorflow.python.client import device_lib

# 列出所有的本地机器设备
local_device_protos = device_lib.list_local_devices()
# 打印
# print(local_device_protos)

# 只打印GPU设备
[print(x) for x in local_device_protos if x.device_type == 'GPU']
import tensorflow as tf
print("Num GPUs Available: ", len(tf.config.experimental.list_physical_devices('GPU')))

OK,大功告成!现在TensorFlow可以使用GPU进行训练了。