Я пытаюсь запустить мою модель на GPU кластера.Однако каждый раз, когда я запускаю свою модель, я получаю ошибку OOM.Ранее я пытался запустить VGG на GPU кластера, и он работал нормально.И 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,37 ГБ, а зарезервированной памяти - 384 г.
Мои вопросы:
Как вы думаете, это может быть потому, что он использует только одно ядро?
Как я могу заставить его использовать все ядра на одном узле GPU в Keras.У меня доступно 36 ядер?Как я могу включить это в свой код.
Почему более глубокая модель, такая как VGG, работает нормально, но как только я пытаюсь запустить мою модель, она сталкивается с ошибкой OOM.
Краткое описание модели:
Помощь будет принята с благодарностью.Я пытался это часами и не смог решить эту проблему.