トレーニングジョブ分析用のデバッガーカスタムルールを作成する - Amazon SageMaker

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

トレーニングジョブ分析用のデバッガーカスタムルールを作成する

デバッガールール API と、独自のルールコンテナ構築のためのツールを提供するオープンソースの smdebug Python ライブラリを使って、トレーニングジョブをモニタリングするカスタムルールを作成できます。

デバッガーカスタムルールを作成するための前提条件

デバッガーカスタムルールの作成には、次の前提条件が必要です。

デバッガークライアントライブラリ smdebug を使ってカスタムルール Python スクリプトを作成する

smdebug ルール API は、独自のカスタムルールを設定するためのインターフェイスを提供します。次の Python スクリプトは、カスタムルール CustomGradientRule の作成方法のサンプルです。このチュートリアルカスタムルールは、勾配が大きくなりすぎていないかどうかをモニタリングするもので、デフォルトのしきい値を 10 に設定しています。カスタムルールは、推定器がトレーニングジョブを開始するときに、 SageMaker 推定器によって作成された基本トライアルを実行します。

from smdebug.rules.rule import Rule class CustomGradientRule(Rule): def __init__(self, base_trial, threshold=10.0): super().__init__(base_trial) self.threshold = float(threshold) def invoke_at_step(self, step): for tname in self.base_trial.tensor_names(collection="gradients"): t = self.base_trial.tensor(tname) abs_mean = t.reduction_value(step, "mean", abs=True) if abs_mean > self.threshold: return True return False

次のセクションでカスタムルールオブジェクトを構築することで、同じ Python スクリプトに必要な数のカスタムルールクラスを追加し、どのトレーニングジョブトライアルにもデプロイできます。

デバッガー API を使って独自のカスタムルールを実行する

次のコードサンプルは、Amazon SageMaker Python SDK を使用してカスタムルールを設定する方法を示しています。この例では、前のステップで作成したカスタムルールスクリプトが「path/to/my_custom_rule.py」にあることを前提としています。

from sagemaker.debugger import Rule, CollectionConfig custom_rule = Rule.custom( name='MyCustomRule', image_uri='759209512951.dkr.ecr.us-west-2.amazonaws.com/sagemaker-debugger-rule-evaluator:latest', instance_type='ml.t3.medium', source='path/to/my_custom_rule.py', rule_to_invoke='CustomGradientRule', collections_to_save=[CollectionConfig("gradients")], rule_parameters={"threshold": "20.0"} )

次のリストでは、デバッガー Rule.custom API の引数について説明します。

  • name (str): 自由なカスタムルール名を指定します。

  • image_uri (str): これは、独自のカスタムルールを理解するロジックを持つコンテナのイメージです。トレーニングジョブで保存した指定されたテンソルコレクションを取得して評価します。オープンソースの SageMaker ルールエバリュエーターイメージのリストは、 から確認できますカスタムルールエバリュエーターの Amazon SageMaker Debugger レジストリ URLs

  • instance_type (str): ルール Docker コンテナを構築するためのインスタンスを指定する必要があります。これにより、トレーニングコンテナと並列でインスタンスがスピンアップされます。

  • source (str): これは、カスタムルールスクリプトへのローカルパスまたは Amazon S3 URI です。

  • rule_to_invoke (str): これは、カスタムルールスクリプト内の特定のルールクラスの実装を指定します。 は、ルールジョブで一度に評価されるルールを 1 つだけ SageMaker サポートします。

  • collections_to_save (str): ルールを実行するために保存するテンソルコレクションを指定します。

  • rule_parameters (dictionary): ディクショナリ形式のパラメータ入力を受け入れます。カスタムルールスクリプトで設定したパラメータを調整できます。

custom_rule オブジェクトを設定したら、これを使用して任意のトレーニングジョブの SageMaker 推定器を構築できます。トレーニングスクリプトへの entry_point を指定します。トレーニングスクリプトを変更する必要はありません。

from sagemaker.tensorflow import TensorFlow estimator = TensorFlow( role=sagemaker.get_execution_role(), base_job_name='smdebug-custom-rule-demo-tf-keras', entry_point='path/to/your_training_script.py' train_instance_type='ml.p2.xlarge' ... # debugger-specific arguments below rules = [custom_rule] ) estimator.fit()

デバッガーのカスタムルールを使うその他のバリエーションと高度な例については、次のサンプルノートブックを参照してください。