Недостаточно памяти при работе модели Keras на графическом процессоре - PullRequest
0 голосов
/ 19 апреля 2019

Я пытаюсь запустить мою модель на 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)

Моя ошибка:

enter image description here

Общий объем используемой памяти составляет 70,37 ГБ, а зарезервированной памяти - 384 г.

enter image description here

Мои вопросы:

  1. Как вы думаете, это может быть потому, что он использует только одно ядро?

  2. Как я могу заставить его использовать все ядра на одном узле GPU в Keras.У меня доступно 36 ядер?Как я могу включить это в свой код.

  3. Почему более глубокая модель, такая как VGG, работает нормально, но как только я пытаюсь запустить мою модель, она сталкивается с ошибкой OOM.

Краткое описание модели:

enter image description here

Помощь будет принята с благодарностью.Я пытался это часами и не смог решить эту проблему.

...