Я пытаюсь обучить довольно большой LSTM на большом наборе данных и иметь 4 графических процессора для распределения нагрузки.Если я пытаюсь тренироваться только на одном из них (на любом из них я пробовал каждый), он работает правильно, но после добавления кода multi_gpu_model происходит сбой всей моей системы, когда я пытаюсь его запустить.Вот мой код для нескольких графических процессоров
batch_size = 8
model = Sequential()
model.add(Masking(mask_value=0., input_shape=(len(inputData[0]), len(inputData[0][0])) ))
model.add(LSTM(256, return_sequences=True))
model.add(Dropout(.2))
model.add(LSTM(128, return_sequences=True))
model.add(Dropout(.2))
model.add(LSTM(128, return_sequences=True))
model.add(Dropout(.2))
model.add(Dense(len(outputData[0][0]), activation='softmax'))
rms = RMSprop()
p_model = multi_gpu_model(model, gpus=4)
p_model.compile(loss='categorical_crossentropy',optimizer=rms, metrics=['categorical_accuracy'])
print("Fitting")
p_model.fit_generator(songBatchGenerator(songList,batch_size), epochs=250, verbose=1, shuffle=False, steps_per_epoch=math.ceil(len(songList)/batch_size))
pickleSave('kerasTrained.pickle', parallel_model)
print("Saved")
, меняющий его на
batch_size = 8
model = Sequential()
model.add(Masking(mask_value=0., input_shape=(len(inputData[0]), len(inputData[0][0])) ))
model.add(LSTM(256, return_sequences=True))
model.add(Dropout(.2))
model.add(LSTM(128, return_sequences=True))
model.add(Dropout(.2))
model.add(LSTM(128, return_sequences=True))
model.add(Dropout(.2))
model.add(Dense(len(outputData[0][0]), activation='softmax'))
rms = RMSprop()
model.compile(loss='categorical_crossentropy',optimizer=rms, metrics=['categorical_accuracy'])
print("Fitting")
model.fit_generator(songBatchGenerator(songList,batch_size), epochs=250, verbose=1, shuffle=False, steps_per_epoch=math.ceil(len(songList)/batch_size))
pickleSave('kerasTrained.pickle', parallel_model)
print("Saved")
отлично работает
3 графических процессоров - это Nvidia 1060 3 ГБ, а 1 - 6 ГБ,и система имеет около 4 ГБ памяти (хотя я сомневаюсь, что это проблема, так как я использую генератор).