带有NVIDIA SLI的TensorFlow容器中的GPU内存



我用两个RTX 2070 SUPER NVIDIA GPU构建了一台机器学习计算机,这两个GPU与SLI Bridge、Windows操作系统相连(在NVIDIA控制面板中验证了SLI(。

我已使用http://ai-benchmark.com/alpha并取得了令人印象深刻的成绩。

为了充分利用使用GPU执行科学任务的库(cuDF(,我创建了一个TensorFlow Linux容器:

https://www.tensorflow.org/install/docker

使用"latest-gpu-py3-jupyter"标签。

然后,我将PyCharm连接到这个容器,并将其解释器配置为同一项目的解释器(我在容器中安装了主机项目文件夹(。

当我在容器上运行相同的基准测试时,我会得到错误:

tensorflow.python.framework.errors_impl.ResourceExhaustedError: OOM when allocating tensor with shape[50,56,56,144] and type float on /job:localhost/replica:0/task:0/device:CPU:0 by allocator cpu
[[node MobilenetV2/expanded_conv_2/depthwise/BatchNorm/FusedBatchNorm (defined at usr/local/lib/python3.6/dist-packages/ai_benchmark/utils.py:238) ]]
Hint: If you want to see a list of allocated tensors when OOM happens, add report_tensor_allocations_upon_oom to RunOptions for current allocation info.

此错误与容器内GPU内存耗尽有关。

为什么windows主机上的GPU成功处理了计算,而Linux容器上的GPU耗尽了内存?

这有什么不同?这与容器中的内存分配有关吗?

这里有一个来自docker.com的很棒的链接,解释了为什么您想要的工作流无法工作。它也不适用于RAPIDSCudf。Docker Desktop使用Hyper V工作,它隔离了硬件,不会像Linux驱动程序所期望的那样访问GPU。此外,nvidia-docker是仅限linux的

我可以告诉您,RAPID(cudf(目前也不支持此实现。然而,Windows与Linux主机的配合确实更好。对于tensorflow和cudf,我强烈建议您使用(或双启动(推荐的操作系统之一作为主机操作系统,如下所示:https://rapids.ai/start.html#prerequisites.如果您的工作流程中需要Windows,您可以在Linux主机上运行它。

将来,WSL版本有可能允许您在Windows上运行RAPID,让您自己制定一个在Windows上的解决方案。

希望这能有所帮助!

最新更新