

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Debugger の組み込みプロファイラールールのリスト
<a name="debugger-built-in-profiler-rules"></a>

Amazon SageMaker Debugger が提供する Debugger の組み込みルールを使って、モデルのトレーニング中に収集されたメトリクスを分析します。Debugger の組み込みルールは、パフォーマンスの高いトレーニングジョブの実行を成功させるために不可欠なさまざまな共通条件をモニタリングします。組み込みプロファイラールールは、[Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable) または低レベルの SageMaker API オペレーションを使って呼び出せます。組み込みルールの使用に追加料金はかかりません。請求の詳細については、「[Amazon SageMaker の料金](https://aws.amazon.com/sagemaker/pricing/)」のページを参照してください。

**注記**  
トレーニングジョブにアタッチできる組み込みプロファイラールールの最大数は 20 です。SageMaker Debugger は、組み込みルールを完全に管理し、トレーニングジョブを同期的に分析します。

**重要**  
新しいデバッガー機能を使うには、SageMaker Python SDK と SMDebug クライアントライブラリをアップグレードする必要があります。iPython カーネル、Jupyter ノートブック、または JupyterLab 環境で、次のコードを実行して最新バージョンのライブラリをインストールし、カーネルを再起動します。  

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

## プロファイラールール
<a name="debugger-built-in-profiler-rules-ProfilerRule"></a>

次のルールは、`ProfilerRule.sagemaker` クラスメソッド使って呼び出せるデバッガーの組み込みルールです。

プロファイリングレポートを生成するための Debugger 組み込みルール


| 有効範囲 | 組み込みルール | 
| --- | --- | 
| SageMaker トレーニングジョブのプロファイリングレポート |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/debugger-built-in-profiler-rules.html)  | 

ハードウェアシステムのリソース使用率 (システムメトリクス)をプロファイリングするための Debugger 組み込みルール


| 有効範囲 | 組み込みルール | 
| --- | --- | 
| SageMaker トレーニングジョブの一般的なシステムモニタリングルール |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/debugger-built-in-profiler-rules.html)  | 

フレームワークメトリクスをプロファイリングするための Debugger 組み込みルール


| 有効範囲 | 組み込みルール | 
| --- | --- | 
| 深層学習フレームワークのプロファイリングルール (TensorFlow と PyTorch) |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/debugger-built-in-profiler-rules.html)  | 

