为 32 核计算机优化 Tensorflow

Optimizing Tensorflow for a 32-cores computer

我在一台 Intel Xeon 机器上 运行ning tensorflow 代码,有 2 个物理 CPU 每个有 8 个内核和超线程,总共有 32 个可用的虚拟内核。但是,我 运行 保持系统监视器打开的代码,我注意到这 32 个 vCore 中只有一小部分被使用,平均 CPU 使用率低于 10%。

我是 tensorflow 的新手,我还没有以任何方式配置会话。我的问题是:我应该以某种方式告诉 tensorflow 它可以使用多少个内核?或者我应该假设它已经在尝试使用所有这些但其他地方存在瓶颈? (比如访问硬盘慢)

TensorFlow 默认会尝试使用所有可用的 CPU 资源。您不需要为它配置任何东西。 CPU 使用率低的原因可能有很多。这里有一些可能性:

  • 正如您所指出的,最常见的情况是输入管道缓慢。
  • 您的图表可能主要是线性的,即对相对少量数据进行的狭长操作链,每个操作都取决于前一个操作的输出。当单个操作在较小的输入上 运行 时,并行化它几乎没有好处。
  • 您也可能会受到内存带宽的限制。
  • 单个 session.run() 调用花费的时间很少。因此,您最终会在 python 和执行引擎之间来回切换。

您可以找到有用的建议here

使用timeline查看

时执行的内容