Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Limit number of cores used in Keras

I have a shared machine with 64 cores on which I have a big pipeline of Keras functions that I want to run. The thing is that it seems that Keras automatically uses all the cores available and I can't do that.

I use Python and I want to run 67 neural networks in a for loop. I would like to use half of the available cores.

I can't find any way of limiting the number of cores in Keras... Do you have any clue?

like image 670
Mohamed AL ANI Avatar asked Sep 26 '17 08:09

Mohamed AL ANI


2 Answers

As @Yu-Yang suggested, I used these lines before each fit:

from keras import backend as K
K.set_session(K.tf.Session(config=K.tf.ConfigProto(intra_op_parallelism_threads=32,
                                                   inter_op_parallelism_threads=32)))

Check the CPU usage (htop) : htop example

like image 168
Mohamed AL ANI Avatar answered Nov 20 '22 18:11

Mohamed AL ANI


As mentioned in this solution, (https://stackoverflow.com/a/54832345/5568660)

if you want to use this using Tensforflow or Tensorflow_gpu, you can directly use the tf.config and feed it to the session:

config = tf.ConfigProto(intra_op_parallelism_threads=32, 
                        inter_op_parallelism_threads=32, 
                        allow_soft_placement=True)

session = tf.Session(config=config)
like image 25
Shalini Maiti Avatar answered Nov 20 '22 17:11

Shalini Maiti