本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用使用 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)
以下是对参数的简要说明。
Debugger 将输出数据安全地保存在默认 S3 存储桶的子文件夹中。例如,默认 S3 存储桶的格式URI为s3://sagemaker-<region>-<12digit_account_id>/<base-job-name>/<debugger-subfolders>/
。Debugger 创建三个子文件夹:debug-output
、profiler-output
和 rule-output
。您也可以URIs使用SageMaker 估算器类方法检索默认 S3 存储桶。
请参阅以下主题,查看如何配置 Debugger 特定参数的详细说明。