使用 SageMaker 和 调试程序 配置 API 操作来创建、更新、调试和分析您的训练作业 - Amazon SageMaker
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

使用 SageMaker 和 调试程序 配置 API 操作来创建、更新、调试和分析您的训练作业

前面的主题重点介绍如何通过 调试程序 Python 开发工具包使用 Amazon SageMaker,该开发工具包是用于 AWS 的 SageMaker boto3 API 操作的包装程序。这提供了访问 Amazon SageMaker API 操作的高级体验。如果您需要直接将 SageMaker API 操作与其他 SDKs(如 Java、Go、C++ 和许多其他 )一起使用,以下主题介绍如何配置 CreateTrainingJob、UpdateTrainingJob、调试程序 配置 APIs 及其参数以使用调试程序内置规则和自定义规则。

将 调试程序 内置规则配置添加到 CreateTrainingJob API 操作

Amazon SageMaker 调试程序 内置规则可以在 API 操作中使用 DebugHookConfig、DebugRuleConfiguration、ProfilerConfigProfilerRuleConfiguration 对象为训练作业配置。CreateTrainingJob内置规则和自定义规则在处理容器中运行,您可以在 URIs 主题中找到 ECR 映像 将 调试程序 Docker 映像用于内置规则或自定义规则。您需要在 RuleEvaluatorImage 参数中指定正确的图像 URI,以下示例将指导您完成如何设置 JSON 字符串以请求 CreateTrainingJob

配置调试程序规则以调试模型参数

以下代码示例显示如何使用此 VanishingGradient API 配置内置 SageMaker 规则。

指定 调试程序 挂钩配置,如下所示:

DebugHookConfig: { "S3OutputPath": "s3://bucket/path-to-tensors", "CollectionConfigurations": [ { "CollectionName": "gradients", "CollectionParameters" : { "save_interval": "500" } } ] }

这会使训练作业保存张量集合 gradients,每个 save_interval 的步骤为 500。以下 DebugRuleConfigurations API 代码示例演示了如何在保存的 VanishingGradient 集合上运行内置的 gradients 规则。

DebugRuleConfigurations: [ { "RuleConfigurationName": "VanishingGradient", "RuleEvaluatorImage": "503895931360.dkr.ecr.us-east-1.amazonaws.com/sagemaker-debugger-rules:latest", "RuleParameters": { "rule_to_invoke": "VanishingGradient", "threshold": "20.0" } } ]

利用类似于此示例中的配置,Amazon SageMaker 调试程序 将使用 SageMaker 张量的集合上的 VanishingGradient gradients 规则为您的训练作业启动规则评估作业。

配置用于分析系统和框架指标的调试程序内置规则

以下示例代码说明如何指定 ProfilerConfig API 操作以启用收集系统和框架指标。

Target Step
"ProfilerConfig": { "ProfilingIntervalInMilliseconds": 500, "ProfilingParameters": { "DetailedProfilingConfig": { \"StartStep\": \"7\", // The default is the first step (step 0) \"NumSteps\": \"1\", // The default value is 1 }, "PythonProfilingConfig": { \"StartStep\": \"9\", // The default is the first step (step 0) \"NumSteps\": \"3\", // The default value is 3 \"cProfileTimer\": \"total_time\", // Available options: cpu, off_cpu, total_time \"ProfilerName\" : \"cProfile\", // Available options: cProfile, Pyinstrument }, "DataLoaderProfilingConfig": { \"StartStep\": \"5\", // The default is the first step (step 0) \"NumSteps\": \"1\" // The default value is 1 } } }
Target Time Duration
"ProfilerConfig": { "ProfilingIntervalInMilliseconds": 500, "ProfilingParameters": { "DetailedProfilingConfig": { \"StartTimeInSecSinceEpoch\": \"12345567789\", // The default is the current time \"DurationInSeconds\": \"1\", // The default is duration of 1 step }, "PythonProfilingConfig": { \"StartTimeInSecSinceEpoch\": \"12345567789\", // The default is the current time \"DurationInSeconds\": \"1\", // The default is duration of 1 step \"cProfileTimer\": \"total_time\", // Available options: cpu, off_cpu, total_time \"ProfilerName\" : \"cProfile\", // Available options: cProfile, Pyinstrument }, "DataLoaderProfilingConfig": { \"StartTimeInSecSinceEpoch\": \"12345567789\", // The default is the current time \"DurationInSeconds\": \"1\" // The default is duration of 1 step } } }

以下示例代码说明如何配置 ProfilerReport 规则。

"ProfilerRuleConfigurations": [ { "RuleConfigurationName": "ProfilerReport", "RuleEvaluatorImage": "503895931360.dkr.ecr.us-east-1.amazonaws.com/sagemaker-debugger-rules:latest", "RuleParameters": { "rule_to_invoke": "ProfilerReport", "CPUBottleneck_cpu_threshold": "90", "IOBottleneck_threshold": "90" } } ]

使用 UpdateTrainingJob API 操作更新调试程序分析配置

调试程序 在训练作业运行时,可以使用 UpdateTrainingJob API 操作更新 分析配置。配置新的 ProfilerConfigProfilerRuleConfiguration 对象,并为 TrainingJobName 参数指定训练作业名称。

{ "ProfilerConfig": { "DisableProfiler": boolean, "ProfilingIntervalInMilliseconds": number, "ProfilingParameters": { "string" : "string" } }, "ProfilerRuleConfigurations": [ { "RuleConfigurationName": "string", "RuleEvaluatorImage": "string", "RuleParameters": { "string" : "string" } } ], "TrainingJobName": "your-training-job-name-YYYY-MM-DD-HH-MM-SS-SSS" }

将 调试程序 自定义规则配置添加到 CreateTrainingJob API 操作

可以在 DebugHookConfig API 操作中使用 DebugRuleConfiguration 和 对象为训练作业配置自定义规则。CreateTrainingJob以下代码示例演示如何使用此 ImproperActivation API 操作配置使用 smdebug 库编写的自定义 SageMaker 规则。该示例假定您已在 custom_rules.py 文件中编写自定义规则,并将其上传到 Amazon S3 存储桶中。该示例提供了预构建的 Docker 映像,您可以使用这些映像运行自定义规则。Amazon SageMaker 调试程序 自定义规则评估程序的注册表URLs 中列出了这些映像。您可以在 RuleEvaluatorImage 参数中为预构建的 Docker 映像指定 URL 注册表地址。

DebugHookConfig: { "S3OutputPath": "s3://bucket/", "CollectionConfigurations": [ { "CollectionName": "relu_activations", "CollectionParameters": { "include_regex": "relu", "save_interval": "500", "end_step": "5000" } } ] }, DebugRulesConfigurations: [ { "RuleConfigurationName": "improper_activation_job", "RuleEvaluatorImage": "552407032007.dkr.ecr.ap-south-1.amazonaws.com/sagemaker-debugger-rule-evaluator:latest", "InstanceType": "ml.c4.xlarge", "VolumeSizeInGB": 400, "RuleParameters": { "source_s3_uri": "s3://bucket/custom_rules.py", "rule_to_invoke": "ImproperActivation", "collection_names": "relu_activations" } } ]