在 Tensorflow 中使用多个 CPU 核

Using multiple CPU Cores with Tensorflow

我正在 运行 在具有 4 个内核的 Linux 机器上进行 tensorflow 训练。 当检查 htop 的 cpu 利用率时,只有一个核心被完全利用,而其他核心的利用率仅为 ~15%(下图显示了 htop 的屏幕截图)。

如何确保 TF 正在使用所有 CPU 的全部容量?
我知道这个问题 - 如何使其适用于 Tensoflow 2?

.

我正在使用以下代码生成样本:

class WindowGenerator():

    def make_dataset(self, data, stride=1):
        data = np.array(data, dtype=np.float32)
        ds = tf.keras.preprocessing.timeseries_dataset_from_array(
            data=data,
            targets=None,
            sequence_length=self.total_window_size,
            sequence_stride=stride,
            shuffle=False,
            batch_size=self.batch_size,)
      
        ds = ds.map(self.split_window)
      
        return ds


    @property
    def train(self):
        return self.make_dataset(self.train_df)
    
    @property
    def val(self):
        return self.make_dataset(self.val_df)
    
    @property
    def test(self):
        return self.make_dataset(self.test_df, stride=24)

我正在使用以下代码 运行 模型训练。 sampleMgmt 属于 Class WindowGenerator。 early_stopping 定义训练终止标准。

history = model.fit(sampleMgmt.train, epochs=self.nrEpochs,
                  validation_data=sampleMgmt.val,
                  callbacks=[early_stopping],
                  verbose=1)

你试过吗?

config = tf.ConfigProto(device_count={"CPU": 8})
    with tf.Session(config=config) as sess:

(source)

最后,我在代码之外做了两件事,让 TF 使用所有可用的 CPU。

  1. 我使用了 SSD 而不是 HDD
  2. 我使用了 Google Cloud 中提供的 Tensorflow Enterprise Image,而不是 Deep Learning Image