在 TensorFlow 的 MirroredStrategy 中检测活跃使用的 GPU(不可用)

Detecting actively used GPUs in TensorFlow's MirroredStrategy (not available)

在 TensorFlow 中,检测可用 GPU 的数量是一项可以解决的微不足道的任务

但是,在 MirroredStrategy 的上下文中,除非用户提供正在使用的 GPU 数量的信息,否则据我所知不可能实际获得活动 GPU 的数量。

这会导致一些奇怪的行为,例如,当定义 custom keras metric such as F1 Score by extending the abstract class Keras Metric 时:例如使用 4 个 GPU 进行训练时,指标分数 总和 ,导致指标不再定义为从 0 到 1,而是从 0 到 4。

使用默认的 Keras Metrics 时不会发生这种情况,此时我正在调查他们的源代码,试图了解他们是如何避免这种情况的:例如,我希望他们有一种方法来获取正在使用的 GPU 数量然后简单地除以这个数字。

你有什么建议吗?

因此,虽然我还没有解决如何获得 已用 GPU 的数量,但我已经解决了如何在我的用例中完全避免对它的需求,归结为成为权重的集合。

要正确聚合权重,可以在 add_weight method one of the AggregationMethod.

中指定

在我的用例中,同样,由于我需要混淆指标的各个组成部分的总和聚合,例如真阳性等......,让 TensorFlow 处理一些更复杂的用例,我最终使用 Sum 指标 class 进行组合,特别是混淆矩阵的每个部分一个。