我在ec2 p2.8xlarge上运行了一个lstm网。当然,我想利用所有可用的gpus(8)。我很容易在一个gpu上运行它,但不是更多。调用" multi_gpu_model":
时出现以下错误"要使用multi_gpu_model
致电gpus=8
,我们希望以下设备可用:[' / cpu:0',' / gpu: 0',' / gpu:1',' / gpu:2',' / gpu:3',' / gpu:4&# 39;,' / gpu:5',' / gpu:6',' / gpu:7']。但是这台机器只有:[' / cpu:0']。尝试减少gpus
。"
当我输入nvidia-smi时,所有8个gpus都显示在终端中。如何将这些添加到我的tf(keras)环境中?
当我在jupyter笔记本中运行device_lib.list_local_devices()
时,它只返回CPU0,它应该返回8个GPU。以下是相关的代码:
model = Sequential()
model.add(LSTM(256, input_shape=(X.shape[1], X.shape[2])))
model.add(Dropout(0.2))
model.add(Dense(y.shape[1], activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam')
# define the checkpoint
filepath="weights-improvement-{epoch:02d}-{loss:.4f}.hdf5"
checkpoint = ModelCheckpoint(filepath, monitor='loss', verbose=1, save_best_only=True, mode='min')
callbacks_list = [checkpoint]
# fit the model
model=multi_gpu_model(model, gpus=8)
model.fit(X, y, epochs=20, batch_size=128, callbacks=callbacks_list)