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

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

亚马逊的注意事项 SageMaker Debugger(调试程序)

在使用 Amazon 时应考虑以下事项 SageMaker Debugggg

分布式训练注意事项

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

  • 霍罗沃德

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

    使用调试器进行训练作业的有效范围 SageMakerparallel 分布式数据
    深度学习框架 TensorFlow 2.x TensorFlow 使用 Keras PyTorch
    监控系统瓶颈
    对框架操作进行分析 不* 不**
    调试模型输出张量

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

    ** SageMaker 分布式数据parallel 不支持 TensorFlow 使用 Keras 实现的 2.x。

  • SageMaker parallel 分布式模型— Debugger(调试程序) SageMaker 分布式模型parallel 训练。

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

    SMDebug Does Not Currently Support Distributed Training Jobs With Checkpointing Enabled

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

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

  • 分析分布式训练框架操作,例如AllReduced的操作 SageMaker 分布式数据parallel 和Horovod 操作,不可用。

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

  • 对于Amazon TensorFlow,无法使用默认值收集数据加载器指标local_path的设置FrameworkProfile类。必须手动配置路径并以此结束"/". 例如:

    FrameworkProfile(local_path="/opt/ml/output/profiler/")
  • 对于Amazon TensorFlow,训练作业运行时无法更新数据加载器分析配置。

  • 对于Amazon TensorFlow,一个NoneType当你使用分析工具和笔记本示例时,可能会出现错误 TensorFlow 2.3 培训工作和详细分析选项。

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

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

    • 对于 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.HybridBlockF在里面hybrid_forward函数。

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