10

我在 4x RTX 3090 上运行使用 TensorFlow 1.x 编写的模型,与1x RTX 3090 相比,启动训练需要很长时间。尽管随着训练的开始,它在 4x 中比在 1x 中更早完成. 我在两个 GPU 中都使用了 CUDA 11.1 和 TensorFlow 1.14。

其次,当我使用 1x RTX 2080ti、CUDA 10.2 和 TensorFlow 1.14 时,与 1x RTX 3090 和 11.1 CUDA 和 Tensorflow 1.14 相比,开始训练所需的时间更少。暂定,在 1x RTX 2080ti 中需要 5 分钟,在 1x RTX 3090 中需要 30-35 分钟,在 4x RTX 3090 中需要 1.5 小时来开始对其中一个数据集的训练。

如果有人可以帮助我解决此问题,我将不胜感激。

我在 2080ti 和 3090 机器上使用 Ubuntu 16.04、Core™ i9-10980XE CPU 和 32 GB 内存。

编辑:根据this ,我发现TF在Ampere架构GPU中的启动时间很长,但我仍然不清楚是否是这种情况;并且,如果这种情况,是否存在任何解决方案?

4

3 回答 3

8

TF 1.x 没有 CUDA 11.1 的二进制文件,所以在开始时,编译需要一些时间。因为 RTX 3090 使用 PTX 和 JIT 编译器进行编译,所以需要很长时间。
一个通用的解决方案是增加缓存大小,使用代码:-“export CUDA_CACHE_MAXSIZE=2147483648”(这里 2147483648 是缓存大小,您可以通过考虑内存限制和它在帐户中其他进程的使用情况来设置任何数字) . 有关说明,请参阅https://www.tensorflow.org/install/gpu。由此在以后的运行中,启动时间会很小。但即使在此之后,生成的二进制文件(在此开始时)将与 CUDA 11.1 不兼容

最好的方法是将代码从 TF 1.x 迁移到 2.x(2.4+) 以使其在 RTX 30XX 系列上运行,或者尝试使用 CUDA 11.1 从源代码编译 TF 1.x(对此不确定)。
于 2020-12-10T11:09:11.930 回答
4

正如 Thunder 解释的那样,Nvidia Ampere GPU 不支持 TensorFlow 1.x,而且看起来永远不会支持,因为 Ampere 流式多处理器 (SM_86) 仅在 CUDA 11.1 上受支持,请参阅https://forums.developer.nvidia。 com/t/can-rtx-3080-support-cuda-10-1/155849/2和 TensorFlow 1.x 暂时不完全支持新版本的 CUDA,原因可能与链接中描述的类似以上。不幸的是,不再支持或维护 TensorFlow 版本 1.x,请参阅https://github.com/tensorflow/tensorflow/issues/43629#issuecomment-700709796

但是,如果您必须使用 Stylegan 2 模型,您可能会对 Nvidia Tensorflow 有一些运气,它显然支持 Ampere GPU 上的 1.15 版,请参阅https://developer.nvidia.com/blog/accelerating-tensorflow-on- a100-GPU/

于 2020-12-23T23:30:42.437 回答
0

这是在 linux 上提出的解决方案: https ://www.pugetsystems.com/labs/hpc/How-To-Install-TensorFlow-1-15-for-NVIDIA-RTX30-GPUs-without-docker-or-CUDA-install -2005/

在 Windows 上,我设法让我的 RTX3080TI 使用带有 directml 的 WSL2 与 TF 1.15 一起工作:

https://docs.microsoft.com/en-us/windows/ai/directml/gpu-tensorflow-wsl

结果比我的 RTX2080TI 快 1.5 倍。

于 2022-01-06T14:49:03.723 回答