テンソルを保存するように SageMaker デバッガーを設定する - Amazon SageMaker

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

テンソルを保存するように SageMaker デバッガーを設定する

テンソルは、各トレーニング反復のバックワードパスとフォワードパスから更新されたパラメータのデータ収集です。 SageMaker デバッガーは出力テンソルを収集してトレーニングジョブの状態を分析します。 SageMaker デバッガーの CollectionConfigおよび DebuggerHookConfigAPIオペレーションは、テンソルをコレクションにグループ化してターゲット S3 バケットに保存する方法を提供します。

注記

正しく設定およびアクティブ化されると、特に指定がない限り、 SageMaker デバッガーは出力テンソルをデフォルトの S3 バケットに保存します。デフォルトの S3 バケットの形式は URIですs3://sagemaker-<region>-<12digit_account_id>/<training-job-name>/debug-output/

SageMaker 推定器の構築中に、 debugger_hook_configパラメータを指定して SageMaker デバッガーをアクティブ化します。次の手順には、 CollectionConfigおよび DebuggerHookConfigAPIオペレーションdebugger_hook_configを使用してトレーニングジョブからテンソルをプルして保存する を設定する方法の例が含まれています。

を使用して Tensor コレクションを設定する CollectionConfig API

CollectionConfig API オペレーションを使用してテンソルコレクションを設定します。デバッガーは、デバッガーがサポートする深層学習フレームワークと機械学習アルゴリズムを使用している場合、パラメータのさまざまな正規表現 (regex) をカバーする構築済みのテンソルコレクションを提供します。次のサンプルコードに示すように、デバッグする組み込みテンソルコレクションを追加します。

from sagemaker.debugger import CollectionConfig collection_configs=[ CollectionConfig(name="weights"), CollectionConfig(name="gradients") ]

上記のコレクションは、デフォルトの "save_interval" 値に基づいて 500 ステップごとにテンソルを保存するようにデバッガーフックを設定します。

利用可能なデバッガーの組み込みコレクションの完全なリストについては、「デバッガー組み込みコレクション」を参照してください。

保存間隔やテンソル正規表現の変更など、組み込みコレクションをカスタマイズする場合は、次の CollectionConfig テンプレートを使用してパラメータを調整します。

from sagemaker.debugger import CollectionConfig collection_configs=[ CollectionConfig( name="tensor_collection", parameters={ "key_1": "value_1", "key_2": "value_2", ... "key_n": "value_n" } ) ]

使用可能なパラメータキーの詳細については、Amazon Python CollectionConfig の「」を参照してください。 SageMaker SDK例えば、次のコード例は、トレーニングのさまざまなフェーズで「損失」テンソルコレクションの保存間隔を調整する方法を示しています。トレーニングフェーズでは 100 ステップごとに損失を保存し、検証フェーズでは 10 ステップごとに検証損失を保存します。

from sagemaker.debugger import CollectionConfig collection_configs=[ CollectionConfig( name="losses", parameters={ "train.save_interval": "100", "eval.save_interval": "10" } ) ]
ヒント

このテンソルコレクション設定オブジェクトは、 DebuggerHookConfigおよび ルールAPIオペレーションの両方に使用できます。

テンソルを保存するDebuggerHookConfigAPIように を設定する

DebuggerHookConfig API を使用して、前のステップで作成したdebugger_hook_configオブジェクトを使用してcollection_configsオブジェクトを作成します。

from sagemaker.debugger import DebuggerHookConfig debugger_hook_config=DebuggerHookConfig( collection_configs=collection_configs )

デバッガーは、モデルトレーニング出力テンソルをデフォルトの S3 バケットに保存します。デフォルトの S3 バケットの形式は URIです。 s3://sagemaker-<region>-<12digit_account_id>/<training-job-name>/debug-output/.

正確な S3 バケット を指定する場合はURI、次のコード例を使用します。

from sagemaker.debugger import DebuggerHookConfig debugger_hook_config=DebuggerHookConfig( s3_output_path="specify-your-s3-bucket-uri" collection_configs=collection_configs )

詳細については、Amazon Python DebuggerHookConfigの「」を参照してください。 SageMaker SDK

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

次のセクションでは、デバッガーフックを使って出力テンソルを保存、アクセス、視覚化する方法のノートブックとコード例を示しています。

テンソル可視化の例のノートブック

