텐서를 저장하도록 SageMaker 디버거 설정하기 - 아마존 SageMaker

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

텐서를 저장하도록 SageMaker 디버거 설정하기

텐서는 각 훈련 반복의 역방향 및 순방향 패스에서 업데이트된 파라미터의 데이터 컬렉션입니다. SageMaker 디버거는 출력 텐서를 수집하여 학습 작업의 상태를 분석합니다. SageMaker 디버거 CollectionConfigDebuggerHookConfigAPI오퍼레이션은 텐서를 컬렉션으로 그룹화하여 대상 S3 버킷에 저장하는 메서드를 제공합니다.

참고

SageMaker Debugger는 적절하게 구성 및 활성화된 후 달리 지정하지 않는 한 출력 텐서를 기본 S3 버킷에 저장합니다. 기본 S3 URI 버킷의 형식은 입니다. s3://sagemaker-<region>-<12digit_account_id>/<training-job-name>/debug-output/

SageMaker 추정기를 구성하는 동안 파라미터를 지정하여 SageMaker 디버거를 활성화하십시오. debugger_hook_config 다음 단계에는 CollectionConfigDebuggerHookConfig API 연산을 debugger_hook_config 사용하여 훈련 작업에서 텐서를 꺼내 저장하는 방법을 설정하는 예제가 포함되어 있습니다.

를 사용하여 텐서 컬렉션을 구성하십시오. CollectionConfig API

CollectionConfigAPI작업을 사용하여 텐서 컬렉션을 구성합니다. 디버거는 디버거 지원 딥 러닝 프레임워크와 기계 학습 알고리즘을 사용하는 경우, 파라미터의 다양한 정규식(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 SageMaker Python을 참조하십시오 CollectionConfigSDK. 예를 들어, 다음 코드 예제는 다양한 훈련 단계에서 “losses” 텐서 컬렉션의 저장 간격을 조정하는 방법을 보여줍니다. 즉, 훈련 단계에서는 100단계마다 손실을 저장하고 검증 단계에서는 10단계마다 손실을 검증합니다.

from sagemaker.debugger import CollectionConfig collection_configs=[ CollectionConfig( name="losses", parameters={ "train.save_interval": "100", "eval.save_interval": "10" } ) ]
작은 정보

이 텐서 컬렉션 구성 객체는 Rule API 작업 DebuggerHookConfig모두에 사용할 수 있습니다.

텐서를 DebuggerHookConfig API 저장하도록 를 구성하십시오.

DebuggerHookConfigAPI를 사용하여 이전 단계에서 만든 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-amzn-s3-demo-bucket-uri" collection_configs=collection_configs )

자세한 내용은 Amazon SageMaker Python을 참조하십시오 DebuggerHookConfigSDK.

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

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

텐서 시각화 예제 노트북

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

  • 다음을 포함하는 스튜디오 노트북의 대화형 텐서 분석 SageMaker MXNet

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

    그래디언트 분포를 나타내는 그래프.

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

  • 모델 트레이닝을 통한 텐서 시각화 및 디버깅 MXNet

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

    ReLU 활성화 출력의 시각화

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

  • 다음과 같은 기능을 갖춘 노트북의 실시간 텐서 분석 SageMaker MXNet

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

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

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

참고

다음 예제 코드에서 DebuggerHookConfigs3_output_path 파라미터는 선택 사항입니다. 지정하지 않으면 Debugger는 텐서를 에 저장합니다. 여기서 는 훈련 작업의 기본 출력 <output_path> 경로입니다. s3://<output_path>/debug-output/ 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