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 内核进行训练的主要内容,如果未能解决你的问题,请参考以下文章
Jupyter:内核似乎已经死亡。它将自动重启。 (与Keras相关)