Tensorflow 会自动使用多个 CPU 吗?
Posted
技术标签:
【中文标题】Tensorflow 会自动使用多个 CPU 吗?【英文标题】:Does Tensorflow automaticaly use multiple CPUs? 【发布时间】:2019-10-04 19:17:09 【问题描述】:我编写了一些代码,使用 Tensorflow 的 C API(仅限 CPU)进行推理。它在集群节点上运行,我可以在其中访问 24 个 CPU 和 1 个 GPU。我不使用 GPU,因为稍后我需要仅在 CPU 上执行任务。
不知何故,每次我从其他程序 (OpenFOAM) 调用 Tensorflow 代码时,Tensorflow 似乎都在所有并行化的 CPU 上运行。但是我没有做任何事情来导致这种行为。现在想知道Tensorflow是否默认做这种并行化?
提前问候和感谢!
【问题讨论】:
【参考方案1】:我不确定您是如何使用 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
【讨论】:
您好,谢谢!我使用的是 C API,只做推理,根本没有训练。 这似乎是在回答一个不同的问题。此外,随着从 TF 1.x 到 2.x 的变化,物理资源的配置方式发生了变化,因此很难辨别是否需要进行特殊配置才能使物理 cpu/gpu 资源可用。跨度>以上是关于Tensorflow 会自动使用多个 CPU 吗?的主要内容,如果未能解决你的问题,请参考以下文章
TensorFlow——tensorflow指定CPU与GPU运算
训练神经网络时,Tensorflow 完成后会自动恢复到最佳 epoch 吗?
如何检查keras tensorflow后端是GPU还是CPU版本? [复制]