Я использую модель LSTM на AWS экземпляре g3.8xlarge, который имеет 2 графических процессора, и использую tf.distribute.MirroredStrategy()
, чтобы я мог использовать 2 графических процессора. Тем не менее, время тренировки на самом деле медленнее, чем без этого. Кто-нибудь знает как это решить?
Я использую:
- Ubuntu 16.04
- NVIDIA-SMI 440.33.01
- CUDA Версия 10.1.105
- Cudnn 7.6.5
- tenenflow-gpu 2.1.0
Мой код:
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM
from tensorflow.compat.v1.keras.layers import CuDNNLSTM
from tensorflow.keras.layers import Dense
from tensorflow.keras.layers import Dropout
from tensorflow.keras.layers import RepeatVector
from tensorflow.keras.layers import TimeDistributed
from tensorflow.keras.optimizers import SGD
import tensorflow.keras.backend as K
import tensorflow as tf
def lstm_model(timesteps, features, neurons_1, dropout, learning, momentum, decay, init ) :
distribute = tf.distribute.MirroredStrategy()
with distribute.scope():
model = Sequential()
model.add(CuDNNLSTM(neurons_1, return_sequences=False, input_shape = (timesteps, features), kernel_initializer = init))
model.add(Dropout(dropout))
model.add(Dense(1))
SGD( lr = learning, momentum = momentum, decay = decay, nesterov = False)
model.compile(loss = lambda y, f: tilted_loss(0.5, y,f), optimizer = 'adam')
return model