次の 2 つのノートブック例は、テンソルを視覚化するための Amazon SageMaker Debugger の高度な使用を示しています。デバッガーは、深層学習モデルのトレーニングを透過的に表示します。

  • を使用した SageMaker Studio ノートブックのインタラクティブテンソル分析 MXNet

    このノートブックの例は、Amazon SageMaker Debugger を使用して保存されたテンソルを視覚化する方法を示しています。テンソルを視覚化することで、深層学習アルゴリズムのトレーニング中にテンソル値がどのように変化するかが見えます。このノートブックには、ニューラルネットワークの設定が不十分なトレーニングジョブが含まれており、Amazon SageMaker Debugger を使用して、勾配、アクティベーション出力、重みなどのテンソルを集計および分析します。たとえば、次の図は、勾配消失の問題が発生している畳み込みレイヤーの勾配の分布を示しています。

    勾配の分布をプロットしたグラフ。

    また、このノートブックは、ハイパーパラメータを最初から適切に設定することにより、同じテンソルの分布図を作成してトレーニングプロセスが改善されることを示しています。

  • MXNetモデルトレーニングからのテンソルの視覚化とデバッグ

    このノートブックの例は、Amazon SageMaker Debugger を使用して Gluon MXNet モデルトレーニングジョブからテンソルを保存および視覚化する方法を示しています。これは、デバッガーがすべてのテンソルを Amazon S3 バケットに保存し、視覚化の ReLu アクティベーション出力を取得するように設定されていることを示しています。次の図は、 ReLu アクティベーション出力の 3 次元視覚化を示しています。カラースキームは、0 に近い値を示す青色と 1 に近い値を示す黄色に設定されています。

    ReLU 活性化関数の出力の視覚化

    このノートブックでは、 からインポートされた TensorPlot クラスtensor_plot.pyは、入力用に 2 次元画像を取得する畳み込みニューラルネットワーク (CNNs) をプロットするように設計されています。ノートブックに付属するtensor_plot.pyスクリプトは、デバッガーを使用してテンソルを取得し、 を視覚化しますCNN。 SageMaker Studio でこのノートブックを実行すると、テンソルの視覚化を再現し、独自の畳み込みニューラルネットワークモデルを実装できます。

  • を使用した SageMaker ノートブックのリアルタイムテンソル分析 MXNet

    この例では、Amazon SageMaker トレーニングジョブでテンソルを出力するために必要なコンポーネントをインストールし、トレーニングの実行中にデバッガーAPIオペレーションを使用してそれらのテンソルにアクセスする手順を説明します。グルーンCNNモデルは、MNISTデータセットでトレーニングされます。ジョブの実行中に、デバッガーが 100 個のバッチそれぞれから最初の畳み込みレイヤーの活性化関数の出力を取得して視覚化する方法を確認できます。また、ジョブの終了後に重みを視覚化する方法も表示されます。

デバッガー組み込みコレクションを使ってテンソルを保存する

を使用してテンソルの組み込みコレクションを使用しCollectionConfigAPI、 DebuggerHookConfig を使用して保存できますAPI。次の例は、デバッガーフック設定のデフォルト設定を使用して SageMaker TensorFlow 推定器を構築する方法を示しています。これは、MXNet、 PyTorch、および XGBoost 推定器にも利用できます。

注記

次のサンプルコードでは、DebuggerHookConfigs3_output_path パラメータはオプションです。指定しない場合、デバッガーはテンソルを に保存します。ここでs3://<output_path>/debug-output/<output_path>は SageMaker トレーニングジョブのデフォルトの出力パスです。例:

"s3://sagemaker-us-east-1-111122223333/sagemaker-debugger-training-YYYY-MM-DD-HH-MM-SS-123/debug-output"
import sagemaker from sagemaker.tensorflow import TensorFlow from sagemaker.debugger import DebuggerHookConfig, CollectionConfig # use Debugger CollectionConfig to call built-in collections collection_configs=[ CollectionConfig(name="weights"), CollectionConfig(name="gradients"), CollectionConfig(name="losses"), CollectionConfig(name="biases") ] # configure Debugger hook # set a target S3 bucket as you want sagemaker_session=sagemaker.Session() BUCKET_NAME=sagemaker_session.default_bucket() LOCATION_IN_BUCKET='debugger-built-in-collections-hook' hook_config=DebuggerHookConfig( s3_output_path='s3://{BUCKET_NAME}/{LOCATION_IN_BUCKET}'. format(BUCKET_NAME=BUCKET_NAME, LOCATION_IN_BUCKET=LOCATION_IN_BUCKET), collection_configs=collection_configs ) # construct a SageMaker TensorFlow estimator sagemaker_estimator=TensorFlow( entry_point='directory/to/your_training_script.py', role=sm.get_execution_role(), base_job_name='debugger-demo-job', instance_count=1, instance_type="ml.p3.2xlarge", framework_version="2.9.0", py_version="py39", # debugger-specific hook argument below debugger_hook_config=hook_config ) sagemaker_estimator.fit()

