1

我编写了一些代码,使用 Tensorflow 的 C API(仅限 CPU)进行推理。它在集群节点上运行,我可以在其中访问 24 个 CPU 和 1 个 GPU。我不使用 GPU,因为稍后我需要仅在 CPU 上执行任务。

不知何故,每次我从另一个程序 (OpenFOAM) 调用 Tensorflow 代码时,Tensorflow 似乎都在所有并行化的 CPU 上运行。但是我没有做任何事情来导致这种行为。现在我想知道 Tensorflow 是否默认进行这种并行化?

提前问候和感谢!

4

1 回答 1

2

我不确定你是如何使用 tensorflow 的。但是一个典型的 TensorFlow 训练有一个输入管道,可以被认为是一个 ETL 过程。以下是涉及的主要活动:

提取:从持久存储中读取数据

变换:使用 CPU 内核对数据进行解析和预处理操作,例如图像解压缩、数据增强变换(如随机裁剪、翻转和颜色失真)、洗牌和批处理。

加载:将转换后的数据加载到执行机器学习模型的加速器设备(例如 GPU 或 TPU)上。

CPU 通常在数据转换过程中使用。在转换期间,数据输入元素被预处理。为了提高预处理的性能,默认情况下它是跨多个 CPU 内核并行化的。

Tensorflow 提供了 tf.data API,它提供了 tf.data.Dataset.map 转换。为了控制并行度,map 提供了 num_parallel_calls 参数。

从这里阅读更多信息: https ://www.tensorflow.org/guide/performance/datasets

于 2019-05-17T13:39:32.413 回答