我正在使用 Keras(tf 后端)来训练神经网络;我正在使用 Keras 中的多 gpu 选项使用 GPU 进行加速。
出于某种原因,该程序似乎重载了其中一张卡,而其他卡只加载了少量。请参阅下面的输出nvidia-smi。
+-----------------------------------------------------------------------------+
| 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 |
|=============================================================================|
+-----------------------------------------------------------------------------+
为什么会这样?这是否意味着其他卡没有为这项工作做出尽可能多的贡献?
编辑:
对 multi_gpu_model 的调用是:
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.
请注意,我使用的是keras.utils.multi_gpu_model而不是tf...版本。它似乎起作用,因为它肯定会导致所有 4 个 GPU 都处于某种负载下,这只是奇怪的不平衡。