在 WSL2 上安装 TensorFlow-GPU

Posted

技术标签:

【中文标题】在 WSL2 上安装 TensorFlow-GPU【英文标题】:Install Tensorflow-GPU on WSL2 【发布时间】:2020-12-20 02:35:19 【问题描述】:

有没有人在带有 NVIDIA GPU 的 WSL2 上成功安装了 Tensorflow-GPU?我在 WSL2 上有 Ubuntu 18.04,但正在努力安装 NVIDIA 驱动程序。如果我迷路了,任何帮助将不胜感激。

【问题讨论】:

您是否遵循了本指南? docs.nvidia.com/cuda/wsl-user-guide/index.html#running-dlfw @FariborzGhavamian 是的,我做到了。我有一个使用 Thunderbolt3 通过 Razor Core X Chroma eGPU 连接到 Dell Precision 7540 的 NVIDIA Titan V。该卡在 Windows 中被 Tensorflow 2.3 检测到,但 Ubuntu-18.04 LTS 中的 Docker 说它找不到 GPU。 【参考方案1】:

所以我刚刚开始运行。

您需要遵循的步骤是here。总结一下:

    注册windows Insider程序,获取windows的开发版本,让你拥有最新版本 安装wsl 2 从 Windows 商店安装 Ubuntu 在 windows 上安装 wsl 2 cuda 驱动 安装 cuda 工具包 安装cudnn(可以从windows下载linux版本,然后拷贝文件到linux) 如果您遇到诸如“无法分配内存”之类的内存错误,那么您可能需要增加 wsl 可以获得的内存量 然后安装tensorflow-gpu 祈祷它有效

我遇到的错误:

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

运行一些代码后编辑

这比我直接在 Windows 上运行时要慢得多。我从每个 epoch 1 分钟到 5 分钟。我只是要双启动。

【讨论】:

链接的指令既错误又不充分。例如,要验证您是否在 WSL2 下运行,他们会说:启动 Linux 发行版并使用以下命令确保它在 WSL 2 模式下运行:wsl.exe --list -v 命令 我在安装 cudnn 时遇到问题。你能告诉你是如何在wsl上安装cudnn的吗【参考方案2】:

感谢以下文章,我可以确认我无需在 WSL2 上使用 Docker 即可完成这项工作:

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

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

注意,这不适用于 TCC 模式下的卡(仅限 WDDM)。此外,请务必将您的文件放在 Linux 文件系统上(即,不要放在安装驱动器上,例如 /mnt/c/)。 Linux 文件系统的性能明显更快(这与 WSL 1 与 WSL 2 的实现差异有关;请参阅 1、2 和 3)。

注意:另见Is the class generator (inheriting Sequence) thread safe in Keras/Tensorflow?

【讨论】:

文章不是英文的 @asaf92 我不需要懂普通话就能按照这些步骤进行操作(我能够在字里行间阅读)。但是,如有必要,您可以使用谷歌翻译。在我写这个答案时,这种方法对我有用。【参考方案3】:

这些是我在 Ubuntu 20.04 中必须遵循的步骤。我不再使用开发频道,Beta 频道适用于这个用例并且更加稳定。

安装 WSL2

从 Windows 应用商店安装 Ubuntu 20.04

从以下位置安装适用于 Windows 的 Nvidia 驱动程序:https://developer.nvidia.com/cuda/wsl/download

在 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,因为它是 . . .不知何故。

【讨论】:

我刚刚尝试过,sys_details 确实显示了 cuda 版本,但 tf.config.list_physical_devices('GPU') 返回空列表【参考方案4】:

我只想指出,使用 anaconda 安装 cudatoolkit 和 cudnn 在 wsl 中似乎不起作用。

也许路径存在一些问题,导致 TF 仅在系统路径而不是 conda 环境中查找所需文件。

【讨论】:

使用接受的答案。它不涉及康达。 conda 的所有答案都不起作用,是的。

以上是关于在 WSL2 上安装 TensorFlow-GPU的主要内容,如果未能解决你的问题,请参考以下文章

WSL2的安装应用

WSL2的安装应用

安装 WSL2 后,Android Studio 模拟器无法在 Windows 11 上运行

Windows学习总结(23)——在 Windows 10 子系统 ubuntu 上利用 WSL2 安装 docker 的 2 种方式

Windows学习总结(23)——在 Windows 10 子系统 ubuntu 上利用 WSL2 安装 docker 的 2 种方式

具有多个cuda版本的系统上的tensorflow-gpu安装问题