如何让TensorFlow检测AWS上的所有GPU?

时间:2017-11-04 04:08:48

标签: amazon-web-services amazon-ec2 tensorflow keras

我在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)

0 个答案:

没有答案