在 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 进行组合,特别是混淆矩阵的每个部分一个。
在 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 进行组合,特别是混淆矩阵的每个部分一个。