AmazonBoto3 - Amazon SageMaker
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

AmazonBoto3

Amazon SageMaker 调试程序内置规则可以使用create_training_job()函数Amazon肉体 3 SageMaker 客户端. 您需要在RuleEvaluatorImage参数,以及以下示例向您介绍如何设置create_training_job()function.

下面的代码显示了一个完整的示例,说明如何为create_training_job()请求主体并开始一个培训工作us-west-2,假设训练脚本entry_point/train.py是使用 TensorFlow 进行准备的。要查找端示例笔记本,请参阅分析 TensorFlow 多 GPU 多节点培训 Job 与 Amazon SageMaker 调试器 (Bto3)

注意

确保您使用的是正确的 Docker 容器映像。要查找可用Amazon深度学习容器图像,请参阅可用的 Deep Learning Containers 图像。若要查找用于使用调试器规则的可用 Docker 映像的完整列表,请参阅将调试程序 Docker 映像用于内置规则或自定义规则

import sagemaker, boto3 import datetime, tarfile # Start setting up a SageMaker session and a Boto3 SageMaker client session = sagemaker.Session() region = session.boto_region_name bucket = session.default_bucket() # Upload a training script to a default Amazon S3 bucket of the current SageMaker session source = 'source.tar.gz' project = 'debugger-boto3-test' tar = tarfile.open(source, 'w:gz') tar.add ('entry_point/train.py') # Specify the directory and name of your training script tar.close() s3 = boto3.client('s3') s3.upload_file(source, bucket, project+'/'+source) # Set up a Boto3 session client for SageMaker sm = boto3.Session(region_name=region).client("sagemaker") # Start a training job sm.create_training_job( TrainingJobName='debugger-boto3-'+datetime.datetime.now().strftime('%Y-%m-%d-%H-%M-%S'), HyperParameters={ 'sagemaker_submit_directory': 's3://'+bucket+'/'+project+'/'+source, 'sagemaker_program': '/entry_point/train.py' # training scrip file location and name under the sagemaker_submit_directory }, AlgorithmSpecification={ # Specify a training Docker container image URI (Deep Learning Container or your own training container) to TrainingImage. 'TrainingImage': '763104351884.dkr.ecr.us-west-2.amazonaws.com/tensorflow-training:2.4.1-gpu-py37-cu110-ubuntu18.04', 'TrainingInputMode': 'File', 'EnableSageMakerMetricsTimeSeries': False }, RoleArn='arn:aws:iam::111122223333:role/service-role/AmazonSageMaker-ExecutionRole-20201014T161125', OutputDataConfig={'S3OutputPath': 's3://'+bucket+'/'+project+'/output'}, ResourceConfig={ 'InstanceType': 'ml.p3.8xlarge', 'InstanceCount': 1, 'VolumeSizeInGB': 30 }, StoppingCondition={ 'MaxRuntimeInSeconds': 86400 }, DebugHookConfig={ 'S3OutputPath': 's3://'+bucket+'/'+project+'/debug-output', 'CollectionConfigurations': [ { 'CollectionName': 'losses', 'CollectionParameters' : { 'train.save_interval': '500', 'eval.save_interval': '50' } } ] }, DebugRuleConfigurations=[ { 'RuleConfigurationName': 'LossNotDecreasing', 'RuleEvaluatorImage': '895741380848.dkr.ecr.us-west-2.amazonaws.com/sagemaker-debugger-rules:latest', 'RuleParameters': {'rule_to_invoke': 'LossNotDecreasing'} } ], ProfilerConfig={ 'S3OutputPath': 's3://'+bucket+'/'+project+'/profiler-output', 'ProfilingIntervalInMilliseconds': 500, 'ProfilingParameters': { 'DataloaderProfilingConfig': '{"StartStep": 5, "NumSteps": 3, "MetricsRegex": ".*", }', 'DetailedProfilingConfig': '{"StartStep": 5, "NumSteps": 3, }', 'PythonProfilingConfig': '{"StartStep": 5, "NumSteps": 3, "ProfilerName": "cprofile", "cProfileTimer": "total_time"}', 'LocalPath': '/opt/ml/output/profiler/' # Optional. Local path for profiling outputs } }, ProfilerRuleConfigurations=[ { 'RuleConfigurationName': 'ProfilerReport', 'RuleEvaluatorImage': '895741380848.dkr.ecr.us-west-2.amazonaws.com/sagemaker-debugger-rules:latest', 'RuleParameters': {'rule_to_invoke': 'ProfilerReport'} } ] )

为调试模型参数配置调试器规则

以下代码示例演示了如何配置内置的VanishingGradient规则。

启用调试器收集输出张量

指定调试器挂接配置,如下所示:

DebugHookConfig={ 'S3OutputPath': 's3://<default-bucket>/<training-job-name>/debug-output', 'CollectionConfigurations': [ { 'CollectionName': 'gradients', 'CollectionParameters' : { 'train.save_interval': '500', 'eval.save_interval': '50' } } ] }

