你怎么知道你什么时候使用多GPU?

数据挖掘 喀拉斯 显卡
2022-03-08 19:45:37

我的本地机器上有 2 个 gpus,但我不确定我正在训练的模型是否同时使用它们(速度没有太大变化)。

我的代码:

def get_model():
    base_model = ResNet50(weights='imagenet', input_shape=(image_size,image_size,3), include_top=False)
    #base_model.trainable = False

    model = models.Sequential()
    model.add(base_model)
    model.add(layers.GlobalAveragePooling2D())
    model.add(layers.Dense(1024, activation='relu'))
    model.add(layers.Dropout(0.5))
    model.add(layers.Dense(196, activation='softmax'))
    model.summary()

    model = multi_gpu_model(model,gpus=2)

    #optimizer = optimizers.SGD(lr=1e-4, decay=1e-6, momentum=0.9, nesterov=True)
    optimizer = optimizers.RMSprop(lr=0.0001)
    model.compile(loss='categorical_crossentropy', optimizer=optimizer, metrics=['acc'])

    return model

我刚刚添加了multi_gpu_model设置,但不确定这是否足够。我每 0.5 秒检查一次 nvidia-smi,但似乎只有一个 gpu 在工作。如何确保它使用完整的 2 gpus?

1个回答

如果您使用的是 Linux 和 Nvidia GPU,您可以在终端中执行以下操作

nvidia-smi

这将向您显示有关系统上可用 GPU 的一些统计信息。

您可以像这样每 2 秒自动运行一次,以查看训练期间电源/内存使用情况的变化:

watch -n 2 nvidia-smi

如果您什么也没看到或nvidia-smi命令失败,您可能没有安装正确的驱动程序。

如果它们正在显示,但 Keras/Tensorflow 没有找到它们,请查看此线程以进一步检查 Tensorflow 后端。