Sagemaker 实例在训练期间不使用 GPU

Sagemaker Instance not utilising GPU during training

我正在 ml.p3.2xlarge 实例上的 Tensorflow 上训练 Seq2Seq 模型。当我尝试 运行 google colab 上的代码时,每个 epoch 的时间约为 40 分钟。但是在实例上大约需要 5 个小时!

这是我的训练代码

def train_model(train_translator, dataset, path, num=8):

  with tf.device("/GPU:0"):
    cp_callback = tf.keras.callbacks.ModelCheckpoint(filepath=path,
                                                save_weights_only=True,
                                                 verbose=1)
    batch_loss = BatchLogs('batch_loss')
    train_translator.fit(dataset, epochs=num,callbacks=[batch_loss,cp_callback])  

  return train_translator

我也尝试过不使用 tf.device 命令,我仍然得到相同的时间。我做错了什么吗?

如果您使用的是 SageMaker Notebook 实例。打开终端和 运行 nvidia-smi 查看 GPU 利用率。如果你是 0%,那么你没有使用正确的设备。如果它大于 0% 但离 100% 很远,那么你有一个非 GPU 瓶颈需要处理。
如果您正在使用 SageMaker 训练,请通过 Cloudwatch 指标检查作业的 GPU 使用情况。

我不得不在

的帮助下强制使用 GPU
with tf.device('/device:GPU:0')

如果您在 Tensorflow 估算器中使用 instance_type='local' 的 GPU 实例上使用 Sagemaker 笔记本,它显然默认为 CPU...

我通过设置解决了这个问题:instance_type='local_gpu'