How-To: Run Keras (Multi-GPU)¶
Because the GPU nodes med030[1-4]
has four GPU units we can train a model by using multiple GPUs in parallel. This How-To gives an example with Keras 2.2.4 together and tensorflow. Finally soem hints how you can submit a job on the cluster.
Hint
With tensorflow > 2.0 and newer keras version the multi_gpu_model
is deprecated and you have to use the MirroredStrategy
.
Keras code¶
we need to import the multi_gpu_model
model from keras.utils
and have to pass our actual model (maybe sequential Keras model) into it. In general Keras automatically configures the number of available nodes (gpus=None
). This seems not to work on our system. So we have to specify the numer of GPUs, e.g. two with gpus=2
. We put this in a try catch environment that it will also work on CPUs.
from keras.utils import multi_gpu_model
try:
model = multi_gpu_model(model, gpus=2)
except:
pass
That's it!
Please read here on how to submit jobs to the GPU nodes.
Conda environment¶
All this was tested with the following conda environment:
name: cuda channels:
- conda-forge
- bioconda
- defaults
dependencies:
- keras=2.2.4
- python=3.6.7
- tensorboard=1.12.0
- tensorflow=1.12.0
- tensorflow-base=1.12.0
- tensorflow-gpu=1.12.0