Amazon SageMaker 디버거 고려 사항 - 아마존 SageMaker

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

Amazon SageMaker 디버거 고려 사항

Amazon SageMaker 디버거를 사용할 때는 다음 사항을 고려하십시오.

분산형 훈련에 대한 고려 사항

다음 목록은 딥 러닝 프레임워크와 다양한 분산형 훈련 옵션을 갖춘 훈련 작업에서 Debugger를 사용하기 위한 유효성 범위와 고려 사항을 보여줍니다.

  • Horovod

    Horovod를 사용한 훈련 작업에 Debugger를 사용할 때의 유효성 범위

    딥 러닝 프레임워크 아파치 MXNet TensorFlow 1.x TensorFlow 2.x TensorFlow 2.x (케라스 포함) PyTorch
    모니터링 시스템 병목 현상
    프레임워크 작업 프로파일링 아니요 아니요 아니요
    모델 출력 텐서 디버깅
  • SageMaker 분산 데이터 병렬

    SageMaker분산 데이터 병렬을 사용하는 교육 작업에 Debugger를 사용할 때의 유효성 범위

    딥 러닝 프레임워크 TensorFlow 2.x TensorFlow 2.x (케라스 포함) PyTorch
    모니터링 시스템 병목 현상
    프레임워크 작업 프로파일링 아니요* 아니요**
    모델 출력 텐서 디버깅

    * 디버거는 2.x용 프레임워크 프로파일링을 지원하지 않습니다. TensorFlow

    ** SageMaker 분산 데이터 병렬은 Keras 구현에서 TensorFlow 2.x를 지원하지 않습니다.

  • SageMaker 분산 모델 병렬 — 디버거는 SageMaker 분산 모델 병렬 훈련을 지원하지 않습니다.

  • SageMaker 체크포인트를 사용한 분산 훈련 — 분산 훈련 옵션과 SageMaker 체크포인트가 모두 활성화된 경우 훈련 작업에 디버거를 사용할 수 없습니다. 다음과 같은 오류를 볼 수 있습니다.

    SMDebug Does Not Currently Support Distributed Training Jobs With Checkpointing Enabled

    분산 훈련 옵션이 있는 훈련 작업에 디버거를 사용하려면 체크포인트를 비활성화하고 교육 스크립트에 수동 SageMaker 체크포인트 함수를 추가해야 합니다. 분산형 훈련 옵션 및 체크포인트와 함께 Debugger를 사용하는 방법에 대한 자세한 내용은 Amazon SageMaker 디버거 및 체크포인트와 함께 SageMaker 분산 데이터 병렬로 사용체크포인트 저장을 참조하세요.

  • 파라미터 서버 - Debugger는 파라미터 서버 기반 분산형 훈련을 지원하지 않습니다.

  • 분산 데이터 병렬 작업 및 Horovod 작업과 같은 SageMaker 분산 교육 프레임워크 작업을 프로파일링하는 기능은 사용할 수 없습니다. AllReduced

시스템 병목 현상 모니터링 및 프레임워크 작업 프로파일링 고려 사항

  • 의 경우 AWS TensorFlow, 클래스의 기본 설정을 local_path 사용하여 데이터 로더 메트릭을 수집할 수 없습니다. FrameworkProfile 경로를 수동으로 구성하고 "/"에서 끝나야 합니다. 예:

    FrameworkProfile(local_path="/opt/ml/output/profiler/")
  • 의 경우 AWS TensorFlow, 교육 작업이 실행되는 동안에는 데이터 로더 프로파일링 구성을 업데이트할 수 없습니다.

  • 왜냐하면 AWS TensorFlow TensorFlow 2.3 교육 작업 및 세부 프로파일링 옵션과 함께 분석 도구 및 노트북 예제를 사용할 때 NoneType 오류가 발생할 수 있습니다.

  • Python 프로파일링 및 세부 프로파일링은 Keras에서만 지원됩니다. API

  • TensorFlow 및 PyTorch 의 딥 프로파일링 기능에 액세스하려면 현재 최신 AWS 딥 러닝 컨테이너 이미지를 11로 지정해야 합니다. CUDA 예를 들어, TensorFlow and URI PyTorch 추정기에서 다음과 같이 특정 이미지를 지정해야 합니다.

    • 에 대해 TensorFlow

      image_uri = f"763104351884.dkr.ecr.{region}.amazonaws.com/tensorflow-training:2.3.1-gpu-py37-cu110-ubuntu18.04"
    • ... 에 PyTorch

      image_uri = f"763104351884.dkr.ecr.{region}.amazonaws.com/pytorch-training:1.6.0-gpu-py36-cu110-ubuntu18.04"

모델 출력 텐서 디버깅 고려 사항

  • 기능적 API 작업을 사용하지 마십시오. 디버거는 API 함수형 연산으로 구성된 MXNet 학습 스크립트로부터 PyTorch 모델 출력 텐서를 수집할 수 없습니다.

    • 디버거는 작업에서 모델 출력 텐서를 수집할 수 없습니다. torch.nn.functionalAPI PyTorch 학습 스크립트를 작성할 때는 torch.nn모듈을 대신 사용하는 것이 좋습니다.

    • 디버거는 하이브리드 블록의 MXNet 함수 객체에서 모델 출력 텐서를 수집할 수 없습니다. 예를 들어, 함수의 mxnet.gluon.HybridBlockwith에 대한 다음 F 예제에서는 ReLu activation (F.relu) 출력값을 수집할 수 없습니다. hybrid_forward

      import mxnet as mx from mxnet.gluon import HybridBlock, nn class Model(HybridBlock): def __init__(self, **kwargs): super(Model, self).__init__(**kwargs) # use name_scope to give child Blocks appropriate names. with self.name_scope(): self.dense0 = nn.Dense(20) self.dense1 = nn.Dense(20) def hybrid_forward(self, F, x): x = F.relu(self.dense0(x)) return F.relu(self.dense1(x)) model = Model() model.initialize(ctx=mx.cpu(0)) model.hybridize() model(mx.nd.zeros((10, 10), ctx=mx.cpu(0)))