首先我们查看一下服务器GPU的配置
nvidia-smi
可以看到,我们由块显卡,实验中为了避免不同使用者的资源竞争,我们需要指定适用哪块GPU来实验。
我使用的是Python,在代码开始部分加入:
import os
os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID"
os.environ["CUDA_VISIBLE_DEVICES"]="0"
引自
keras 使用多GPU
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "2,3"
没有指定keras默认会选择所有的GPU,如果你并没有配置多GPU的训练,那么实际上keras占了所有的GPU但是实际上只在一个GPU上运行。
第二步,就是调用多GPU函数,multi_gpu_model,第一个参数是你的模型,第二个是使用GPU的数量。model泛指一个keras的模型。
model = KerasNet()
par_model = keras.utils.multi_gpu_model(model, gpus=2)