デバッガーの組み込みコレクションのリストを見るには、「デバッガー組み込みコレクション」を参照してください。

デバッガーの変更済み組み込みコレクションを使ってテンソルを保存する

CollectionConfig API オペレーションを使用して、デバッガーの組み込みコレクションを変更できます。次の例は、組み込みlossesコレクションを微調整し、 SageMaker TensorFlow 推定器を構築する方法を示しています。これは、MXNet、、 PyTorchおよび XGBoost 推定器にも使用できます。

import sagemaker from sagemaker.tensorflow import TensorFlow from sagemaker.debugger import DebuggerHookConfig, CollectionConfig # use Debugger CollectionConfig to call and modify built-in collections collection_configs=[ CollectionConfig( name="losses", parameters={"save_interval": "50"})] # configure Debugger hook # set a target S3 bucket as you want sagemaker_session=sagemaker.Session() BUCKET_NAME=sagemaker_session.default_bucket() LOCATION_IN_BUCKET='debugger-modified-collections-hook' hook_config=DebuggerHookConfig( s3_output_path='s3://{BUCKET_NAME}/{LOCATION_IN_BUCKET}'. format(BUCKET_NAME=BUCKET_NAME, LOCATION_IN_BUCKET=LOCATION_IN_BUCKET), collection_configs=collection_configs ) # construct a SageMaker TensorFlow estimator sagemaker_estimator=TensorFlow( entry_point='directory/to/your_training_script.py', role=sm.get_execution_role(), base_job_name='debugger-demo-job', instance_count=1, instance_type="ml.p3.2xlarge", framework_version="2.9.0", py_version="py39", # debugger-specific hook argument below debugger_hook_config=hook_config ) sagemaker_estimator.fit()

CollectionConfig パラメータの完全なリストについては、「デバッガー CollectionConfig API」を参照してください。

デバッガーカスタムコレクションを使ってテンソルを保存する

Amazon S3 バケットに保存するデータ量を削減したい場合などは、すべてのテンソルを保存するのではなく、テンソルの保存数を減らすこともできます。次の例は、デバッガーフック設定をカスタマイズして、保存するターゲットテンソルを指定する方法を示しています。これは、 TensorFlow、、MXNet PyTorchおよび XGBoost 推定器に使用できます。

import sagemaker from sagemaker.tensorflow import TensorFlow from sagemaker.debugger import DebuggerHookConfig, CollectionConfig # use Debugger CollectionConfig to create a custom collection collection_configs=[ CollectionConfig( name="custom_activations_collection", parameters={ "include_regex": "relu|tanh", # Required "reductions": "mean,variance,max,abs_mean,abs_variance,abs_max" }) ] # configure Debugger hook # set a target S3 bucket as you want sagemaker_session=sagemaker.Session() BUCKET_NAME=sagemaker_session.default_bucket() LOCATION_IN_BUCKET='debugger-custom-collections-hook' hook_config=DebuggerHookConfig( s3_output_path='s3://{BUCKET_NAME}/{LOCATION_IN_BUCKET}'. format(BUCKET_NAME=BUCKET_NAME, LOCATION_IN_BUCKET=LOCATION_IN_BUCKET), collection_configs=collection_configs ) # construct a SageMaker TensorFlow estimator sagemaker_estimator=TensorFlow( entry_point='directory/to/your_training_script.py', role=sm.get_execution_role(), base_job_name='debugger-demo-job', instance_count=1, instance_type="ml.p3.2xlarge", framework_version="2.9.0", py_version="py39", # debugger-specific hook argument below debugger_hook_config=hook_config ) sagemaker_estimator.fit()

CollectionConfig パラメータの完全なリストについては、「デバッガー CollectionConfig」を参照してください。