翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
テンソルを保存するように SageMaker デバッガーを設定する
テンソルは、各トレーニング反復のバックワードパスとフォワードパスから更新されたパラメータのデータ収集です。 SageMaker デバッガーは出力テンソルを収集してトレーニングジョブの状態を分析します。 SageMaker デバッガーの CollectionConfig
DebuggerHookConfig
注記
正しく設定およびアクティブ化されると、特に指定がない限り、 SageMaker デバッガーは出力テンソルをデフォルトの S3 バケットに保存します。デフォルトの S3 バケットの形式は URIですs3://sagemaker-<region>-<12digit_account_id>/<training-job-name>/debug-output/
。
SageMaker 推定器の構築中に、 debugger_hook_config
パラメータを指定して SageMaker デバッガーをアクティブ化します。次の手順には、 CollectionConfig
および DebuggerHookConfig
APIオペレーション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
from sagemaker.debugger import CollectionConfig collection_configs=[ CollectionConfig( name="
losses
", parameters={ "train.save_interval
": "100
", "eval.save_interval
": "10
" } ) ]
ヒント
このテンソルコレクション設定オブジェクトは、 DebuggerHookConfigおよび ルールAPIオペレーションの両方に使用できます。
テンソルを保存するDebuggerHookConfig
APIように を設定する
DebuggerHookConfigdebugger_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
デバッガーフックを設定するためのサンプルノートブックとコードサンプル
次のセクションでは、デバッガーフックを使って出力テンソルを保存、アクセス、視覚化する方法のノートブックとコード例を示しています。
トピック
テンソル可視化の例のノートブック
次の 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 に近い値を示す黄色に設定されています。
このノートブックでは、 からインポートされた
TensorPlot
クラスtensor_plot.py
は、入力用に 2 次元画像を取得する畳み込みニューラルネットワーク (CNNs) をプロットするように設計されています。ノートブックに付属するtensor_plot.py
スクリプトは、デバッガーを使用してテンソルを取得し、 を視覚化しますCNN。 SageMaker Studio でこのノートブックを実行すると、テンソルの視覚化を再現し、独自の畳み込みニューラルネットワークモデルを実装できます。 -
を使用した SageMaker ノートブックのリアルタイムテンソル分析 MXNet
この例では、Amazon SageMaker トレーニングジョブでテンソルを出力するために必要なコンポーネントをインストールし、トレーニングの実行中にデバッガーAPIオペレーションを使用してそれらのテンソルにアクセスする手順を説明します。グルーンCNNモデルは、MNISTデータセットでトレーニングされます。ジョブの実行中に、デバッガーが 100 個のバッチそれぞれから最初の畳み込みレイヤーの活性化関数の出力を取得して視覚化する方法を確認できます。また、ジョブの終了後に重みを視覚化する方法も表示されます。
デバッガー組み込みコレクションを使ってテンソルを保存する
を使用してテンソルの組み込みコレクションを使用しCollectionConfig
API、 DebuggerHookConfig
を使用して保存できますAPI。次の例は、デバッガーフック設定のデフォルト設定を使用して SageMaker TensorFlow 推定器を構築する方法を示しています。これは、MXNet、 PyTorch、および XGBoost 推定器にも利用できます。
注記
次のサンプルコードでは、DebuggerHookConfig
の s3_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