我已经编写了一些代码来对Tensorflow的C API(仅CPU)进行推理。它运行在一个群集节点上,在这里我可以访问24个CPU和1个GPU。我不使用GPU,因为稍后需要执行仅CPU任务。
每次我从另一个程序(OpenFOAM)调用Tensorflow代码时,Tensorflow似乎都在并行化的所有CPU上运行。但是,我没有做任何导致这种现象的事情。现在我想知道Tensorflow是否默认执行此并行化处理?
致敬,谢谢!
答案 0 :(得分:1)
我不确定您如何使用tensorflow。但是典型的TensorFlow培训具有输入管道,可以将其视为ETL过程。以下是主要活动:
提取:从持久性存储中读取数据
转换:使用CPU内核对数据进行解析并执行预处理操作,例如图像解压缩,数据增强转换(例如随机裁切,翻转和颜色失真),混排和批处理。
加载:将转换后的数据加载到执行机器学习模型的加速器设备(例如GPU或TPU)上。
CPU通常在数据转换期间使用。在转换期间,将对数据输入元素进行预处理。为了提高预处理的性能,默认情况下它在多个CPU内核之间并行化。
Tensorflow提供了tf.data API,该API提供了tf.data.Dataset.map转换。为了控制并行性,映射提供了num_parallel_calls参数。
从此处了解更多信息: https://www.tensorflow.org/guide/performance/datasets