Tensorflow 2 с несколькими графическими процессорами - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь обучить сеть LSTM на tenorflow2, используя 8 графических процессоров. Вот код, который я использую:

max_seq_length = 100
embedding_vector_length = 32
corpuse_count = len(word_count)
model = Sequential() 
model.add(Embedding(corpuse_count , embedding_vector_length, input_length=max_seq_length)) 
model.add(LSTM(64))
model.add(Dense(16, activation='sigmoid'))
parallel_model = multi_gpu_model(model, gpus=8)
parallel_model.compile(loss='categorical_crossentropy',optimizer='rmsprop', metrics=['accuracy'])
parallel_model.fit(X_train_t1_proc, y_train_proc, validation_split=0.15, epochs=3, batch_size=64) 

Однако, когда я проверяю фактическую производительность графического процессора, работает только один графический процессор. Кто-нибудь знает, как я могу решить это? enter image description here

1 Ответ

1 голос
/ 17 апреля 2020

Может быть много причин. Прежде всего, если вы используете tennsflow.keras, обратите внимание, что multi_gpu_model является устаревшим и будет / будет удалено, и вместо этого лучше использовать tf.distributed.MirroredStrategy. Данная ссылка показывает примеры того, как правильно использовать multi_gpu_model.

Другая причина может заключаться в том, что размер вашей партии настолько мал, что он не в полной мере использует преимущества нескольких графических процессоров. Каждый раз, когда вы вызываете nvidia-smi для проверки использования графического процессора, даже если он выделил максимальный объем памяти, в данный момент он не выполняет никаких вычислений.

Чтобы убедиться, что выделена только необходимая память графического процессора, попробуйте динамически увеличить объем графического процессора. память как обсуждено здесь

Я надеюсь, что это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...