2
$\begingroup$

I'm using Keras (tf backend) to train a neural net; I'm accelerating with GPUs using the multi gpu options in Keras.

For some reason, the program seems to heavily load one of the cards and the others only lightly. See the output from nvidia-smi below.

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 418.40.04    Driver Version: 418.40.04    CUDA Version: 10.1     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla K80           Off  | 000004C3:00:00.0 Off |                    0 |
| N/A   73C    P0    75W / 149W |  10954MiB / 11441MiB |     75%      Default |
+-------------------------------+----------------------+----------------------+
|   1  Tesla K80           Off  | 0000268A:00:00.0 Off |                    0 |
| N/A   49C    P0    74W / 149W |  10954MiB / 11441MiB |     23%      Default |
+-------------------------------+----------------------+----------------------+
|   2  Tesla K80           Off  | 0000B08A:00:00.0 Off |                    0 |
| N/A   51C    P0    72W / 149W |  10954MiB / 11441MiB |     21%      Default |
+-------------------------------+----------------------+----------------------+
|   3  Tesla K80           Off  | 0000E703:00:00.0 Off |                    0 |
| N/A   65C    P0    62W / 149W |  10954MiB / 11441MiB |     21%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
+-----------------------------------------------------------------------------+

Why might this be? Does it mean that the other cards are not contributing as much as they could to the effort?

Edit:

call to multi_gpu_model is:

model = Model(inputs=[lsi, hi, hm, hc, hsc, ni, *embed_inputs], outputs=o)
model = multi_gpu_model(model, gpus=len(K.tensorflow_backend._get_available_gpus())) # transfer to multi-gpu so we're using all of them.

Note that I am using the keras.utils.multi_gpu_model and not the tf... version. It seems to work in that it definitely then causes all 4 GPUs to be placed under some load, it's just the unbalancing that's odd.

$\endgroup$
2
  • $\begingroup$ Can you share your code? Specifically the tf.keras.utils.multi_gpu_model call? $\endgroup$ Commented Mar 4, 2020 at 15:59
  • $\begingroup$ @BrianSpiering sure, done. $\endgroup$
    – Dan Scally
    Commented Mar 5, 2020 at 8:46

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.