Tensorflow:将 CUDA_VISIBLE_DIVICES 设置为不同的值时,GPU util 的巨大差异

Posted

技术标签:

【中文标题】Tensorflow:将 CUDA_VISIBLE_DIVICES 设置为不同的值时,GPU util 的巨大差异【英文标题】:Tensorflow: GPU util big difference when setting CUDA_VISIBLE_DIVICES to different values 【发布时间】:2018-04-17 12:01:03 【问题描述】:

Linux:Ubuntu 16.04.3 LTS(GNU/Linux 4.10.0-38-generic x86_64)

Tensorflow:从源代码编译,1.4

GPU:4xP100

我正在尝试新发布的对象检测教程培训计划。 我注意到当我将 CUDA_VISIBLE_DEVICES 设置为不同的值时存在很大差异。具体来说,当它设置为“gpu:0”时,gpu util 是 80%-90% 相当高,但是当我将其设置为其他 gpu 设备时,例如 gpu:1, gpu:2 etc. gpu util在10%-30%之间非常低。

至于训练速度,好像差不多,比只用CPU的时候快很多。

我只是好奇这是怎么发生的。

【问题讨论】:

【参考方案1】:

As this answer mentionsGPU-Util 是衡量每个 GPU 计算的使用/业务的指标。

我不是专家,但根据我的经验,GPU 0 通常是大多数进程默认运行的地方。 CUDA_VISIBLE_DEVICES 设置您在该 bash 上运行的进程看到的 GPU。因此,通过将 CUDA_VISIBLE_DEVICES 设置为 gpu:1/2,您可以使其在不太繁忙的 GPU 上运行。

此外,您只报告了 1 个值,理论上每个 GPU 应该有一个;有可能您只查看 GPU-0 的 GPU-util,如果您不使用它当然会减少。

【讨论】:

以上是关于Tensorflow:将 CUDA_VISIBLE_DIVICES 设置为不同的值时,GPU util 的巨大差异的主要内容,如果未能解决你的问题,请参考以下文章

将保存的tensorflow模型转换为tensorflow Lite的正确方法是啥

将 tensorflow 1 contrib 转换为 tensorflow 2 Keras 版本

如何将 NumPy 数组图像转换为 TensorFlow 图像?

如何将 CoreML 模型转换为 TensorFlow 模型?

将 Keras 模型集成到 TensorFlow

如何将 TensorFlow 模型部署到云端?