数据并行故障排查 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

数据并行故障排查

如果遇到错误,可以使用以下列表尝试排除培训工作故障。如果问题仍存在,请联系 Amazon Support。

将 SageMaker 分布式数据与 SageMaker 调试器和检查点并行使用的注意事项

要监视系统瓶颈、配置文件框架操作和调试模型输出张量,以便使用 SageMaker 分布式数据并行进行培训的作业,可以使用 SageMaker 调试器。

但是,当您使用 SageMaker 调试器、SageMaker 分布式数据并行和 SageMaker 检查点时,您可能会看到类似于以下内容的错误:

SMDebug Does Not Currently Support Distributed Training Jobs With Checkpointing Enabled

这是由于调试器和检查点之间的内部错误造成的,当您启用 SageMaker 分布式时会发生此错误。

  • 如果启用了所有这三个功能,SageMaker Python SDK 会自动关闭调试器,方法是传递debugger_hook_config=False,等效于以下框架estimator示例。

    bucket=sagemaker.Session().default_bucket() base_job_name="sagemaker-checkpoint-test" checkpoint_in_bucket="checkpoints" # The S3 URI to store the checkpoints checkpoint_s3_bucket="s3://{}/{}/{}".format(bucket, base_job_name, checkpoint_in_bucket) estimator = TensorFlow( ... distribution={"smdistributed": {"dataparallel": { "enabled": True }}}, checkpoint_s3_uri=checkpoint_s3_bucket, checkpoint_local_path="/opt/ml/checkpoints", debugger_hook_config=False )
  • 如果要继续使用 SageMaker 分布式数据并行和 SageMaker 调试器,则解决方法是手动将检查点函数添加到训练脚本中,而不是指定checkpoint_s3_uricheckpoint_local_path参数来自估计程序。有关在训练脚本中设置手动检查点的更多信息,请参阅保存检查点.

意外前缀 (model例如)附加到state_dict键(模型参数)来自 PyTorch 分布式训练 Job

当 PyTorch 训练作业保存模型伪影时,SageMaker 数据并行库不会直接更改或预置任何模型参数名称。PyTorch 的分布式训练会更改state_dict通过网络,并在前缀之前添加。如果在使用 SageMaker 数据并行库和 PyTorch 训练的检查点时,由于参数名称不同而遇到任何模型故障问题,请调整以下示例代码,以便在您在训练脚本中加载检查点的步骤中删除前缀:

state_dict = {k.partition('model.')[2]:state_dict[k] for k in state_dict.keys()}

这需要每state_dict键作为字符串值,则在第一次出现'model.',并获取分区字符串的第三个列表项(索引 2)。

有关前缀问题的更多信息,请参阅以下讨论主题:如果由多 GPU 训练,则在保存的模型中添加参数名称的前缀?中的PyTorch 开发论坛.

有关保存和加载模型的 PyTorch 方法的更多信息,请参阅跨设备保存和加载模型中的PyTorch 文档.