在 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 后,Android Studio 模拟器无法在 Windows 11 上运行
Windows学习总结(23)——在 Windows 10 子系统 ubuntu 上利用 WSL2 安装 docker 的 2 种方式
Windows学习总结(23)——在 Windows 10 子系统 ubuntu 上利用 WSL2 安装 docker 的 2 种方式