【问题标题】:Does Tensorflow automaticaly use multiple CPUs?Tensorflow 会自动使用多个 CPU 吗?
【发布时间】:2019-10-04 19:17:09
【问题描述】:

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

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

提前问候和感谢!

【问题讨论】:

    标签: tensorflow deep-learning c-api


    【解决方案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 资源可用。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    • 2017-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多