web-dev-qa-db-ja.com

Kerasを複数のコアで実行する方法は?

私は、クラスター上でTensorflowバックエンドでKerasを使用しています(ニューラルネットワークを作成しています)。クラスター(複数のコア)でマルチスレッドで実行するにはどうすればよいですか?これはKerasによって自動的に行われますか?たとえば、Javaでは、各スレッドがコア上で実行される複数のスレッドを作成できます。

可能であれば、いくつのコアを使用する必要がありますか?

11
BlackHawk

Tensorflowは、単一のマシンで使用可能なコアと同じ数のコアで計算を自動的に実行します。

分散クラスターがある場合は、必ず https://www.tensorflow.org/how_tos/distributed/ の指示に従ってクラスターを構成してください。 (たとえば、tf.ClusterSpecを正しく作成するなど)

デバッグを支援するために、セッションで_log_device_placement_構成オプションを使用して、計算が実際に配置される場所をTensorflowに出力させることができます。 (注:これは、GPUと分散Tensorflowの両方で機能します。)

_# Creates a session with log_device_placement set to True.
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
_

Tensorflowの計算配置アルゴリズムは、小さな計算グラフではうまく機能しますが、特定のデバイスに手動で計算を配置することで、大きな計算グラフでより良いパフォーマンスを得ることができる場合があります。 (たとえば、with tf.device(...):ブロックを使用します。)

9
saeta

テンソルフローのセッションを構成し、このセッションをkerasバックエンドに使用できます

 session_conf = tensorflow.ConfigProto(intra_op_parallelism_threads=8, inter_op_parallelism_threads=8)
 tensorflow.set_random_seed(1)
 sess = tensorflow.Session(graph=tensorflow.get_default_graph(), config=session_conf)
 keras.backend.set_session(sess)
3
Milan_Harkhani