Debugger 후크를 구성하기 위한 예제 노트북 및 코드 샘플 - Amazon SageMaker AI

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Debugger 후크를 구성하기 위한 예제 노트북 및 코드 샘플

다음 섹션에서는 Debugger 후크를 사용하여 출력 텐서를 저장, 액세스 및 시각화하는 방법에 대한 노트북과 코드 예제를 제공합니다.

텐서 시각화 예제 노트북

다음 두 노트북 예제는 텐서를 시각화하기 위한 Amazon SageMaker Debugger의 고급 사용법을 보여 줍니다. Debugger는 딥 러닝 모델 훈련에 대한 명료한 보기를 제공합니다.

  • MXNet을 이용한 SageMaker Studio 노트북의 대화형 텐서 분석

    이 노트북 예제는 Amazon SageMaker Debugger를 사용하여 저장된 텐서를 시각화하는 방법을 보여 줍니다. 텐서를 시각화하면 딥 러닝 알고리즘을 훈련하는 동안 텐서 값이 어떻게 변하는지 쉽게 확인할 수 있습니다. 이 노트북에서는 잘못 구성된 신경망에 훈련 작업을 포함시키고, 그라데이션, 활성화 출력 및 가중치를 포함해 Amazon SageMaker Debugger를 사용하여 텐서를 집계 및 분석합니다. 예를 들어, 다음 플롯은 사라지는 그라데이션 문제가 있는 컨볼류션 레이어의 그라데이션 분포를 보여 줍니다.

    그라데이션의 분포를 보여주는 그래프입니다.

    이 노트북에서는 적절한 초기 하이퍼파라미터 설정을 통해 동일한 텐서 분포도를 생성하여 훈련 프로세스를 개선하는 방법도 보여줍니다.

  • MXNet 모델 훈련에서 텐서 시각화 및 디버깅

    이 노트북 예제는 Amazon SageMaker Debugger를 사용하여 MXNet Gluon 모델 훈련 작업에서 텐서를 저장하고 시각화하는 방법을 보여 줍니다. Debugger가 모든 텐서를 Amazon S3 버킷에 저장하도록 설정되어 있고, ReLu 활성화 출력을 검색하여 시각화하는 것을 알 수 있습니다. 다음 그림에서는 ReLu 활성화 출력에 대한 3차원 시각화를 보여 줍니다. 색상표에서 파란색은 0에 가까운 값을 나타내고, 노란색은 1에 가까운 값을 나타냅니다.

    ReLU 활성화 출력의 시각화

    이 노트북에서 tensor_plot.py에서 가져온 TensorPlot 클래스는 입력으로 2차원 이미지를 가져오는 컨볼루션 신경망(CNN)을 도식화하도록 설계되었습니다. 노트북과 함께 제공되는 tensor_plot.py 스크립트는 Debugger를 사용해 텐서를 검색하고, CNN을 시각화합니다. SageMaker Studio에서 이 노트북을 실행하여 텐서 시각화를 재현하고 자체 컨볼루션 신경망 모델을 구현할 수 있습니다.

  • MXNet을 사용하는 SageMaker 노트북의 실시간 텐서 분석

    이 예제는 Amazon SageMaker 훈련 작업에서 텐서를 내보내는 데 필요한 구성 요소를 설치하고 훈련이 실행되는 동안 Debugger API 작업을 사용하여 해당 텐서에 액세스하는 방법을 안내합니다. gluon CNN 모델은 Fashion MNIST 데이터세트를 기반으로 훈련됩니다. 작업이 실행되는 동안 Debugger가 100개 배치 각각에서 첫 번째 컨볼루션 계층의 활성화 출력값을 검색하고 시각화하는 방법을 확인할 수 있습니다. 작업 완료 후 가중치를 시각화하는 방법도 보여줍니다.

기본 제공되는 Debugger 컬렉션을 사용하여 텐서 저장

DebuggerHookConfig API를 사용하여 내장된 텐서 컬렉션을 사용하고 CollectionConfig API를 사용하여 저장할 수 있습니다. 다음 예제에서는 Debugger 후크 구성의 기본 설정을 사용하여 SageMaker AI TensorFlow 예측기를 구성하는 방법을 보여줍니다. MXNet, PyTorch 및 XGBoost 예측기에도 이를 활용할 수 있습니다.

참고

다음 예제 코드에서 DebuggerHookConfigs3_output_path 파라미터는 선택 사항입니다. 지정하지 않는 경우 Debugger는 텐서를 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()

Debugger 내장 컬렉션 목록을 보려면 Debugger 내장 컬렉션을 참조하세요.

Debugger 내장 컬렉션을 수정하여 텐서 저장

CollectionConfig API 작업을 사용하여 Debugger 내장 컬렉션을 수정할 수 있습니다. 다음 예제에서는 내장 losses 컬렉션을 조정하고 SageMaker AI 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 파라미터의 전체 목록은 Debugger CollectionConfig API를 참조하세요.

Debugger 사용자 지정 컬렉을 사용하여 텐서 저장

Amazon S3 버킷에 저장된 데이터 양을 줄이고 싶은 경우, 전체 텐서 세트 대신에 감소된 수의 텐서만 저장할 수도 있습니다. 다음 예제에서는 저장할 대상 텐서를 지정하도록 Debugger 후크 구성을 사용자 지정하는 방법을 보여 줍니다. 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 파라미터의 전체 목록은 Debugger CollectionConfig를 참조하세요.