デバッガーの組み込みルールを設定する - Amazon SageMaker

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

デバッガーの組み込みルールを設定する

Amazon SageMaker Debugger の組み込みルールは、モデルのトレーニング中に出力されるテンソルを分析します。 SageMaker デバッガーは、モデルのトレーニングを成功させるためにトレーニングジョブの進行状況とエラーをモニタリングする Rule API オペレーションを提供します。例えば、ルールによって、勾配が大きすぎたり小さすぎたりしていないか、モデルがオーバーフィットまたはオーバートレーニングになっていないか、トレーニングジョブが損失関数を減少させず改善していないかを検出できます。使用可能な組み込みルールの完全なリストを表示するには、「デバッガーの組み込みルールのリスト」を参照してください。

以下のトピックでは、 SageMaker デバッガーの組み込みルールの使用方法を説明します。

デバッガーの組み込みルールをデフォルトのパラメータ設定で使用する

デバッガーの組み込みルールを推定器の中で指定するには、 リストオブジェクトを設定する必要があります。次のサンプルコードは、デバッガーの組み込みルールをリストする基本構造を示しています。

from sagemaker.debugger import Rule, rule_configs rules=[ Rule.sagemaker(rule_configs.built_in_rule_name_1()), Rule.sagemaker(rule_configs.built_in_rule_name_2()), ... Rule.sagemaker(rule_configs.built_in_rule_name_n()), ... # You can also append more profiler rules in the ProfilerRule.sagemaker(rule_configs.*()) format. ]

デフォルトパラメータ値と組み込みルールの説明の詳細については、「デバッガーの組み込みルールのリスト」を参照してください。

SageMaker デバッガー API リファレンスを確認するには、sagemaker.debugger.rule_configs「」および「」を参照してくださいsagemaker.debugger.Rule

例えば、モデルの全体的なトレーニングパフォーマンスと進行状況を検査するには、次の組み込みルール設定を使用して SageMaker 推定器を作成します。

from sagemaker.debugger import Rule, rule_configs rules=[ Rule.sagemaker(rule_configs.loss_not_decreasing()), Rule.sagemaker(rule_configs.overfit()), Rule.sagemaker(rule_configs.overtraining()), Rule.sagemaker(rule_configs.stalled_training_rule()) ]

トレーニングジョブを開始すると、デバッガーはデフォルトで 500 ミリ秒ごとにシステムリソース使用率データを収集し、500 ステップごとに損失と精度の値を収集します。デバッガーは、リソース使用率を分析して、モデルにボトルネックの問題があるかどうかを特定します。loss_not_decreasingoverfitovertrainingstalled_training_rule は、モデルがこれらのトレーニングの問題を伴わずに損失関数を最適化しているかどうかをモニタリングします。ルールがトレーニングの異常を検出すると、ルールの評価ステータスが IssueFound に変わります。Amazon CloudWatch Events と を使用して、トレーニングの問題の通知やトレーニングジョブの停止などの自動アクションを設定できます AWS Lambda。詳細については、「Amazon SageMaker Debugger ルールのアクション」を参照してください。

デバッガーの組み込みルールをカスタムパラメータ値で使用する

組み込みルールのパラメータ値を調整し、テンソルコレクションの正規表現をカスタマイズする場合は、ProfilerRule.sagemaker および Rule.sagemaker クラスメソッドの base_config および rule_parameters パラメータを設定します。Rule.sagemaker クラスメソッドの場合、collections_to_save パラメータを使用してテンソルコレクションをカスタマイズすることもできます。CollectionConfig クラスの使用方法については、「を使用して Tensor コレクションを設定する CollectionConfig API」を参照してください 。

パラメータ値をカスタマイズするには、組み込みルールに次の設定テンプレートを使用します。好きなようにルールパラメータを変更することで、トリガーされるルールの感度を調整できます。

  • base_config 引数は、組み込みルールメソッドを呼び出す場所です。

  • rule_parameters 引数は、デバッガーの組み込みルールのリスト にリストされている組み込みルールのデフォルトのキーバリューを調整するためのものです。

  • collections_to_save 引数は、CollectionConfig API を介してテンソル設定を取り込むもので、name および parameters 引数が必要です。

デバッガールールクラス、メソッド、パラメータの詳細については、Amazon SageMaker SageMaker Python SDK の「デバッガールールクラス」を参照してください。

from sagemaker.debugger import Rule, ProfilerRule, rule_configs, CollectionConfig rules=[ Rule.sagemaker( base_config=rule_configs.built_in_rule_name(), rule_parameters={ "key": "value" }, collections_to_save=[ CollectionConfig( name="tensor_collection_name", parameters={ "key": "value" } ) ] ) ]

各ルールのパラメータの説明と値のカスタマイズ例については、「デバッガーの組み込みルールのリスト」を参照してください。

デバッガールールを設定するためのサンプルノートブックとコードサンプル

以下のセクションでは、デバッガールールを使用して SageMaker トレーニングジョブをモニタリングする方法のノートブックとコードサンプルについて説明します。

デバッガーの組み込みルールのサンプルノートブック

次のサンプルノートブックは、Amazon でトレーニングジョブを実行するときにデバッガーの組み込みルールを使用する方法を示しています SageMaker。

SageMaker Studio でサンプルノートブックを実行している間、Studio Experiment List タブで作成されたトレーニングジョブトライアルを見つけることができます。例えば、次のスクリーンショットに示すように、現在のトレーニングジョブの [Describe Trial Component] (トライアルコンポーネントの説明) ウィンドウを見つけて開くことができます。[Debugger] (デバッガー) タブでは、デバッガールール vanishing_gradient()loss_not_decreasing() が並列でトレーニングセッションをモニタリングしているかどうかをチェックできます。Studio UI でトレーニングジョブのトライアルコンポーネントを検索する方法の詳細については、SageMaker 「Studio - 実験、トライアル、トライアルコンポーネントの表示」を参照してください。

SageMaker Studio でデバッガーの組み込みルールを有効にしてトレーニングジョブを実行するイメージ

SageMaker 環境でデバッガーの組み込みルールを使用するには、準備時に組み込みルールをデプロイするか、必要に応じてパラメータを調整するという 2 つの方法があります。次のトピックでは、組み込みルールの使用方法をサンプルコードで示します。

デバッガーの組み込みルールのサンプルコード

次のコードサンプルは、Rule.sagemaker メソッドを使用してデバッガーの組み込みルールを設定する方法を示しています。実行する組み込みルールを指定するには、rules_configs API オペレーションを使用して組み込みルールを呼び出します。デバッガーの組み込みルールとデフォルトのパラメータ値の完全なリストについては、「デバッガーの組み込みルールのリスト」を参照してください。

import sagemaker from sagemaker.tensorflow import TensorFlow from sagemaker.debugger import Rule, CollectionConfig, rule_configs # call built-in rules that you want to use. built_in_rules=[ Rule.sagemaker(rule_configs.vanishing_gradient()) Rule.sagemaker(rule_configs.loss_not_decreasing()) ] # construct a SageMaker estimator with the Debugger built-in rules sagemaker_estimator=TensorFlow( entry_point='directory/to/your_training_script.py', role=sm.get_execution_role(), base_job_name='debugger-built-in-rules-demo', instance_count=1, instance_type="ml.p3.2xlarge", framework_version="2.9.0", py_version="py39", # debugger-specific arguments below rules=built_in_rules ) sagemaker_estimator.fit()
注記

デバッガーの組み込みルールは、トレーニングジョブと並列で実行されます。1 つのトレーニングジョブに対する組み込みルールコンテナの最大数は 20 です。

デバッガールールクラス、メソッド、パラメータの詳細については、Amazon SageMaker Python SDKSageMaker 「デバッガールールクラス」を参照してください。

デバッガールールパラメータの調整方法の例については、次の「パラメータ変更でデバッガーの組み込みルールを使用する」セクションを参照してください。

パラメータ変更でデバッガーの組み込みルールを使用する

次のコード例は、パラメータを調整するための組み込みルールの構造を示しています。この例では、stalled_training_rule は、50 ステップごとにトレーニングジョブから、10 ステップごとに評価ステージから losses テンソルコレクションを収集します。トレーニングプロセスが停滞し始め、テンソル出力を 120 秒間収集しない場合、stalled_training_rule はトレーニングジョブを停止します。

import sagemaker from sagemaker.tensorflow import TensorFlow from sagemaker.debugger import Rule, CollectionConfig, rule_configs # call the built-in rules and modify the CollectionConfig parameters base_job_name_prefix= 'smdebug-stalled-demo-' + str(int(time.time())) built_in_rules_modified=[ Rule.sagemaker( base_config=rule_configs.stalled_training_rule(), rule_parameters={ 'threshold': '120', 'training_job_name_prefix': base_job_name_prefix, 'stop_training_on_fire' : 'True' } collections_to_save=[ CollectionConfig( name="losses", parameters={ "train.save_interval": "50" "eval.save_interval": "10" } ) ] ) ] # construct a SageMaker estimator with the modified Debugger built-in rule sagemaker_estimator=TensorFlow( entry_point='directory/to/your_training_script.py', role=sm.get_execution_role(), base_job_name=base_job_name_prefix, instance_count=1, instance_type="ml.p3.2xlarge", framework_version="2.9.0", py_version="py39", # debugger-specific arguments below rules=built_in_rules_modified ) sagemaker_estimator.fit()

CreateTrainingJob API を使用したデバッガーの組み込みルールの高度な設定については、「Amazon SageMaker API を使用してデバッガーを設定する」を参照してください。