我正在尝试在集群的GPU上运行我的模型。但是,每次运行模型时,都会出现OOM错误。以前,我尝试在群集的GPU上运行VGG,并且运行良好。 VGG比我的网络更深入。我的网络是:
i1 = Input(shape=(1, 162, 5000))
c1 = Conv2D(100, kernel_size=3,activation='relu',data_format='channels_first')(i1)
#c1 = Conv2D(128*2, kernel_size=3,activation='relu',data_format='channels_first')(i1)
c1 = Dropout(0.2)(c1)
c1 = Flatten()(c1)
i2 = Input(shape=(5000, ))
c2 = Dense(100, input_shape = (5000,), activation='relu')(i2)
c2 = Dropout(0.2)(c2)
c = concatenate([c1, c2])
x = Dense(100, activation='relu', kernel_initializer='normal')(c)
x = Dropout(0.25)(x)
output = Dense(5, activation='softmax')(x)
model = Model([i1, i2], [output])
然后为了使用多重处理,请执行以下操作:
parallel_model = multi_gpu_model(model, gpus=2)
parallel_model.compile(loss='categorical_crossentropy',
optimizer='adam',
metrics=['accuracy'])
history = parallel_model.fit([image_train, positions_train], Ytest, batch_size=32,
epochs=5,
verbose=1,
validation_split=0.2,
shuffle=True)
我的错误是:
使用的总内存为70.37gb,保留的内存为384g。
我的问题:
您是否认为可能是因为它仅使用一个内核?
如何在Keras中使用一个GPU节点上的所有内核。我有36个内核可用吗?如何将其合并到我的代码中。
为什么像VGG这样的更深层次的模型运行良好,但是一旦我尝试运行模型,它就会遇到OOM错误。
模型摘要:
我们将不胜感激。我已经尝试了几个小时,却无法解决此问题。