使用使用 Amazon Deb SageMaker ugger Python 模块进行基本分析的估算器配置 - Amazon SageMaker

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

使用使用 Amazon Deb SageMaker ugger Python 模块进行基本分析的估算器配置

默认情况下, SageMaker Debugger 基本分析处于开启状态,用于监控使用 Amaz SageMaker on Python SDK 提交的所有 SageMaker 训练作业的资源利用率指标,例如CPU利用率、GPU利用率、GPU内存利用率、网络和 I/O 等待时间。 SageMaker 调试器每 500 毫秒收集一次这些资源利用率指标。您无需对代码、训练脚本或作业启动器进行任何其他更改即可跟踪基本资源利用率。如果要更改基本分析的指标收集间隔,则可以在使用 Pyth SageMaker on SDK、、或 () 创建 SageMaker 训练作业启动器时指定特定于调试器的参数。 AWS SDK for Python (Boto3) AWS Command Line Interface CLI在本指南中,我们将重点介绍如何使用 Amaz SageMaker on Python 更改分析选项SDK。本页提供了用于配置此估算器对象的参考模板。

如果您想在 SageMaker Studio 中访问训练作业的资源利用率指标控制面板,可以跳至亚马逊 SageMaker Studio 经典实验中的亚马逊 SageMaker 调试器用户界面

如果您希望自动激活检测系统资源利用率问题的规则,可以在用于激活规则的估算器对象中添加 rules 参数。

重要

要使用最新的 SageMaker 调试器功能,您需要升级 SageMaker Python SDK 和SMDebug客户端库。在您的 iPython 内核、Jupyter Notebook 或 JupyterLab 环境中,运行以下代码来安装最新版本的库并重新启动内核。

import sys import IPython !{sys.executable} -m pip install -U sagemaker smdebug IPython.Application.instance().kernel.do_shutdown(True)

用于在 Python 中使用 SageMaker 调试器 Python 模块配置 SageMaker 估算器对象的代码模板 SageMaker SDK

要调整基本分析配置 (profiler_config) 或添加探查器规则 (rules),请选择其中一个选项卡以获取用于设置 SageMaker 估算器的模板。在后续页面中,您可以找到有关如何配置这两个参数的更多信息。

注意

以下示例代码不能直接执行。请继续阅读下一个部分,学习如何配置每个参数。

PyTorch
# An example of constructing a SageMaker PyTorch estimator import boto3 import sagemaker from sagemaker.pytorch import PyTorch from sagemaker.debugger import ProfilerConfig, ProfilerRule, rule_configs session=boto3.session.Session() region=session.region_name profiler_config=ProfilerConfig(...) rules=[ ProfilerRule.sagemaker(rule_configs.BuiltInRule()) ] estimator=PyTorch( entry_point="directory/to/your_training_script.py", role=sagemaker.get_execution_role(), base_job_name="debugger-profiling-demo", instance_count=1, instance_type="ml.p3.2xlarge", framework_version="1.12.0", py_version="py37", # SageMaker Debugger parameters profiler_config=profiler_config, rules=rules ) estimator.fit(wait=False)
TensorFlow
# An example of constructing a SageMaker TensorFlow estimator import boto3 import sagemaker from sagemaker.tensorflow import TensorFlow from sagemaker.debugger import ProfilerConfig, ProfilerRule, rule_configs session=boto3.session.Session() region=session.region_name profiler_config=ProfilerConfig(...) rules=[ ProfilerRule.sagemaker(rule_configs.BuiltInRule()) ] estimator=TensorFlow( entry_point="directory/to/your_training_script.py", role=sagemaker.get_execution_role(), base_job_name="debugger-profiling-demo", instance_count=1, instance_type="ml.p3.2xlarge", framework_version="2.8.0", py_version="py37", # SageMaker Debugger parameters profiler_config=profiler_config, rules=rules ) estimator.fit(wait=False)
MXNet
# An example of constructing a SageMaker MXNet estimator import sagemaker from sagemaker.mxnet import MXNet from sagemaker.debugger import ProfilerConfig, ProfilerRule, rule_configs profiler_config=ProfilerConfig(...) rules=[ ProfilerRule.sagemaker(rule_configs.BuiltInRule()) ] estimator=MXNet( entry_point="directory/to/your_training_script.py", role=sagemaker.get_execution_role(), base_job_name="debugger-profiling-demo", instance_count=1, instance_type="ml.p3.2xlarge", framework_version="1.7.0", py_version="py37", # SageMaker Debugger parameters profiler_config=profiler_config, rules=rules ) estimator.fit(wait=False)
注意