这将使培训工作保存张量集合,gradients, 每save_interval的 500 个步骤。要查找可用CollectionName值,请参阅调试程序内置集合中的SMdebug 客户端库文档。要查找可用CollectionParameters参数键和值,请参阅sagemaker.debugger.CollectionConfig类中的SageMaker Python 开发工具包文档

启用调试器规则以调试输出张量

以下DebugRuleConfigurationsAPI 示例演示如何运行内置VanishingGradient保存的gradients收集。

DebugRuleConfigurations=[ { 'RuleConfigurationName': 'VanishingGradient', 'RuleEvaluatorImage': '895741380848.dkr.ecr.us-west-2.amazonaws.com/sagemaker-debugger-rules:latest', 'RuleParameters': { 'rule_to_invoke': 'VanishingGradient', 'threshold': '20.0' } } ]

通过使用类似于该示例中的配置,调试程序使用VanishingGradient规则收集gradients张量。若要查找用于使用调试器规则的可用 Docker 映像的完整列表,请参阅将调试程序 Docker 映像用于内置规则或自定义规则。要查找的键值对,请执行以下操作RuleParameters请参阅调试程序内置规则列表

配置分析系统和框架度量的调试器内置规则

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

启用调试器分析以收集系统和框架度量

Target Step
ProfilerConfig={ 'S3OutputPath': 's3://<default-bucket>/<training-job-name>/profiler-output', # Optional. Path to an S3 bucket to save profiling outputs # Available values for ProfilingIntervalInMilliseconds: 100, 200, 500, 1000 (1 second), 5000 (5 seconds), and 60000 (1 minute) milliseconds. 'ProfilingIntervalInMilliseconds': 500, 'ProfilingParameters': { 'DataloaderProfilingConfig': '{ "StartStep": 5, "NumSteps": 3, "MetricsRegex": ".*" }', 'DetailedProfilingConfig': '{ "StartStep": 5, "NumSteps": 3 }', 'PythonProfilingConfig': '{ "StartStep": 5, "NumSteps": 3, "ProfilerName": "cprofile", # Available options: cprofile, pyinstrument "cProfileTimer": "total_time" # Include only when using cprofile. Available options: cpu, off_cpu, total_time }', 'LocalPath': '/opt/ml/output/profiler/' # Optional. Local path for profiling outputs } }
Target Time Duration
ProfilerConfig={ 'S3OutputPath': 's3://<default-bucket>/<training-job-name>/profiler-output', # Optional. Path to an S3 bucket to save profiling outputs # Available values for ProfilingIntervalInMilliseconds: 100, 200, 500, 1000 (1 second), 5000 (5 seconds), and 60000 (1 minute) milliseconds. 'ProfilingIntervalInMilliseconds': 500, 'ProfilingParameters': { 'DataloaderProfilingConfig': '{ "StartTimeInSecSinceEpoch": 12345567789, "DurationInSeconds": 10, "MetricsRegex": ".*" }', 'DetailedProfilingConfig': '{ "StartTimeInSecSinceEpoch": 12345567789, "DurationInSeconds": 10 }', 'PythonProfilingConfig': '{ "StartTimeInSecSinceEpoch": 12345567789, "DurationInSeconds": 10, "ProfilerName": "cprofile", # Available options: cprofile, pyinstrument "cProfileTimer": "total_time" # Include only when using cprofile. Available options: cpu, off_cpu, total_time }', 'LocalPath': '/opt/ml/output/profiler/' # Optional. Local path for profiling outputs } }

启用用于分析度量的调试器规则

以下示例代码显示了如何将ProfilerReport规则。

ProfilerRuleConfigurations=[ { 'RuleConfigurationName': 'ProfilerReport', 'RuleEvaluatorImage': '895741380848.dkr.ecr.us-west-2.amazonaws.com/sagemaker-debugger-rules:latest', 'RuleParameters': { 'rule_to_invoke': 'ProfilerReport', 'CPUBottleneck_cpu_threshold': '90', 'IOBottleneck_threshold': '90' } } ]

若要查找用于使用调试器规则的可用 Docker 映像的完整列表,请参阅将调试程序 Docker 映像用于内置规则或自定义规则。要查找的键值对,请执行以下操作RuleParameters请参阅调试程序内置规则列表

更新调试器分析配置使用UpdateTrainingJobAPI 操作

在训练作业运行时,可以通过使用update_training_job()函数Amazon肉体 3 SageMaker 客户端. 配置新配置文件配置配置文件规则配置对象,并将训练作业名称指定为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 操作

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

DebugHookConfig={ 'S3OutputPath': 's3://<default-bucket>/<training-job-name>/debug-output', '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' } } ]

若要查找用于使用调试器规则的可用 Docker 映像的完整列表,请参阅将调试程序 Docker 映像用于内置规则或自定义规则。要查找的键值对,请执行以下操作RuleParameters请参阅调试程序内置规则列表