在WSL2上安装Tensorflow-GPU

12

有人在带有NVIDIA GPU的WSL2上成功安装了Tensorflow-GPU吗?我在WSL2上安装了Ubuntu 18.04,但是无法安装NVIDIA驱动程序。由于我感到困惑,因此任何帮助将不胜感激。


你有按照这个指南操作吗? https://docs.nvidia.com/cuda/wsl-user-guide/index.html#running-dlfw - Fariborz Ghavamian
@FariborzGhavamian 是的,我有。我有一张NVIDIA Titan V通过Thunderbolt3连接到Dell Precision 7540上的Razor Core X Chroma eGPU。该卡在Windows中被Tensorflow 2.3检测到,但在Ubuntu-18.04 LTS中的Docker中无法找到GPU。 - A. Hendry
4个回答

12

所以我刚刚让它运行了。

你需要遵循的步骤在这里。为了概括它们:

  1. 注册Windows Insider计划并获取开发版本的Windows,以便您拥有最新版本
  2. 安装WSL 2
  3. 从Windows商店中安装Ubuntu
  4. 在Windows上安装WSL 2 CUDA驱动程序
  5. 安装CUDA工具包
  6. 安装cudnn(您可以从Windows下载Linux版本,然后将文件复制到Linux)
  7. 如果您遇到“无法分配内存”的内存错误,则可能需要增加WSL可以获得的内存量
  8. 然后安装tensorflow-gpu
  9. 祈祷它能正常工作

我一路上遇到的问题:

  • 如果第一次打开Ubuntu时出现错误,则需要在BIOS中启用虚拟化
  • 如果您无法在安装说明中运行./Blackscholes示例,则可能没有正确的Windows版本! 您必须拥有正确的版本
  • 如果在运行tf时遇到“无法分配内存”的内存错误,则需要给WSL更多RAM。 它默认只能访问您内存的一半
    1. 在Windows用户目录下创建一个.wslconfig文件,其中包含您想要的内存量。 我的看起来像:
[wsl2]
memory=16GB 

运行代码后进行编辑

相比我直接在Windows上运行时,速度慢了很多。从每个周期1分钟变成了5分钟。我打算采用双启动方式。


链接的指令错误且不足。例如,为了验证您是否在运行WSL2下执行,他们说:启动Linux分发版并确保使用以下命令在WSL 2模式下运行:wsl.exe --list -v 命令 - user3673
我在安装cudnn时遇到了麻烦。你能告诉我你是如何在wsl上安装cudnn的吗? - ma7555
不行!tensorflow-gpu已经过时了。 - undefined

1
这些是我在Ubuntu 20.04上必须遵循的步骤。我不再使用dev通道,beta通道适用于此用例并且更加稳定。
安装WSL2
从Windows商店安装Ubuntu 20.04
https://developer.nvidia.com/cuda/wsl/download下载Windows的Nvidia驱动程序
在WSL中安装nvcc: sudo apt install nvidia-cuda-toolkit 检查是否存在: nvcc --version 对于我的用例,我进行数据科学,并已经安装了anaconda。我创建了一个环境:
conda create --name tensorflow
conda install tensorflow-gpu

然后在激活环境的情况下,使用这个小Python程序进行测试:

import tensorflow as tf
tf.config.list_physical_devices('GPU')
sys_details = tf.sysconfig.get_build_info()
cuda = sys_details["cuda_version"]
cudnn = sys_details["cudnn_version"]
print(cuda, cudnn)

由于某些原因,我的机器在没有安装nvcc的情况下无法找到GPU,并且实际上会出现错误消息说找不到nvcc。
我找到的在线教程让你分别下载CUDA和CUDNN,但我认为NVCC包括了CUDNN,因为它在某种程度上就在那里。

1
我刚刚尝试了一下,sys_details确实显示了一个cuda版本,但是tf.config.list_physical_devices('GPU')返回了一个空列表。 - Ahmed Mohamedeen

0

我可以确认,我能够在WSL2上实现此功能而无需使用Docker,感谢以下文章:

https://qiita.com/Navier/items/cf551908bae707db4258

请务必更新到驱动程序版本460.15,而不是CUDA文档中列出的455.41

请注意,此功能不适用于TCC模式下的卡(仅适用于WDDM)。此外,请确保将文件放置在Linux文件系统上(即不要放在挂载驱动器上,如/mnt/c/)。在Linux文件系统上性能显著更快(这与WSL 1与WSL 2的实现差异有关;请参见123)。

注意:还请参见{{link4:Keras / TensorFlow中的类生成器(继承序列)是否线程安全?}}


1
该文章不是用英语写的。 - asaf92
@asaf92 我不需要理解普通话就能按照步骤进行(我能够读懂其中的含义)。但是,如果必要的话,你可以使用谷歌翻译。这种方法在我撰写答案时对我有效。 - A. Hendry

0
我想指出,在WSL中使用Anaconda安装cudatoolkit和cudnn似乎不起作用。
可能存在路径问题,导致TF只在系统路径而非conda环境中寻找所需的文件。

使用被接受的答案。它不涉及conda。所有带有conda的答案都不起作用,是的。 - A. Hendry

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接