让 Keras 在多机多核 cpu 系统上运行

数据挖掘 张量流 喀拉斯 西阿诺 平行线
2021-09-16 02:41:48

我正在使用 Keras 的 LSTM(使用 Theano 背景)研究Seq2Seq 模型,我想并行化这些过程,因为即使是几 MB 的数据也需要几个小时的训练。

很明显,GPU 在并行化方面比 CPU 好得多。目前,我只有 CPU 可以使用。我可以访问 16 个 CPU(每个核心 2 个线程 X 每个插槽 4 个核心 X 2 个插槽)

从 Theano 中的多核支持文档中,我设法使用了单个套接字的所有四个内核。因此,基本上 CPU 的使用率为 400%,使用了 4 个 CPU,其余 12 个 CPU 仍未使用。我也如何利用它们。如果可以的话,也可以使用 Tensorflow 代替 Theano 背景。

在此处输入图像描述

1个回答

为了设置 Theano 中使用的线程数(以及 CPU 内核数),您需要在环境中设置一些参数:

import os
os.environ['MKL_NUM_THREADS'] = '16'
os.environ['GOTO_NUM_THREADS'] = '16'
os.environ['OMP_NUM_THREADS'] = '16'
os.eviron['openmp'] = 'True'

这应该允许您使用所有 CPU 的所有内核。

当然,这也可以在 Tensorflow 中完成:

import tensorflow as tf
from keras.backend import tensorflow_backend as K

with tf.Session(config=tf.ConfigProto(
                    intra_op_parallelism_threads=16)) as sess:
    K.set_session(sess)
    <Your Keras code>