Keras 没有使用完整的 CPU 内核进行训练

Posted

技术标签:

【中文标题】Keras 没有使用完整的 CPU 内核进行训练【英文标题】:Keras not using full CPU cores for training 【发布时间】:2019-01-06 07:25:31 【问题描述】:

我正在使用 Tensorflow 后端的 Keras 在我的机器上的一个非常庞大的数据集上训练 LSTM 模型。我的机器有 16 个内核。在训练模型时,我注意到所有核心的负载都低于 40%。

我已经通过不同的来源寻找解决方案,并尝试提供在后端使用的核心

config = tf.ConfigProto(device_count="CPU": 16)
backend.tensorflow_backend.set_session(tf.Session(config=config))

即使在那之后负载仍然相同。

这是因为模型很小吗?一个纪元大约需要 5 分钟。如果它使用全核,则可以提高速度。

如何告诉 Keras 或 Tensorflow 使用全部可用内核(即 16 个内核)来训练模型。??

我已经解决了这些 *** 问题并尝试了其中提到的解决方案。它没有帮助。

Limit number of cores used in Keras

【问题讨论】:

【参考方案1】:

您如何准确地训练模型?您可能想考虑使用 model.fit_generator() 但使用 Keras Sequence 对象而不是自定义生成器。这允许安全地使用多处理并将导致所有内核都被使用。

您可以查看Keras docs 的示例。

【讨论】:

如果所有核心都用于训练,系统/机器会受到怎样的影响?就我而言,我没有单独的培训系统,因此我必须在我的个人机器上对其进行培训。在培训期间,我是否仍可以将系统用于浏览和编码等常规内容?为什么我只能使用我的 2 个核心 atm 中的 1 个,但因为除了训练之外我还必须工作,这对我来说没问题。另一方面,如果我仍然可以同时训练两个核心,那就更好了:)

以上是关于Keras 没有使用完整的 CPU 内核进行训练的主要内容,如果未能解决你的问题,请参考以下文章

TesnsorFlow后端,CPU训练

使用 Keras 进行深度学习 - 训练时没有学习率

Jupyter:内核似乎已经死亡。它将自动重启。 (与Keras相关)

训练某些网络时,GPU 上的 Keras(Tensorflow 后端)比 CPU 上慢

优化用于 Keras 模型训练的 GPU 使用

具有Tensorflow后端的Keras - 运行在CPU上预测但适合GPU