在GPU上运行Keras模型时内存不足

时间:2019-04-19 14:48:39

标签: python-3.x keras gpu conv-neural-network

我正在尝试在集群的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)

我的错误是:

enter image description here

使用的总内存为70.37gb,保留的内存为384g。

enter image description here

我的问题:

  1. 您是否认为可能是因为它仅使用一个内核?

  2. 如何在Keras中使用一个GPU节点上的所有内核。我有36个内核可用吗?如何将其合并到我的代码中。

  3. 为什么像VGG这样的更深层次的模型运行良好,但是一旦我尝试运行模型,它就会遇到OOM错误。

模型摘要:

enter image description here

我们将不胜感激。我已经尝试了几个小时,却无法解决此问题。

0 个答案:

没有答案