KerasをマルチマシンマルチコアCPUシステムで実行する


10

KerasのLSTMを使用して(Theanoバックグラウンドを使用して)Seq2Seqモデルに取り組んでいます。数MBのデータでもトレーニングに数時間かかるため、プロセスを並列化したいと考えています。

GPUはCPUよりも並列化がはるかに優れていることは明らかです。現時点では、使用できるのはCPUだけです。16 CPUにアクセスできました(コアあたり2スレッドXソケットあたり4コアX 2ソケット)

Theanoのマルチコアサポートのドキュメントから、1つのソケットの4つのコアすべてを使用することができました。したがって、基本的にCPUの使用率は400%で4CPUが使用され、残りの12 CPUは未使用のままです。どうすればそれらも活用できますか。Tensorflowが機能する場合は、Theano背景の代わりに使用することもできます。

ここに画像の説明を入力してください

回答:


6

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>

Rでコアの数を設定するためのこのコードに感謝します(Rでケラスを使用していて、コアの一部のみを使用しています...)。特にテンソルフローでは。ありがとう、ミラノ
gutompf 2018年

2
Pythonでos.environ [var]を使用するのと同様に、Sys.setenv()を使用してRで環境変数を設定できます。
トーマスクレバーグ2018年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.