1. 提问
Keras用了multi_gpu_model,但用Nvidia-smi看只用了一块显卡,其他的GPU利用率和显存占用还是很小。
2. 解决
Tensorflow的版本的问题。在tensorflow2.0之后这个muti_gpu_model的使用发生了改变,但是别怕,仅仅加一行代码就可以。
这个变化在官网已经提到了,有兴趣可以自己看一下。
传送门
解决方法很简单,在你原来使用multi_gpu_model外层加上两句代码。
原来的:
epsnet = M.Model(inputs = [img_in,img_lv],outputs = [out_d,out_s,out_l])
epsnet = multi_gpu_model(epsnet,gpus=3)
修改后
strategy = tf.distribute.MirroredStrategy(devices=["/gpu:0","/gpu:1", "/gpu:2"])
with strategy.scope():
epsnet = M.Model(inputs = [img_in,img_lv],outputs = [out_d,out_s,out_l])
epsnet = multi_gpu_model(epsnet,gpus=3)
Note,devices后面的 /gpu:0
要根据你自己的gpu个数,进行设置。