**警告**  
[Amazon SageMaker Profiler](train-use-sagemaker-profiler.md) に置き換わったので、SageMaker AI Debugger は TensorFlow 2.11 と PyTorch 2.0 以降のフレームワークプロファイリング機能を廃止します。以前のバージョンのフレームワークと SDK でも、次のようにこの機能を引き続き使用できます。  
SageMaker Python SDK <= v2.130.0
PyTorch >= v1.6.0、< v2.0
TensorFlow >= v2.3.1、< v2.11
[2023 年 3 月 16 日](debugger-release-notes.md#debugger-release-notes-20230315) も参照してください。

**デフォルトのパラメータ値で組み込みルールを使用するには** - 次の設定形式を使用します。

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

rules = [
    ProfilerRule.sagemaker(rule_configs.{{BuiltInRuleName_1}}()),
    ProfilerRule.sagemaker(rule_configs.{{BuiltInRuleName_2}}()),
    ...
    ProfilerRule.sagemaker(rule_configs.{{BuiltInRuleName_n}}())
]
```

**パラメータ値をカスタマイズして組み込みルールを使用するには** - 次の設定形式を使用します。

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

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

`rule_parameters` パラメータで利用可能なキーを見つけるに、パラメータの説明テーブルを参照してください。

パラメータの説明テーブルの下に、各組み込みルールのサンプル設定コードが記載されています。
+ デバッガーの組み込みルールの詳細な説明と使用例については、「[Debugger の組み込みルールのサンプルコード](debugger-built-in-rules-example.md#debugger-deploy-built-in-rules)」を参照してください。
+ 組み込みルールを低レベルの SageMaker API オペレーションで使用する方法の詳細な説明については、「[SageMaker API を使って Debugger を設定する](debugger-createtrainingjob-api.md)」を参照してください。

## ProfilerReport
<a name="profiler-report"></a>

ProfilerReport ルールは、モニタリングとプロファイリングのすべての組み込みルールを呼び出します。個々のルールがトリガーされると、プロファイリングレポートが作成され、更新されます。トレーニングジョブの実行中またはトレーニングジョブの完了後に、包括的なプロファイリングレポートをダウンロードできます。ルールパラメータ値を調整することで、組み込みのモニタリングルールとプロファイリングルールの感度をカスタマイズできます。次のサンプルコードは、ProfilerReport ルールを使って組み込みルールパラメータを調整するための基本的な形式を示しています。

```
rules=[
    ProfilerRule.sagemaker(
        rule_configs.ProfilerReport(
            {{<BuiltInRuleName>}}_{{<parameter_name>}} = {{value}}
        )
    )  
]
```

次のサンプルコードに示すように、カスタマイズしたパラメータを使用せずにこの ProfilerReport ルールをトリガーすると、ProfilerReport ルールは、デフォルトのパラメータ値を使って、モニタリングおよびプロファイリングのすべての組み込みルールをトリガーします。

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

次のサンプルコードは、CPUBottleNeck ルールの `cpu_threshold` パラメータと IOBottleNeck ルールの `threshold` パラメータの指定と調整の方法を示しています。

```
rules=[
    ProfilerRule.sagemaker(
        rule_configs.ProfilerReport(
            {{CPUBottleneck_cpu_threshold}} = {{90}},
            {{IOBottleneck_threshold}} = {{90}}
        )
    )  
]
```

プロファイラーレポートの内容を確認するには、「[SageMaker Debugger Profiling Report](https://docs.aws.amazon.com/sagemaker/latest/dg/debugger-profiling-report.html)」を参照してください。また、このルールはすべてのプロファイリングルールを有効にするため、[SageMaker Studio Experiments の SageMaker Debugger UI](https://docs.aws.amazon.com/sagemaker/latest/dg/debugger-on-studio.html) を使用してルール分析ステータスを確認することもできます。

OverallSystemUsage ルールのパラメータの説明


| Parameter Name | 説明 | 
| --- | --- | 
| base\_trial | 基本トライアルトレーニングジョブ名。このパラメータは、Amazon SageMaker デバッガーによって現在のトレーニングジョブに自動的に設定されます。<br />**必須**<br />有効な値: 文字列 | 
| <BuiltInRuleName>\_<parameter\_name> | 他の組み込みのモニタリングルールおよびプロファイリングルールのしきい値を調整するためのカスタマイズ可能なパラメータ。<br />**オプション**<br />デフォルト値: `None` | 

## BatchSize
<a name="batch-size-rule"></a>

BatchSize ルールは、バッチサイズが小さいために GPU が十分に利用されていないか検出するのに役立ちます。この問題を検出するために、このルールは平均 CPU 使用率、GPU 使用率、GPU メモリ使用率をモニタリングします。CPU、GPU、GPU メモリの使用率が平均的に低い場合は、トレーニングジョブをより小さなインスタンスタイプで実行できるか、より大きなバッチサイズで実行できることを示している可能性があります。この分析は、メモリを過剰に割り当てるフレームワークでは機能しません。ただし、バッチサイズを大きくすると、各反復でデータの前処理時間がより多く必要になるため、処理やデータロードのボトルネックが発生する可能性があります。

BatchSize ルールのパラメータの説明


| Parameter Name | 説明 | 
| --- | --- | 
| base\_trial | 基本トライアルトレーニングジョブ名。このパラメータは、Amazon SageMaker デバッガーによって現在のトレーニングジョブに自動的に設定されます。<br />**必須**<br />有効な値: 文字列 | 
| cpu\_threshold\_p95 | CPU 使用率の 95 番目の分位数のしきい値をパーセント単位で定義します。<br />**オプション**<br />有効な値: 整数<br />デフォルト値: `70` (パーセント) | 
| gpu\_threshold\_p95 | GPU 使用率の 95 番目の分位数のしきい値をパーセント単位で定義します。<br />**オプション**<br />有効な値: 整数<br />デフォルト値: `70` (パーセント) | 
| gpu\_memory\_threshold\_p95 | GPU メモリ使用率の 95 番目の分位数のしきい値をパーセント単位で定義します。<br />**オプション**<br />有効な値: 整数<br />デフォルト値: `70` (パーセント) | 
| patience | ルールが評価を開始するまでにスキップするデータポイントの数を定義します。通常、トレーニングジョブの最初の数ステップでは大量のデータ処理が表示されるため、ルールを抑え気味に保ち、このパラメータで指定するプロファイリングデータの特定の数を使ってルールがすぐに呼び出されないようにします。<br />**オプション**<br />有効な値: 整数<br />デフォルト値: `100` | 
| window | 分位数を計算するためのウィンドウサイズ。<br />**オプション**<br />有効な値: 整数<br />デフォルト値: `500` | 
| scan\_interval\_us | タイムラインファイルがスキャンされる時間間隔。<br />**オプション**<br />有効な値: 整数<br />デフォルト値: `60000000` (マイクロ秒) | 

## CPUBottleneck
<a name="cpu-bottleneck"></a>

CPUBottleneck ルールは、CPU のボトルネックのために GPU が十分に利用されていないか検出するのに役立ちます。CPU のボトルネックの数が事前定義されたしきい値を超えた場合、ルールは true を返します。

CPUBottleneck ルールのパラメータの説明


| Parameter Name | 説明 | 
| --- | --- | 
| base\_trial | 基本トライアルトレーニングジョブ名。このパラメータは、Amazon SageMaker デバッガーによって現在のトレーニングジョブに自動的に設定されます。<br />**必須**<br />有効な値: 文字列 | 
| threshold | 合計トレーニング時間に対するボトルネック時間の割合のしきい値を定義します。この割合がしきい値パラメータに指定されたパーセンテージを超えた場合、ルールはルールのステータスを true に切り替えます。<br />**オプション**<br />有効な値: 整数<br />デフォルト値: `50` (パーセント) | 
| gpu\_threshold | 低 GPU 使用率を定義するしきい値。<br />**オプション**<br />有効な値: 整数<br />デフォルト値: `10` (パーセント) | 
| cpu\_threshold | 高 CPU 使用率を定義するしきい値。<br />**オプション**<br />有効な値: 整数<br />デフォルト値: `90` (パーセント) | 
| patience | ルールが評価を開始するまでにスキップするデータポイントの数を定義します。通常、トレーニングジョブの最初の数ステップでは大量のデータ処理が表示されるため、ルールを抑え気味に保ち、このパラメータで指定するプロファイリングデータの特定の数を使ってルールがすぐに呼び出されないようにします。<br />**オプション**<br />有効な値: 整数<br />デフォルト値: `100` | 
| scan\_interval\_us | タイムラインファイルがスキャンされる時間間隔。<br />**オプション**<br />有効な値: 整数<br />デフォルト値: `60000000` (マイクロ秒) | 

## GPUMemoryIncrease
<a name="gpu-memory-increase"></a>

GPUMemoryIncrease ルールは、GPU のメモリ使用量の大幅な増加を検出するのに役立ちます。

GPUMemoryIncrease ルールのパラメータの説明


| Parameter Name | 説明 | 
| --- | --- | 
| base\_trial | 基本トライアルトレーニングジョブ名。このパラメータは、Amazon SageMaker デバッガーによって現在のトレーニングジョブに自動的に設定されます。<br />**必須**<br />有効な値: 文字列 | 
| increase | 絶対メモリ増加のしきい値を定義します。<br />**オプション**<br />有効な値: 整数<br />デフォルト値: `10` (パーセント) | 
| patience | ルールが評価を開始するまでにスキップするデータポイントの数を定義します。通常、トレーニングジョブの最初の数ステップでは大量のデータ処理が表示されるため、ルールを抑え気味に保ち、このパラメータで指定するプロファイリングデータの特定の数を使ってルールがすぐに呼び出されないようにします。<br />**オプション**<br />有効な値: 整数<br />デフォルト値: `100` | 
| window | 分位数を計算するためのウィンドウサイズ。<br />**オプション**<br />有効な値: 整数<br />デフォルト値: `500` | 
| scan\_interval\_us | タイムラインファイルがスキャンされる時間間隔。<br />**オプション**<br />有効な値: 整数<br />デフォルト値: `60000000` (マイクロ秒) | 

## IOBottleneck
<a name="io-bottleneck"></a>

このルールは、データ I/O のボトルネックのために GPU が十分に利用されていないか検出するのに役立ちます。IO のボトルネックの数が事前定義されたしきい値を超えた場合、ルールは true を返します。

IOBottleneck ルールのパラメータの説明


| Parameter Name | 説明 | 
| --- | --- | 
| base\_trial | 基本トライアルトレーニングジョブ名。このパラメータは、Amazon SageMaker デバッガーによって現在のトレーニングジョブに自動的に設定されます。<br />**必須**<br />有効な値: 文字列 | 
| threshold | ルールが true を返すときのしきい値を定義します。**オプション**<br />有効な値: 整数<br />デフォルト値: `50` (パーセント) | 
| gpu\_threshold | GPU が十分に利用されていないと見なされるタイミングを定義するしきい値。<br />**オプション**<br />有効な値: 整数<br />デフォルト値: `70` (パーセント) | 
| io\_threshold | 高 IO 待機時間を定義するしきい値。**オプション**<br />有効な値: 整数<br />デフォルト値: `50` (パーセント) | 
| patience | ルールが評価を開始するまでにスキップするデータポイントの数を定義します。通常、トレーニングジョブの最初の数ステップでは大量のデータ処理が表示されるため、ルールを抑え気味に保ち、このパラメータで指定するプロファイリングデータの特定の数を使ってルールがすぐに呼び出されないようにします。**オプション**<br />有効な値: 整数<br />デフォルト値: `1000` | 
| scan\_interval\_us | タイムラインファイルがスキャンされる時間間隔。<br />**オプション**<br />有効な値: 整数<br />デフォルト値: `60000000` (マイクロ秒) | 

## LoadBalancing
<a name="load-balancing"></a>

LoadBalancing ルールは、複数の GPU 間のワークロードバランスの問題を検出するのに役立ちます。

LoadBalancing ルールのパラメータの説明


| Parameter Name | 説明 | 
| --- | --- | 
| base\_trial | 基本トライアルトレーニングジョブ名。このパラメータは、Amazon SageMaker デバッガーによって現在のトレーニングジョブに自動的に設定されます。<br />**必須**<br />有効な値: 文字列 | 
| threshold | ワークロードのパーセンテージを定義します。<br />**オプション**<br />有効な値: 整数<br />デフォルト値: `0.5` (単位なしの割合) | 
| patience | ルールが評価を開始するまでにスキップするデータポイントの数を定義します。通常、トレーニングジョブの最初の数ステップでは大量のデータ処理が表示されるため、ルールを抑え気味に保ち、このパラメータで指定するプロファイリングデータの特定の数を使ってルールがすぐに呼び出されないようにします。<br />**オプション**<br />有効な値: 整数<br />デフォルト値: `10` | 
| scan\_interval\_us | タイムラインファイルがスキャンされる時間間隔。<br />**オプション**<br />有効な値: 整数<br />デフォルト値: `60000000` (マイクロ秒) | 

## LowGPUUtilization
<a name="low-gpu-utilization"></a>

LowGPUUtilization ルールは、GPU の使用率が低い、または変動による影響を受けていないか検出するのに役立ちます。これは、各ワーカーの GPU ごとにチェックされます。95 番目の分位数が低使用率を示す threshold\_p95 を下回ると、ルールは true を返します。95 番目の分位数が threshold\_p95 を上回り、5 番目の分位数が変動を示す threshold\_p5 を下回ると、ルールは true を返します。

LowGPUUtilization ルールのパラメータの説明


| Parameter Name | 説明 | 
| --- | --- | 
| base\_trial | 基本トライアルトレーニングジョブ名。このパラメータは、Amazon SageMaker デバッガーによって現在のトレーニングジョブに自動的に設定されます。<br />**必須**<br />有効な値: 文字列 | 
| threshold\_p95 | これを下回ると GPU が十分に利用されていないと見なされる 95 番目の分位数のしきい値。<br />**オプション**<br />有効な値: 整数<br />デフォルト値: `70` (パーセント) | 
| threshold\_p5 | 5 番目の分位数のしきい値。デフォルトは 10 パーセントです。**オプション**<br />有効な値: 整数<br />デフォルト値: `10` (パーセント) | 
| patience | ルールが評価を開始するまでにスキップするデータポイントの数を定義します。通常、トレーニングジョブの最初の数ステップでは大量のデータ処理が表示されるため、ルールを抑え気味に保ち、このパラメータで指定するプロファイリングデータの特定の数を使ってルールがすぐに呼び出されないようにします。<br />**オプション**<br />有効な値: 整数<br />デフォルト値: `1000` | 
| window | 分位数を計算するためのウィンドウサイズ。<br />**オプション**<br />有効な値: 整数<br />デフォルト値: `500` | 
| scan\_interval\_us | タイムラインファイルがスキャンされる時間間隔。<br />**オプション**<br />有効な値: 整数<br />デフォルト値: `60000000` (マイクロ秒) | 

## OverallSystemUsage
<a name="overall-system-usage"></a>

OverallSystemUsage ルールは、ワーカーノードごとの全体的なシステム使用量を測定します。このルールは現在、ノードごとの値を集約し、そのパーセンタイルを計算するだけです。

OverallSystemUsage ルールのパラメータの説明


| Parameter Name | 説明 | 
| --- | --- | 
| base\_trial | 基本トライアルトレーニングジョブ名。このパラメータは、Amazon SageMaker デバッガーによって現在のトレーニングジョブに自動的に設定されます。<br />**必須**<br />有効な値: 文字列 | 
| scan\_interval\_us | タイムラインファイルをスキャンする時間間隔。<br />**オプション**<br />有効な値: 整数<br />デフォルト値: `60000000` (マイクロ秒) | 

## MaxInitializationTime
<a name="max-initialization-time"></a>

MaxInitializationTime ルールは、トレーニングの初期化に時間がかかりすぎていないか検出するのに役立ちます。ルールは、最初のステップが利用可能になるまで待機します。

MaxInitializationTime ルールのパラメータの説明


| Parameter Name | 説明 | 
| --- | --- | 
| base\_trial | 基本トライアルトレーニングジョブ名。このパラメータは、Amazon SageMaker デバッガーによって現在のトレーニングジョブに自動的に設定されます。<br />**必須**<br />有効な値: 文字列 | 
| threshold | 最初のステップが使用可能になるまでの待機時間のしきい値を分単位で定義します。<br />**オプション**<br />有効な値: 整数<br />デフォルト値: `20` (分) | 
| scan\_interval\_us | タイムラインファイルがスキャンされる時間間隔。<br />**オプション**<br />有効な値: 整数<br />デフォルト値: `60000000` (マイクロ秒) | 

## OverallFrameworkMetrics
<a name="overall-framework-metrics"></a>

OverallFrameworkMetrics ルールは、フォワードパス、バックワードパス、データロードなど、フレームワークメトリクスにかかった時間を集約します。

OverallFrameworkMetrics ルールのパラメータの説明


| Parameter Name | 説明 | 
| --- | --- | 
| base\_trial | 基本トライアルトレーニングジョブ名。このパラメータは、Amazon SageMaker デバッガーによって現在のトレーニングジョブに自動的に設定されます。<br />**必須**<br />有効な値: 文字列 | 
| scan\_interval\_us | タイムラインファイルをスキャンする時間間隔。<br />**オプション**<br />有効な値: 整数<br />デフォルト値: `60000000` (マイクロ秒) | 

## StepOutlier
<a name="step-outlier"></a>

StepOutlier ルールは、ステップ期間の外れ値を検出するのに役立ちます。このルールは、一定の時間範囲内のステップ期間にステップ期間全体の `stddev` シグマよりも大きな外れ値がある場合に `True` を返します。

StepOutlier ルールのパラメータの説明


| Parameter Name | 説明 | 
| --- | --- | 
| base\_trial | 基本トライアルトレーニングジョブ名。このパラメータは、Amazon SageMaker デバッガーによって現在のトレーニングジョブに自動的に設定されます。<br />**必須**<br />有効な値: 文字列 | 
| stddev | 標準偏差を乗算する係数を定義します。例えば、デフォルトでステップ期間が標準偏差の 5 倍より大きいか小さい場合、ルールが呼び出されます。<br />**オプション**<br />有効な値: 整数<br />デフォルト値: `5` (分) | 
| mode | ステップが保存され、ルールが実行されるモード。デフォルトでは、ルールは EVAL および TRAIN フェーズのステップで実行されます。**オプション**<br />有効な値: 整数<br />デフォルト値: `5` (分) | 
| n\_outliers | ルールが true を返すまでに無視する外れ値の数**オプション**<br />有効な値: 整数<br />デフォルト値: `10` | 
| scan\_interval\_us | タイムラインファイルがスキャンされる時間間隔。<br />**オプション**<br />有効な値: 整数<br />デフォルト値: `60000000` (マイクロ秒) | 