【问题标题】:GPU Memory in TensorFlow container with NVIDIA SLI使用 NVIDIA SLI 的 TensorFlow 容器中的 GPU 内存
【发布时间】:2020-04-30 09:29:06
【问题描述】:

我已经构建了一台机器学习计算机,其中有两个 RTX 2070 SUPER NVIDIA 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 tensorflow nvidia


    【解决方案1】:

    Here is an awesome link from docker.com that explains why your desired workflow won't work. 它也不适用于 RAPIDS cudf。 Docker Desktop 使用 Hyper V 工作,它隔离了硬件并且不会像 Linux 驱动程序所期望的那样访问 GPU。此外,nvidia-docker 仅适用于 linux

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

    将来有可能,WSL 版本将允许您在 Windows 上运行 RAPIDS,让您自己制作 Windows 解决方案。

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-25
      • 1970-01-01
      • 1970-01-01
      • 2020-02-05
      • 2017-10-15
      • 2019-03-17
      相关资源
      最近更新 更多