

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用透過 Amazon SageMaker Debugger 管理的內建剖析工具規則
<a name="use-debugger-built-in-profiler-rules"></a>

Amazon SageMaker Debugger 內建剖析工具規則會分析模型訓練期間所收集的系統指標和架構操作。Debugger 提供 `ProfilerRule` API 作業，可協助設定規則來監控訓練運算資源和操作，並偵測異常情況。例如，分析規則可協助您偵測是否存在運算問題，例如 CPU 瓶頸、I/O 等待時間過長、GPU 工作者的工作負載不平衡，以及運算資源使用量過低。若要查看內建之可用分析規則的完整清單，請參閱[偵錯工具內建剖析工具規則清單](debugger-built-in-profiler-rules.md)。下列主題示範如何使用 Debugger 內建規則搭配預設參數設定和自訂參數值。

**注意**  
內建規則透過 Amazon SageMaker Processing 容器提供，並由 SageMaker Debugger 完全管理，無須額外付費。如需帳單的詳細資訊，請參閱 [Amazon SageMaker 定價](https://aws.amazon.com/sagemaker/pricing/)的頁面。

**Topics**
+ [使用 SageMaker Debugger 內建剖析工具規則及其預設參數設定](#debugger-built-in-profiler-rules-configuration)
+ [使用 Debugger 內建剖析工具規則及自訂參數值](#debugger-built-in-profiler-rules-configuration-param-change)

## 使用 SageMaker Debugger 內建剖析工具規則及其預設參數設定
<a name="debugger-built-in-profiler-rules-configuration"></a>

若要在估算器中新增 SageMaker Debugger 內建規則，您需要設定 `rules` 清單物件。下列範例程式碼顯示列出 SageMaker Debugger 內建規則的基本結構。

```
from sagemaker.debugger import Rule, ProfilerRule, rule_configs

rules=[
    ProfilerRule.sagemaker(rule_configs.BuiltInProfilerRuleName_1()),
    ProfilerRule.sagemaker(rule_configs.BuiltInProfilerRuleName_2()),
    ...
    ProfilerRule.sagemaker(rule_configs.BuiltInProfilerRuleName_n()),
    ... # You can also append more debugging rules in the Rule.sagemaker(rule_configs.*()) format.
]

estimator=Estimator(
    ...
    rules=rules
)
```

如需可用內建規則的完整清單，請參閱[偵錯工具內建剖析工具規則清單](debugger-built-in-profiler-rules.md)。

若要使用分析規則並檢查訓練任務的運算效能和進度，請新增 SageMaker Debugger 的 [https://docs.aws.amazon.com/sagemaker/latest/dg/debugger-built-in-profiler-rules.html#profiler-report](https://docs.aws.amazon.com/sagemaker/latest/dg/debugger-built-in-profiler-rules.html#profiler-report) 規則。此規則會啟用[Debugger ProfilerRule](https://docs.aws.amazon.com/sagemaker/latest/dg/debugger-built-in-profiler-rules.html#debugger-built-in-profiler-rules-ProfilerRule) `ProfilerRule` 系列下的所有內建規則。此外，此規則會產生彙總分析報告。如需詳細資訊，請參閱[使用 SageMaker Debugger 所產生的分析報告](https://docs.aws.amazon.com/sagemaker/latest/dg/debugger-profiling-report.html)。您可以使用下列程式碼，將分析報告規則新增至訓練估算器。

```
from sagemaker.debugger import Rule, rule_configs

rules=[
    ProfilerRule.sagemaker(rule_configs.ProfilerReport())
]
```

當您使用 `ProfilerReport` 規則來啟動訓練任務時，Debugger 會每 500 毫秒收集一次資源使用率資料。Debugger 會分析資源使用率，來識別您的模型是否有瓶頸問題。如果規則偵測到訓練有異常狀況，則規則評估狀態會變更為 `IssueFound`。您可以設定自動化動作，例如使用 Amazon CloudWatch Events 和 AWS Lambda來通知訓練問題和停止訓練任務。如需詳細資訊，請參閱[Amazon SageMaker Debugger 規則的動作](debugger-action-on-rules.md)。

## 使用 Debugger 內建剖析工具規則及自訂參數值
<a name="debugger-built-in-profiler-rules-configuration-param-change"></a>

如果您想要調整內建規則參數值並自訂張量集合 Regex，請設定 `ProfilerRule.sagemaker` 和 `Rule.sagemaker` 類別方法的 `base_config` 和 `rule_parameters` 參數。對於 `Rule.sagemaker` 類別方法，您還可以透過 `collections_to_save` 參數自訂張量集合。如需如何使用 `CollectionConfig` 類別的指示，請參閱[使用 `CollectionConfig` API 設定張量集合](debugger-configure-tensor-collections.md)。

使用下列內建規則的組態範本來自訂參數值。您可以視需要變更規則參數，調整要啟動的規則敏感度。
+ `base_config` 引數是您呼叫內建規則方法的位置。
+ `rule_parameters` 引數是調整[偵錯工具內建剖析工具規則清單](debugger-built-in-profiler-rules.md)中所列出的內建規則預設金鑰值。

有關 Debugger 規則類別、方法和參數的詳細資訊，請參閱 [Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable) 中的 [SageMaker AI Debugger 規則類別](https://sagemaker.readthedocs.io/en/stable/api/training/debugger.html)。

```
from sagemaker.debugger import Rule, ProfilerRule, rule_configs, CollectionConfig

rules=[
    ProfilerRule.sagemaker(
        base_config=rule_configs.BuiltInProfilerRuleName(),
        rule_parameters={
                "key": "value"
        }
    )
]
```

針對[偵錯工具內建剖析工具規則清單](debugger-built-in-profiler-rules.md)中的每個規則提供參數描述和參數值自訂範例。

如需使用 `CreateTrainingJob` API 之 Debugger 內建規則的低階 JSON 組態，請參閱[使用 SageMaker API 設定 Debugger](debugger-createtrainingjob-api.md)。