

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

# 使用使用 Amazon Deb SageMaker ugger Python 模块进行基本分析的估算器配置
<a name="debugger-configuration-for-profiling"></a>

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

如果您想在 SageMaker Studio 中访问训练作业的资源利用率指标控制面板，可以跳至[亚马逊 SageMaker Studio 经典实验中的亚马逊 SageMaker 调试器用户界面](debugger-on-studio.md)。

如果您希望自动激活检测系统资源利用率问题的规则，可以在用于激活规则的估算器对象中添加 `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)
```

## 用于在 SageMaker AI Python SDK 中使用 Deb SageMaker ugger Python 模块配置 SageMaker AI 估算器对象的代码模板
<a name="debugger-configuration-structure-profiler"></a>

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

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

------
#### [ PyTorch ]

```
# An example of constructing a SageMaker AI 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 AI 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 AI 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 AI 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 AI 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` 参数，请参阅 [配置设置以对系统资源利用率进行基本分析](debugger-configure-system-monitoring.md) 和 [用于框架剖析的估算器配置](debugger-configure-framework-profiling.md)。
+ `rules`— 配置此参数以激活要并行运行的 SageMaker 调试器内置规则。确保您的训练作业可以访问此 S3 存储桶。这些规则在处理容器上运行，并自动分析您的训练作业来发现计算和操作性能问题。[ProfilerReport](debugger-built-in-profiler-rules.md#profiler-report) 规则是集成度最高的规则，它运行所有内置的分析规则，并将分析结果作为报告保存到安全的 S3 存储桶中。要了解如何配置 `rules` 参数，请参阅[使用由 Amazon SageMaker Debugger 管理的内置分析器规则](use-debugger-built-in-profiler-rules.md)。

**注意**  
Debugger 将输出数据安全地保存在默认 S3 存储桶的子文件夹中。例如，默认 S3 存储桶 URI 的格式为 `s3://sagemaker-<region>-<12digit_account_id>/<base-job-name>/<debugger-subfolders>/`。Debugger 创建三个子文件夹：`debug-output`、`profiler-output` 和 `rule-output`。您也可以 URIs 使用 A [SageMaker I 估算器](debugger-estimator-classmethods.md)类方法检索默认 S3 存储桶。

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

**Topics**
+ [用于在 SageMaker AI Python SDK 中使用 Deb SageMaker ugger Python 模块配置 SageMaker AI 估算器对象的代码模板](#debugger-configuration-structure-profiler)
+ [配置设置以对系统资源利用率进行基本分析](debugger-configure-system-monitoring.md)
+ [用于框架剖析的估算器配置](debugger-configure-framework-profiling.md)
+ [在训练作业运行时更新 Debugger 系统监控和框架分析配置](debugger-update-monitoring-profiling.md)
+ [关闭 Debugger](debugger-turn-off-profiling.md)