Amazon SageMaker 调试器的注意事项 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon SageMaker 调试器的注意事项

使用 Amazon SageMaker 调试器时,请注意以下事项。

分布式训练注意事项

以下列表显示了在具有深度学习框架和各种分布式培训选项的培训作业中使用调试器的有效性范围和注意事项。

  • Horovod

    使用调试器的有效性范围与 Horovod 培训工作
    深度学习框架 Apache MXNet TensorFlow 1.x TensorFlow 2.x TensorFlow 2.x 与喀拉斯 PyTorch
    监控系统瓶颈
    分析框架操作
    调试模型输出张量
  • SageMaker 分布式数据并行

    使用调试器进行 SageMaker 分布式数据并行培训作业的有效性范围
    深度学习框架 TensorFlow 2.x TensorFlow 2.x 与喀拉斯 PyTorch
    监控系统瓶颈
    分析框架操作 否 * 否 **
    调试模型输出张量

    * 调试器不支持 TensorFlow 2.x 的框架分析。

    ** SageMaker 分布式数据并行不支持 Keras 实现的 TensorFlow 2.x。

  • SageMaker 分布式模型并行— 调试器不支持 SageMaker 分布式模型并行训练。

  • 使用 SageMaker 检查点的分布式培训— 启用分布式训练选项和 SageMaker 检查点时,调试器不可用于培训作业。您可能会看到如下所示的错误:

    SMDebug Does Not Currently Support Distributed Training Jobs With Checkpointing Enabled

    要将调试器用于具有分布式培训选项的培训作业,您需要禁用 SageMaker 检查点,并将手动检查点功能添加到训练脚本中。有关将调试程序用于分布式训练选项和检查点的更多信息,请参阅将 SageMaker 分布式数据与 SageMaker 调试器和检查点并行使用的注意事项保存检查点.

  • 参数服务器— 调试器不支持基于参数服务器的分布式培训。

  • 分析分布式训练框架操作,例如AllReducedSageMaker 分布式数据并行运行和Horovod 操作,不可用。

监视系统瓶颈和性能分析框架操作的注意事项

  • 适用于AmazonTensorFlow,数据加载器指标不能使用默认的local_path设置FrameworkProfile类 路径必须手动配置并以"/". 例如:

    FrameworkProfile(local_path="/opt/ml/output/profiler/")
  • 适用于AmazonTensorFlow,则无法在训练作业运行时更新数据加载器性能分析配置。

  • 适用于AmazonTensorFlow,一个NoneType当您将分析工具和笔记本示例与 TensorFlow 2.3 培训作业和详细的性能分析选项一起使用时,可能会发生错误。

  • 仅 Keras API 支持 Python 分析和详细分析。

  • 要访问 TensorFlow 和 PyTorch 的深度分析功能,当前必须指定最新的Amazon深度学习容器图像与 CUDA 11. 例如,您必须在 TensorFlow 和 PyTorch 估计器中指定特定的图像 URI,如下所示:

    • 对于 TensorFlow

      image_uri = f"763104351884.dkr.ecr.{region}.amazonaws.com/tensorflow-training:2.3.1-gpu-py37-cu110-ubuntu18.04"
    • PyTorch 用于

      image_uri = f"763104351884.dkr.ecr.{region}.amazonaws.com/pytorch-training:1.6.0-gpu-py36-cu110-ubuntu18.04"

调试模型输出张量的注意事项

  • 避免使用功能 API 操作。调试器无法从 PyTorch 和由功能 API 操作组成的 MxNet 训练脚本中收集模型输出张量。

    • 调试器无法从torch.nn.functionalAPI 操作。当您编写 PyTorch 训练脚本时,建议使用torch.nn而不是模块。

    • 调试器无法从混合块中的 MxNet 功能对象收集模型输出张量。例如,RELU 激活(F.relu)输出无法从以下示例中收集mxnet.gluon.HybridBlock替换为F中的hybrid_forwardfunction.

      import mxnet as mx from mxnet.gluon import HybridBlock, nn class Model(HybridBlock): def __init__(self, **kwargs): super(Model, self).__init__(**kwargs) # use name_scope to give child Blocks appropriate names. with self.name_scope(): self.dense0 = nn.Dense(20) self.dense1 = nn.Dense(20) def hybrid_forward(self, F, x): x = F.relu(self.dense0(x)) return F.relu(self.dense1(x)) model = Model() model.initialize(ctx=mx.cpu(0)) model.hybridize() model(mx.nd.zeros((10, 10), ctx=mx.cpu(0)))