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

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

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

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

Tensor ビジュアライゼーションのサンプルノートブック

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

  • を使用した SageMaker Studio Notebook でのインタラクティブテンソル分析 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モデルは、Fashion MNISTデータセットでトレーニングされます。ジョブの実行中に、デバッガーが 100 個のバッチそれぞれから最初の畳み込みレイヤーの活性化関数の出力を取得して視覚化する方法を確認できます。また、ジョブの終了後に重みを視覚化する方法も表示されます。

Debugger 組み込みコレクションを使用してテンソルを保存する

を使用してテンソルの組み込みコレクションを使用し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」を参照してください。