因为MXNet,在配置profiler_config参数时,您只能为系统监视进行配置。不支持分析框架指标MXNet。

XGBoost
# An example of constructing a SageMaker XGBoost estimator import sagemaker from sagemaker.xgboost.estimator import XGBoost from sagemaker.debugger import ProfilerConfig, ProfilerRule, rule_configs profiler_config=ProfilerConfig(...) rules=[ ProfilerRule.sagemaker(rule_configs.BuiltInRule()) ] estimator=XGBoost( entry_point="directory/to/your_training_script.py", role=sagemaker.get_execution_role(), base_job_name="debugger-profiling-demo", instance_count=1, instance_type="ml.p3.2xlarge", framework_version="1.5-1", # Debugger-specific parameters profiler_config=profiler_config, rules=rules ) estimator.fit(wait=False)
注意

因为XGBoost,在配置profiler_config参数时,您只能为系统监视进行配置。不支持分析框架指标XGBoost。

Generic estimator
# An example of constructing a SageMaker generic estimator using the XGBoost algorithm base image import boto3 import sagemaker from sagemaker.estimator import Estimator from sagemaker import image_uris from sagemaker.debugger import ProfilerConfig, DebuggerHookConfig, Rule, ProfilerRule, rule_configs profiler_config=ProfilerConfig(...) rules=[ ProfilerRule.sagemaker(rule_configs.BuiltInRule()) ] region=boto3.Session().region_name xgboost_container=sagemaker.image_uris.retrieve("xgboost", region, "1.5-1") estimator=Estimator( role=sagemaker.get_execution_role() image_uri=xgboost_container, base_job_name="debugger-demo", instance_count=1, instance_type="ml.m5.2xlarge", # Debugger-specific parameters profiler_config=profiler_config, rules=rules ) estimator.fit(wait=False)

以下是对参数的简要说明。

  • profiler_config— 将 Debugger 配置为从训练作业中收集系统指标和框架指标,并保存到安全的 S3 存储桶URI或本地计算机中。您可以设置收集系统指标的频率松紧程度。了解如何配置 profiler_config 参数,请参阅 配置设置以对系统资源利用率进行基本分析用于框架分析的估算器配置

  • rules— 配置此参数以激活要并行运行的 SageMaker 调试器内置规则。确保您的训练作业可以访问此 S3 存储桶。这些规则在处理容器上运行,并自动分析您的训练作业来发现计算和操作性能问题。ProfilerReport 规则是集成度最高的规则,它运行所有内置的分析规则,并将分析结果作为报告保存到安全的 S3 存储桶中。要了解如何配置 rules 参数,请参阅使用由 Amazon SageMaker Debugger 管理的内置分析器规则

注意

Debugger 将输出数据安全地保存在默认 S3 存储桶的子文件夹中。例如,默认 S3 存储桶的格式URI为s3://sagemaker-<region>-<12digit_account_id>/<base-job-name>/<debugger-subfolders>/。Debugger 创建三个子文件夹:debug-outputprofiler-outputrule-output。您也可以URIs使用SageMaker 估算器类方法检索默认 S3 存储桶。

请参阅以下主题,查看如何配置 Debugger 特定参数的详细说明。