

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

# Amazon SageMaker Profiler
<a name="train-use-sagemaker-profiler"></a>


|  | 
| --- |
|  Amazon SageMaker Profiler는 평가판 릴리스 출시 중이기 때문에 지원되는 AWS 리전에서 무료로 사용할 수도 있습니다. 일반적으로 사용 가능한 Amazon SageMaker Profiler 버전(있는 경우)에는 평가판에서 제공하는 것과 다른 기능 및 요금이 포함될 수 있습니다.  | 

Amazon SageMaker Profiler는 Amazon SageMaker AI의 기능으로, SageMaker AI에서 딥 러닝 모델을 훈련하는 동안 프로비저닝된 AWS 컴퓨팅 리소스에 대한 세부 정보 보기를 제공합니다. CPU 및 GPU 사용률, GPU에서 커널 실행, CPU에서 커널 시작, 동기화 작업, CPU 및 GPU에서의 메모리 운영, 커널 시작과 해당 실행 사이의 지연 시간, CPU 및 GPU 간 데이터 전송 프로파일링에 집중합니다. 또한, SageMaker Profiler는 *프로필*을 시각화하는 사용자 인터페이스(UI), 프로파일링된 이벤트의 통계 요약, GPU와 CPU 간 이벤트의 시간 관계를 추적하고 이해하기 위한 훈련 작업 타임라인을 제공합니다.

**참고**  
SageMaker Profiler는 PyTorch와 TensorFlow를 지원하며 [SageMaker AI용AWS Deep Learning Containers](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only)에서 사용할 수 있습니다. 자세한 내용은 [지원되는 프레임워크 이미지 AWS 리전및 인스턴스 유형](profiler-support.md)를 참조하세요.

**데이터 사이언티스트용**

대규모 컴퓨팅 클러스터에서 딥 러닝 모델을 훈련할 때는 병목 현상, 커널 시작 지연 시간, 메모리 제한, 낮은 리소스 사용률 등의 컴퓨팅 최적화 문제가 발생하는 경우가 많습니다.

이러한 컴퓨팅 성능 문제를 식별하려면 컴퓨팅 리소스를 더 깊이 분석하여 지연 시간을 유발하는 커널과 병목 현상을 유발하는 작업을 이해해야 합니다. 데이터 사이언티스트는 SageMaker Profiler UI를 사용하여 훈련 작업의 세부 프로필을 시각화함으로써 이점을 얻을 수 있습니다. UI는 요약 차트와 타임라인 인터페이스가 포함된 대시보드를 제공하여 컴퓨팅 리소스의 모든 이벤트를 추적할 수 있습니다. 또한 데이터 사이언티스트는 SageMaker Profiler Python 모듈을 사용한 훈련 작업의 특정 부분을 추적하는 사용자 지정 주석을 추가할 수 있습니다.

**관리자용**

SageMaker AI 콘솔 또는 [SageMaker AI 도메인](https://docs.aws.amazon.com/sagemaker/latest/dg/sm-domain.html)의 프로파일러 랜딩 페이지를 통해 AWS 계정 또는 SageMaker AI 도메인의 관리자인 경우 프로파일러 애플리케이션 사용자를 관리할 수 있습니다. 각 도메인 사용자는 부여된 권한이 주어지면 자신의 Profiler 애플리케이션에 액세스할 수 있습니다. SageMaker AI 도메인 관리자 및 도메인 사용자는 보유한 권한 수준에 따라 Profiler 애플리케이션을 생성하고 삭제할 수 있습니다.

**Topics**
+ [지원되는 프레임워크 이미지 AWS 리전및 인스턴스 유형](profiler-support.md)
+ [SageMaker Profiler의 사전 조건](profiler-prereq.md)
+ [SageMaker Profiler로 훈련 작업 준비 및 실행](profiler-prepare.md)
+ [SageMaker Profiler UI 애플리케이션 열기](profiler-access-smprofiler-ui.md)
+ [SageMaker Profiler UI에서 시각화된 프로필 출력 데이터 살펴보기](profiler-explore-viz.md)
+ [SageMaker Profiler 문제 해결](profiler-faq.md)

# 지원되는 프레임워크 이미지 AWS 리전및 인스턴스 유형
<a name="profiler-support"></a>

이 기능은 다음과 같은 기계 학습 프레임워크 및 AWS 리전을(를) 지원합니다.

**참고**  
이 기능을 사용하려면 SageMaker Python SDK [버전 2.180.0](https://pypi.org/project/sagemaker/2.180.0/) 이상이 설치되어 있는지 확인합니다.

## SageMaker Profiler에 사전 설치된 SageMaker AI 프레임워크 이미지
<a name="profiler-support-frameworks"></a>

SageMaker Profiler는 다음과 같은 [SageMaker AI용AWS 딥 러닝 컨테이너](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only)에서 사전 설치됩니다.

### PyTorch 이미지
<a name="profiler-support-frameworks-pytorch"></a>


| PyTorch 버전 | AWS DLC 이미지 URI | 
| --- | --- | 
| 2.2.0 |  *763104351884*.dkr.ecr.*<region>*.amazonaws.com/pytorch-training:2.2.0-gpu-py310-cu121-ubuntu20.04-sagemaker  | 
| 2.1.0 |  *763104351884*.dkr.ecr.*<region>*.amazonaws.com/pytorch-training:2.1.0-gpu-py310-cu121-ubuntu20.04-sagemaker  | 
| 2.0.1 |  *763104351884*.dkr.ecr.*<region>*.amazonaws.com/pytorch-training:2.0.1-gpu-py310-cu118-ubuntu20.04-sagemaker *763104351884*.dkr.ecr.*<region>*.amazonaws.com/pytorch-training:2.0.1-gpu-py310-cu121-ubuntu20.04-sagemaker  | 
| 1.13.1 |  *763104351884*.dkr.ecr.*<region>*.amazonaws.com/pytorch-training:1.13.1-gpu-py39-cu117-ubuntu20.04-sagemaker  | 

### TensorFlow 이미지
<a name="profiler-support-frameworks-tensorflow"></a>


| TensorFlow 버전 | AWS DLC 이미지 URI | 
| --- | --- | 
| 2.13.0 |  *763104351884*.dkr.ecr.*<region>*.amazonaws.com/tensorflow-training:2.13.0-gpu-py310-cu118-ubuntu20.04-sagemaker  | 
| 2.12.0 |  *763104351884*.dkr.ecr.*<region>*.amazonaws.com/tensorflow-training:2.12.0-gpu-py310-cu118-ubuntu20.04-sagemaker  | 
| 2.11.0 |  *763104351884*.dkr.ecr.*<region>*.amazonaws.com/tensorflow-training:2.11.0-gpu-py39-cu112-ubuntu20.04-sagemaker  | 

**중요**  
위 표의 프레임워크 컨테이너 배포 및 유지 관리는 AWS Deep Learning Containers 서비스에서 관리하는 [프레임워크 지원 정책에](https://docs.aws.amazon.com/deep-learning-containers/latest/devguide/support-policy.html) 따라 이루어집니다. 더 이상 지원되지 않는 이전 [프레임워크 버전](https://aws.amazon.com/releasenotes/dlc-support-policy/)을 사용하는 경우 현재 지원되는 프레임워크 버전 로 업그레이드하는 것이 좋습니다.

**참고**  
다른 프레임워크 이미지 또는 자체 Docker 이미지에 SageMaker Profiler를 사용하려면 다음 섹션에 제공된 SageMaker Profiler Python 패키지 바이너리 파일을 사용하여 SageMaker Profiler를 설치할 수 있습니다.

## SageMaker Profiler Python 패키지 바이너리 파일
<a name="profiler-python-package"></a>

자체 Docker 컨테이너를 구성하려는 경우 PyTorch 및 TensorFlow용 다른 사전 빌드된 컨테이너에서 SageMaker Profiler를 사용하거나 SageMaker Profiler Python 패키지를 로컬에 설치하려면 다음 바이너리 파일 중 하나를 사용합니다. 환경의 Python 및 CUDA 버전에 따라 다음 중 하나를 선택합니다.

### PyTorch
<a name="profiler-python-package-for-pytorch"></a>
+ Python3.8, CUDA 11.3: [https://smppy.s3.amazonaws.com/pytorch/cu113/smprof-0.3.334-cp38-cp38-linux_x86_64.whl](https://smppy.s3.amazonaws.com/pytorch/cu113/smprof-0.3.334-cp38-cp38-linux_x86_64.whl)
+ Python3.9, CUDA 11.7: [https://smppy.s3.amazonaws.com/pytorch/cu117/smprof-0.3.334-cp39-cp39-linux_x86_64.whl](https://smppy.s3.amazonaws.com/pytorch/cu117/smprof-0.3.334-cp39-cp39-linux_x86_64.whl)
+ Python3.10, CUDA 11.8: [https://smppy.s3.amazonaws.com/pytorch/cu118/smprof-0.3.334-cp310-cp310-linux_x86_64.whl](https://smppy.s3.amazonaws.com/pytorch/cu118/smprof-0.3.334-cp310-cp310-linux_x86_64.whl)
+ Python3.10, CUDA 12.1: [https://smppy.s3.amazonaws.com/pytorch/cu121/smprof-0.3.334-cp310-cp310-linux_x86_64.whl](https://smppy.s3.amazonaws.com/pytorch/cu121/smprof-0.3.334-cp310-cp310-linux_x86_64.whl)

### TensorFlow
<a name="profiler-python-package-for-tensorflow"></a>
+ Python3.9, CUDA 11.2: [https://smppy.s3.amazonaws.com/tensorflow/cu112/smprof-0.3.334-cp39-cp39-linux_x86_64.whl](https://smppy.s3.amazonaws.com/tensorflow/cu112/smprof-0.3.334-cp39-cp39-linux_x86_64.whl)
+ Python3.10, CUDA 11.8: [https://smppy.s3.amazonaws.com/tensorflow/cu118/smprof-0.3.334-cp310-cp310-linux_x86_64.whl](https://smppy.s3.amazonaws.com/tensorflow/cu118/smprof-0.3.334-cp310-cp310-linux_x86_64.whl)

바이너리 파일을 사용하여 SageMaker Profiler를 설치하는 방법에 대한 자세한 내용은 섹션을 참조하세요[(선택 사항) SageMaker Profiler Python 패키지 설치](profiler-prepare.md#profiler-install-python-package).

## 지원됨 AWS 리전
<a name="profiler-support-regions"></a>

SageMaker Profiler는 다음에서 사용할 수 있습니다 AWS 리전.
+ 미국 동부 (버지니아 북부) (`us-east-1`)
+ 미국 동부 (오하이오)(`us-east-2`)
+ 미국 서부 (오리건) (`us-west-2`)
+ EU (프랑크푸르트)(`eu-central-1`)
+ EU (아일랜드)(`eu-west-1`)

## 지원되는 인스턴스 유형
<a name="profiler-support-instance-types"></a>

SageMaker Profiler는 다음 인스턴스 유형에 대한 훈련 작업 프로파일링을 지원합니다.

**CPU 및 GPU 프로파일링**
+ `ml.g4dn.12xlarge`
+ `ml.g5.24xlarge`
+ `ml.g5.48xlarge`
+ `ml.p3dn.24xlarge`
+ `ml.p4de.24xlarge`
+ `ml.p4d.24xlarge`
+ `ml.p5.48xlarge`

**GPU 프로파일링만 해당**
+ `ml.g5.2xlarge`
+ `ml.g5.4xlarge`
+ `ml.g5.8xlarge`
+ `ml.g5.16.xlarge`

# SageMaker Profiler의 사전 조건
<a name="profiler-prereq"></a>

다음 목록은 SageMaker Profiler 사용을 시작하기 위한 필요 조건을 보여줍니다.
+  AWS 계정의 Amazon VPC로 설정된 SageMaker AI 도메인입니다.

  도메인 설정에 대한 지침은 [빠른 설정을 사용하여 Amazon SageMaker AI 도메인에 온보딩](https://docs.aws.amazon.com/sagemaker/latest/dg/onboard-quick-start.html)을 참조하세요. 또한 개별 사용자가 Profiler UI 애플리케이션에 접근하려면 도메인 사용자 프로필을 추가해야 합니다. 자세한 정보는 [사용자 프로필 추가](https://docs.aws.amazon.com/sagemaker/latest/dg/domain-user-profile-add.html)를 참조하세요.
+ 다음 목록은 Profiler UI 애플리케이션을 사용하기 위한 최소 권한 집합입니다.
  + `sagemaker:CreateApp`
  + `sagemaker:DeleteApp`
  + `sagemaker:DescribeTrainingJob`
  + `sagemaker:Search`
  + `s3:GetObject`
  + `s3:ListBucket`

# SageMaker Profiler로 훈련 작업 준비 및 실행
<a name="profiler-prepare"></a>

SageMaker Profiler를 사용하여 훈련 작업을 실행하도록 설정하는 단계는 훈련 스크립트 조정 및 SageMaker 훈련 작업 런처 구성의 두 단계로 이루어집니다.

**Topics**
+ [1단계: SageMaker Profiler Python 모듈을 사용하여 훈련 스크립트 조정](#profiler-prepare-training-script)
+ [2단계: SageMaker AI 프레임워크 예측기 생성 및 SageMaker Profiler 활성화](#profiler-profilerconfig)
+ [(선택 사항) SageMaker Profiler Python 패키지 설치](#profiler-install-python-package)

## 1단계: SageMaker Profiler Python 모듈을 사용하여 훈련 스크립트 조정
<a name="profiler-prepare-training-script"></a>

훈련 작업이 실행되는 동안 GPU에서 커널 실행을 캡처하기 시작하려면 SageMaker Profiler Python 모듈을 사용하여 훈련 스크립트를 수정하세요. 라이브러리를 가져오고 `start_profiling()` 및 `stop_profiling()` 메서드를 추가하여 프로파일링의 시작과 끝을 정의합니다. 또한 선택적 사용자 지정 주석을 사용하여 훈련 스크립트에 마커를 추가하여 각 단계에서 특정 작업을 수행하는 동안 하드웨어 활동을 시각화할 수 있습니다.

참고로 주석자는 GPU에서 연산을 추출합니다. CPU에서 프로파일링 작업을 수행할 때는 주석을 추가할 필요가 없습니다. CPU 프로파일링은 프로파일링 구성을 지정할 때도 활성화됩니다. 이 설정은 [2단계: SageMaker AI 프레임워크 예측기 생성 및 SageMaker Profiler 활성화](#profiler-profilerconfig)에서 연습해 보겠습니다.

**참고**  
전체 훈련 작업을 프로파일링하는 것이 리소스를 가장 효율적으로 사용하는 것은 아닙니다. 훈련 작업의 최대 300단계를 프로파일링하는 것이 좋습니다.

**중요**  
의 릴리스에는 중단되는 변경 사항이 [2023년 12월 14일](profiler-release-notes.md#profiler-release-notes-20231214) 포함됩니다. SageMaker Profiler Python 패키지 이름이 `smppy`에서 `smprof`로 변경됩니다. 이는 TensorFlow v2.12 이상용 [SageMaker AI 프레임워크 컨테이너](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only)에서 유효합니다.  
TensorFlow v2.11.0과 같은 [SageMaker AI 프레임워크 컨테이너](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only)의 이전 버전 중 하나를 사용하는 경우에도 SageMaker Profiler Python 패키지는 `smppy`로 계속 사용할 수 있습니다. 어떤 버전이나 패키지 이름을 사용해야 하는지 확실하지 않은 경우 SageMaker Profiler 패키지의 가져오기 문을 다음 코드 코드 코드 조각으로 바꿉니다.  

```
try:
    import smprof 
except ImportError:
    # backward-compatability for TF 2.11 and PT 1.13.1 images
    import smppy as smprof
```

**접근법 1.** 컨텍스트 관리자 `smprof.annotate`을(를) 사용하여 전체 함수에 주석 달기

`smprof.annotate()` 컨텍스트 관리자로 전체 함수를 래핑할 수 있습니다. 코드 라인 대신 함수별로 프로파일링하려는 경우 이 래퍼를 사용하는 것이 좋습니다. 다음 예제 스크립트는 컨텍스트 관리자를 구현하여 각 반복에서 훈련 루프와 전체 함수를 래핑하는 방법을 보여줍니다.

```
import smprof

SMProf = smprof.SMProfiler.instance()
config = smprof.Config()
config.profiler = {
    "EnableCuda": "1",
}
SMProf.configure(config)
SMProf.start_profiling()

for epoch in range(args.epochs):
    if world_size > 1:
        sampler.set_epoch(epoch)
    tstart = time.perf_counter()
    for i, data in enumerate(trainloader, 0):
        with smprof.annotate("step_"+str(i)):
            inputs, labels = data
            inputs = inputs.to("cuda", non_blocking=True)
            labels = labels.to("cuda", non_blocking=True)
    
            optimizer.zero_grad()
    
            with smprof.annotate("Forward"):
                outputs = net(inputs)
            with smprof.annotate("Loss"):
                loss = criterion(outputs, labels)
            with smprof.annotate("Backward"):
                loss.backward()
            with smprof.annotate("Optimizer"):
                optimizer.step()

SMProf.stop_profiling()
```

**접근법 2.** `smprof.annotation_begin()` 및 `smprof.annotation_end()`을(를) 사용하여 함수의 특정 코드 라인에 주석 달기

주석을 정의하여 특정 코드 라인을 프로파일링할 수도 있습니다. 프로파일링의 정확한 시작점과 끝점은 함수가 아닌 개별 코드 라인 수준에서 설정할 수 있습니다. 예를 들어, 다음 스크립트에서 `step_annotator`은(는) 각 반복 시작 시 정의되고 반복 종료 시 종료됩니다. 한편, 각 작업에 대한 기타 세부 주석자가 정의되고 각 반복 전반에 걸쳐 대상 작업을 래핑합니다.

```
import smprof

SMProf = smprof.SMProfiler.instance()
config = smprof.Config()
config.profiler = {
    "EnableCuda": "1",
}
SMProf.configure(config)
SMProf.start_profiling()

for epoch in range(args.epochs):
    if world_size > 1:
        sampler.set_epoch(epoch)
    tstart = time.perf_counter()
    for i, data in enumerate(trainloader, 0):
        step_annotator = smprof.annotation_begin("step_" + str(i))

        inputs, labels = data
        inputs = inputs.to("cuda", non_blocking=True)
        labels = labels.to("cuda", non_blocking=True)
        optimizer.zero_grad()

        forward_annotator = smprof.annotation_begin("Forward")
        outputs = net(inputs)
        smprof.annotation_end(forward_annotator)

        loss_annotator = smprof.annotation_begin("Loss")
        loss = criterion(outputs, labels)
        smprof.annotation_end(loss_annotator)

        backward_annotator = smprof.annotation_begin("Backward")
        loss.backward()
        smprof.annotation_end(backward_annotator)

        optimizer_annotator = smprof.annotation_begin("Optimizer")
        optimizer.step()
        smprof.annotation_end(optimizer_annotator)

        smprof.annotation_end(step_annotator)

SMProf.stop_profiling()
```

프로파일러 시작 모듈에 주석을 달고 설정한 후 다음 2단계에서 SageMaker 훈련 작업 런처를 사용하여 제출할 스크립트를 저장합니다. 샘플 런처는 훈련 스크립트에 이름이 `train_with_profiler_demo.py`(으)로 지정된 것으로 가정합니다.

## 2단계: SageMaker AI 프레임워크 예측기 생성 및 SageMaker Profiler 활성화
<a name="profiler-profilerconfig"></a>

다음 절차는 SageMaker Python SDK를 사용한 훈련을 위해 SageMaker AI 프레임워크 예측기를 준비하는 방법을 보여줍니다.

1. 다음과 같이 `ProfilerConfig` 및 `Profiler` 모듈을 사용하여 `profiler_config` 객체를 설정합니다.

   ```
   from sagemaker import ProfilerConfig, Profiler
   profiler_config = ProfilerConfig(
       profile_params = Profiler(cpu_profiling_duration=3600)
   )
   ```

   다음은 `Profiler` 모듈과 해당 인수에 대한 설명입니다.
   +  `Profiler`: 훈련 작업과 함께 SageMaker Profiler를 활성화하기 위한 모듈입니다.
     +  `cpu_profiling_duration` (int): CPU에서 프로파일링할 시간을 초 단위로 지정합니다. 기본값은 3600초입니다.

1. 이전 단계에서 생성된 `profiler_config` 객체를 사용하여 SageMaker AI 프레임워크 예측기를 생성합니다. 다음 코드는 PyTorch 예측기를 생성하는 예제를 보여줍니다. TensorFlow 예측기를 만들려면 대신 `sagemaker.tensorflow.TensorFlow`를 가져와서 SageMaker Profiler에서 지원하는 [TensorFlow 버전](profiler-support.md#profiler-support-frameworks-tensorflow) 중 하나를 지정하세요. 지원되는 프레임워크 및 인스턴스 유형에 대한 자세한 내용은 [SageMaker Profiler에 사전 설치된 SageMaker AI 프레임워크 이미지](profiler-support.md#profiler-support-frameworks)을(를) 참조하세요.

   ```
   import sagemaker
   from sagemaker.pytorch import PyTorch
   
   estimator = PyTorch(
       framework_version="2.0.0",
       role=sagemaker.get_execution_role(),
       entry_point="train_with_profiler_demo.py", # your training job entry point
       source_dir=source_dir, # source directory for your training script
       output_path=output_path,
       base_job_name="sagemaker-profiler-demo",
       hyperparameters=hyperparameters, # if any
       instance_count=1, # Recommended to test with < 8
       instance_type=ml.p4d.24xlarge,
       profiler_config=profiler_config
   )
   ```

1. `fit` 메서드를 실행하여 훈련 작업을 시작합니다. `wait=False`을(를) 사용하면 훈련 작업 로그를 무음으로 설정하고 백그라운드에서 실행되도록 할 수 있습니다.

   ```
   estimator.fit(wait=False)
   ```

훈련 작업을 실행하는 동안 또는 작업이 완료된 후에는 [SageMaker Profiler UI 애플리케이션 열기](profiler-access-smprofiler-ui.md)에서 다음 주제로 이동하여 저장된 프로필을 탐색하고 시각화할 수 있습니다.

Amazon S3 버킷에 저장된 프로필 데이터에 직접 액세스하려면 다음 스크립트를 사용하여 S3 URI를 검색하세요.

```
import os
# This is an ad-hoc function to get the S3 URI
# to where the profile output data is saved
def get_detailed_profiler_output_uri(estimator):
    config_name = None
    for processing in estimator.profiler_rule_configs:
        params = processing.get("RuleParameters", dict())
        rule = config_name = params.get("rule_to_invoke", "")
        if rule == "DetailedProfilerProcessing":
            config_name = processing.get("RuleConfigurationName")
            break
    return os.path.join(
        estimator.output_path, 
        estimator.latest_training_job.name, 
        "rule-output",
        config_name,
    )

print(
    f"Profiler output S3 bucket: ", 
    get_detailed_profiler_output_uri(estimator)
)
```

## (선택 사항) SageMaker Profiler Python 패키지 설치
<a name="profiler-install-python-package"></a>

에 나열되지 않은 PyTorch 또는 TensorFlow 프레임워크 이미지에서 [SageMaker Profiler에 사전 설치된 SageMaker AI 프레임워크 이미지](profiler-support.md#profiler-support-frameworks)SageMaker Profiler를 사용하거나 훈련을 위해 사용자 지정 Docker 컨테이너에서 SageMaker Profiler를 사용하려면 [SageMaker Profiler Python 패키지 바이너리 파일](profiler-support.md#profiler-python-package) 중 하나를 사용하여 SageMaker Profiler를 설치할 수 있습니다.

**옵션 1: 훈련 작업을 시작하는 동안 SageMaker Profiler 패키지 설치**

[SageMaker Profiler에 사전 설치된 SageMaker AI 프레임워크 이미지](profiler-support.md#profiler-support-frameworks)에 나열되지 않은 PyTorch 또는 TensorFlow 이미지를 사용하는 훈련 작업에 SageMaker Profiler를 사용하려면 `requirements.txt` 파일을 생성하고 [2단계](#profiler-profilerconfig)에서 SageMaker AI 프레임워크 예측기의 `source_dir` 파라미터에 지정한 경로 아래에 배치합니다. 일반적인 `requirements.txt` 파일 설정에 대한 자세한 내용은 *SageMaker Python SDK 설명서*의 [타사 라이브러리 사용](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/using_pytorch.html#using-third-party-libraries)을 참조하세요. `requirements.txt` 파일에 [SageMaker Profiler Python 패키지 바이너리 파일](profiler-support.md#profiler-python-package)에 대한 S3 버킷 경로 중 하나를 추가합니다.

```
# requirements.txt
https://smppy.s3.amazonaws.com/tensorflow/cu112/smprof-0.3.332-cp39-cp39-linux_x86_64.whl
```

**옵션 2: 사용자 지정 Docker 컨테이너에 SageMaker Profiler 패키지 설치**

훈련에 사용자 지정 Docker 컨테이너를 사용하는 경우 Dockerfile에 [SageMaker Profiler Python 패키지 바이너리 파일](profiler-support.md#profiler-python-package)를 추가합니다.

```
# Install the smprof package version compatible with your CUDA version
RUN pip install https://smppy.s3.amazonaws.com/tensorflow/cu112/smprof-0.3.332-cp39-cp39-linux_x86_64.whl
```

일반적으로 SageMaker AI에서 훈련을 위한 사용자 지정 Docker 컨테이너를 실행하는 방법에 대한 지침은 [자체 훈련 컨테이너 조정](https://docs.aws.amazon.com/sagemaker/latest/dg/adapt-training-container.html)을 참조하세요.

# SageMaker Profiler UI 애플리케이션 열기
<a name="profiler-access-smprofiler-ui"></a>

다음 옵션을 통해 SageMaker Profiler UI 애플리케이션에 액세스할 수 있습니다.

**Topics**
+ [옵션 1: 도메인 세부 정보 페이지에서 SageMaker Profiler UI 시작](#profiler-access-smprofiler-ui-console-smdomain)
+ [옵션 2: SageMaker AI 콘솔의 SageMaker Profiler 랜딩 페이지에서 SageMaker Profiler UI 애플리케이션 시작](#profiler-access-smprofiler-ui-console-profiler-landing-page)
+ [옵션 3: SageMaker AI Python SDK에서 애플리케이션 시작 관리자 함수 사용](#profiler-access-smprofiler-ui-app-launcher-function)

## 옵션 1: 도메인 세부 정보 페이지에서 SageMaker Profiler UI 시작
<a name="profiler-access-smprofiler-ui-console-smdomain"></a>

SageMaker AI 콘솔에 액세스할 수 있는 경우 이 옵션을 선택할 수 있습니다.

**도메인 세부정보 페이지로 이동**

 다음 절차에서는 도메인 세부 정보 페이지로 이동하는 방법을 보여줍니다.

1. [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)에서 Amazon SageMaker AI 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **도메인**을 선택합니다.

1. 도메인 목록에서 SageMaker Profiler 애플리케이션을 실행할 도메인을 선택합니다.

**SageMaker Profiler UI 애플리케이션 시작**

다음 절차는 사용자 프로필로 범위가 지정된 SageMaker Profiler 애플리케이션을 시작하는 방법을 보여줍니다.

1. 도메인 세부 정보 페이지에서 **사용자 프로필** 탭을 선택합니다.

1. SageMaker Profiler UI 애플리케이션을 시작하려는 사용자 프로필을 식별합니다.

1. 선택한 사용자 프로필에 대해 **시작**을 선택하고 **Profiler**를 선택합니다.

## 옵션 2: SageMaker AI 콘솔의 SageMaker Profiler 랜딩 페이지에서 SageMaker Profiler UI 애플리케이션 시작
<a name="profiler-access-smprofiler-ui-console-profiler-landing-page"></a>

다음 절차는 SageMaker AI 콘솔의 SageMaker Profiler 랜딩 페이지에서 SageMaker Profiler UI 애플리케이션을 시작하는 방법을 설명합니다. SageMaker AI 콘솔에 액세스할 수 있는 경우 이 옵션을 선택할 수 있습니다.

1. [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)에서 Amazon SageMaker AI 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **프로파일러**를 선택합니다.

1. **시작하기**에서 Studio Classic 애플리케이션을 실행할 도메인을 선택합니다. 사용자 프로파일이 한 도메인에만 속하는 경우 도메인 선택 옵션이 표시되지 않습니다.

1. SageMaker Profiler UI 애플리케이션을 시작하려는 사용자 프로필을 선택합니다. 도메인에 사용자 프로필이 없는 경우 **사용자 프로필 생성**을 선택합니다. 새 사용자 프로필을 만드는 방법에 대한 자세한 내용은 [사용자 프로필 추가](https://docs.aws.amazon.com/sagemaker/latest/dg/domain-user-profile-add.html)를 참조하세요.

1. **Profiler 열기**를 선택합니다.

## 옵션 3: SageMaker AI Python SDK에서 애플리케이션 시작 관리자 함수 사용
<a name="profiler-access-smprofiler-ui-app-launcher-function"></a>

SageMaker AI 도메인 사용자이고 SageMaker Studio에만 액세스할 수 있는 경우 [https://sagemaker.readthedocs.io/en/stable/api/utility/interactive_apps.html#module-sagemaker.interactive_apps.detail_profiler_app](https://sagemaker.readthedocs.io/en/stable/api/utility/interactive_apps.html#module-sagemaker.interactive_apps.detail_profiler_app) 함수를 실행하여 SageMaker Studio Classic을 통해 SageMaker Profiler UI 애플리케이션에 액세스할 수 있습니다.

SageMaker Studio Classic은 re:Invent 2023 이전의 이전 Studio UI 환경이며 re:Invent 2023에서 새로 설계된 Studio UI로 애플리케이션으로 마이그레이션됩니다. SageMaker Profiler UI 애플리케이션은 SageMaker AI 도메인 수준에서 사용할 수 있으므로 도메인 ID와 사용자 프로필 이름이 필요합니다. 현재 `DetailedProfilerApp` 함수는 SageMaker Studio Classic 애플리케이션 내에서만 작동하며, 함수는 SageMaker Studio Classic에서 도메인 및 사용자 프로필 정보를 올바르게 가져옵니다.

re:Invent 2023 이전에 생성된 도메인, 도메인 사용자 및 Studio의 경우 [Amazon SageMaker Studio Classic에서 마이그레이션의 지침에 따라 업데이트하지 않는 한 Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-migrate.html)이 기본 환경이 됩니다. 이 경우 추가 작업이 필요하지 않으며 `DetailProfilerApp` 함수를 실행하여 SageMaker Profiler UI 애플리케이션을 직접 시작할 수 있습니다.

re:Invent 2023 이후에 새 도메인과 Studio를 생성한 경우 Studio UI 내에서 Studio Classic 애플리케이션을 시작한 다음 `DetailProfilerApp` 함수를 실행하여 SageMaker Profiler UI 애플리케이션을 시작합니다.

이 `DetailedProfilerApp` 함수는 SageMaker Studio JupyterLab 애플리케이션, SageMaker Studio Code Editor 애플리케이션 및 SageMaker Notebook 인스턴스와 같은 다른 SageMaker AI 기계 학습 IDE에서는 작동하지 않습니다. 이러한 IDE에서 `DetailedProfilerApp` 함수를 실행하면 Profiler UI 애플리케이션을 열 수 있는 직접 링크 대신 URL이 SageMaker AI 콘솔의 Profiler 랜딩 페이지에 반환됩니다.

# SageMaker Profiler UI에서 시각화된 프로필 출력 데이터 살펴보기
<a name="profiler-explore-viz"></a>

이 섹션에서는 SageMaker Profiler UI를 살펴보고 이를 사용하여 통찰력을 얻는 방법에 대한 팁을 제공합니다.

## 프로필 로드
<a name="profiler-explore-viz-load"></a>

SageMaker Profiler UI를 열면 **프로필 로드** 페이지가 열립니다. **대시보드**와 **타임라인**을 로드하고 생성하려면 다음 절차를 따르세요.<a name="profiler-explore-viz-load-procedure"></a>

**훈련 작업 프로필을 로드하려면**

1. **훈련 작업 목록** 섹션에서 확인란을 사용하여 프로필을 로드하려는 훈련 작업을 선택합니다.

1. **로드(Load)**를 선택합니다. 작업 이름이 상단의 **로드된 프로필** 섹션에 표시되어야 합니다.

1. **작업 이름** 왼쪽에 있는 라디오 버튼을 선택하여 **대시보드**와 **타임라인**을 생성합니다. 참고로 라디오 버튼을 선택하면 UI에서 **대시보드**가 자동으로 열립니다. 또한 작업 상태 및 로드 상태가 여전히 진행 중인 것으로 나타나는 동안 시각화를 생성하는 경우, SageMaker Profiler UI는 진행 중인 훈련 작업 또는 부분적으로 로드된 프로필 데이터에서 수집한 최신 프로필 데이터까지 **대시보드** 플롯과 **타임라인**을 생성합니다.

**작은 정보**  
프로필을 한 번에 하나씩 로드하고 시각화할 수 있습니다. 다른 프로필을 로드하려면 먼저 이전에 로드한 프로필을 언로드해야 합니다. 프로필을 언로드하려면 **로드된 프로필** 섹션에서 프로필 오른쪽 끝에 있는 휴지통 아이콘을 사용합니다.

![\[\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/profiler/sagemaker-profiler-ui-load-data.png)


## 대시보드
<a name="profiler-explore-viz-overview"></a>

훈련 작업 로드 및 선택을 마치면 UI에서 기본적으로 다음 패널이 포함된 **대시보드** 페이지가 열립니다.
+ **GPU 활성 시간** - 이 파이 차트는 GPU 활성 시간과 GPU 유휴 시간의 백분율을 보여줍니다. 전체 훈련 작업 동안 GPU가 유휴 상태보다 더 활발한지 확인할 수 있습니다. GPU 활성 시간은 사용률이 0% 이상인 프로필 데이터 포인트를 기준으로 하는 반면, GPU 유휴 시간은 사용률이 0%인 프로파일링된 데이터 포인트를 기준으로 합니다.
+ **시간 경과에 따른 GPU 사용률** - 이 타임라인 그래프는 모든 노드를 단일 차트로 집계하여 시간 경과에 따른 노드당 평균 GPU 사용률을 보여줍니다. 특정 시간 간격 동안 GPU에 워크로드 불균형, 사용률 저하 문제, 병목 현상 또는 유휴 문제가 있는지 확인할 수 있습니다. 개별 GPU 수준 및 관련 커널 실행에서의 사용률을 추적하려면 [타임라인 인터페이스](#profiler-explore-viz-timeline)을(를) 사용하세요. 참고로 GPU 활동 수집은 훈련 스크립트에 프로파일러 스타터 함수 `SMProf.start_profiling()`을(를) 추가한 곳에서 시작되며 `SMProf.stop_profiling()`에서 중지됩니다.
+ **CPU 활성 시간** - 이 파이 차트는 CPU 활성 시간과 CPU 유휴 시간의 백분율을 보여줍니다. 전체 훈련 작업 동안 CPU가 유휴 상태보다 더 활발한지 확인할 수 있습니다. CPU 활성 시간은 사용률이 0% 이상인 프로필 데이터 포인트를 기준으로 하는 반면, CPU 유휴 시간은 사용률이 0%인 프로파일링된 데이터 포인트를 기준으로 합니다.
+ **시간 경과에 따른 CPU 사용률** - 이 타임라인 그래프는 모든 노드를 단일 차트로 집계하여 시간 경과에 따른 노드당 평균 CPU 사용률을 보여줍니다. 특정 시간 간격 동안 CPU에 병목 현상이 발생하거나 사용률이 낮은지 확인할 수 있습니다. 개별 GPU 사용률 및 커널 실행에 맞게 조정된 CPU의 사용률을 추적하려면 [타임라인 인터페이스](#profiler-explore-viz-timeline)을(를) 사용하세요. 참고로 사용률 지표는 작업 초기화 시점부터 시작됩니다.
+ **모든 GPU 커널이 소비한 시간** - 이 파이 차트는 훈련 작업 전반에 걸쳐 운영된 모든 GPU 커널을 보여줍니다. 기본적으로 상위 15개 GPU 커널이 개별 섹터로 표시되고 다른 모든 커널은 한 섹터에 표시됩니다. 섹터 위로 마우스를 가져가면 더 자세한 정보를 볼 수 있습니다. 값은 GPU 커널의 총 작동 시간을 초 단위로 나타내며 백분율은 프로필의 전체 시간을 기준으로 합니다.
+ **상위 15개 GPU 커널이 소비한 시간** - 이 파이 차트는 훈련 작업 전반에 걸쳐 운영된 모든 GPU 커널을 보여줍니다. 상위 15개 GPU 커널을 개별 섹터로 보여줍니다. 섹터 위로 마우스를 가져가면 더 자세한 정보를 볼 수 있습니다. 값은 GPU 커널의 총 작동 시간을 초 단위로 나타내며 백분율은 프로필의 전체 시간을 기준으로 합니다.
+ **모든 GPU 커널의 시작 횟수** - 이 파이 차트는 훈련 작업 전반에 걸쳐 시작된 모든 GPU 커널의 개수를 보여줍니다. 상위 15개 GPU 커널이 개별 섹터로 표시되고 다른 모든 커널은 한 섹터에 표시됩니다. 섹터 위로 마우스를 가져가면 더 자세한 정보를 볼 수 있습니다. 이 값은 시작된 GPU 커널의 총 개수를 나타내며 백분율은 모든 커널의 전체 개수를 기준으로 합니다.
+ **상위 15개 GPU 커널의 시작 횟수** - 이 파이 차트는 훈련 작업 전반에 걸쳐 시작된 모든 GPU 커널의 개수를 보여줍니다. 상위 15개의 GPU 커널을 보여줍니다. 섹터 위로 마우스를 가져가면 더 자세한 정보를 볼 수 있습니다. 이 값은 시작된 GPU 커널의 총 개수를 나타내며 백분율은 모든 커널의 전체 개수를 기준으로 합니다.
+ **단계 시간 분포** - 이 히스토그램은 GPU의 단계 지속 시간 분포를 보여줍니다. 이 플롯은 훈련 스크립트에 단계 주석자를 추가한 후에만 생성됩니다.
+ **커널 정밀도 분포** - 이 파이 차트는 FP32, FP16, INT32, INT8과 같은 다양한 데이터 유형에서 커널을 실행하는 데 소요된 시간의 백분율을 보여줍니다.
+ **GPU 활동 분포** - 이 파이 차트는 커널 실행, 메모리(`memcpy` 및 `memset`), 동기화(`sync`)와 같이 GPU 활동에 소요된 시간의 백분율을 보여줍니다.
+ **GPU 메모리 작업 분포** - 이 파이 차트는 GPU 메모리 작업에 소요된 시간의 백분율을 보여줍니다. 이를 통해 `memcopy` 활동을 시각화하여 훈련 작업이 특정 메모리 작업에 과도한 시간을 소비하고 있는지 확인할 수 있습니다.
+ **새 히스토그램 생성** - [1단계: SageMaker Profiler Python 모듈을 사용하여 훈련 스크립트 조정](profiler-prepare.md#profiler-prepare-training-script) 작업 중에 수동으로 주석을 추가한 사용자 지정 지표의 새 다이어그램을 만드세요. 새 히스토그램에 사용자 지정 주석을 추가할 때는 훈련 스크립트에서 추가한 주석의 이름을 선택하거나 입력합니다. 예를 들어, 1단계의 데모 훈련 스크립트에서는 `step`, `Forward`, `Backward`, `Optimize`, 및 `Loss`이(가) 사용자 지정 주석입니다. 새 히스토그램을 생성하는 동안 이 주석 이름이 지표 선택을 위한 드롭다운 메뉴에 나타나야 합니다. `Backward`을(를) 선택하는 경우 UI는 프로파일링된 시간 동안 역방향 패스에 소요된 시간의 히스토그램을 **대시보드**에 추가합니다. 이 유형의 히스토그램은 비정상적으로 시간이 오래 걸리고 병목 현상을 일으키는 특이값이 있는지 확인하는 데 유용합니다.

다음 스크린샷은 컴퓨팅 노드당 시간에 대한 GPU 및 CPU 활성 시간 비율과 평균 GPU 및 CPU 사용률을 보여줍니다.

![\[\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/profiler/sagemaker-profiler-ui-dashboard-1.png)


다음 스크린샷은 GPU 커널이 시작된 횟수를 비교하고 실행에 소요되는 시간을 측정하는 파이 차트의 예제를 보여줍니다. **모든 GPU 커널에 걸린 시간** 및 **모든 GPU 커널의 시작 횟수** 패널에서 *k*의 입력 필드에 정수를 지정하여 플롯에 표시할 범례의 수를 조정할 수도 있습니다. 예를 들어 10을 지정하면 가장 많이 실행된 커널과 시작된 커널 상위 10개가 각각 플롯에 표시됩니다.

![\[\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/profiler/sagemaker-profiler-ui-dashboard-2.png)


다음 스크린샷은 커널 정밀도 분포, GPU 활동 분포, GPU 메모리 작업 분포에 대한 단계 시간 지속 히스토그램 및 파이 차트의 예제를 보여줍니다.

![\[\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/profiler/sagemaker-profiler-ui-dashboard-3.png)


## 타임라인 인터페이스
<a name="profiler-explore-viz-timeline"></a>

CPU에 예약되고 GPU에서 실행되는 작업 및 커널 수준의 컴퓨팅 리소스를 자세히 보려면 **타임라인** 인터페이스를 사용하세요.

마우스, `[w, a, s, d]` 키 또는 키보드의 화살표 키 4개를 사용하여 타임라인 인터페이스를 확대 및 축소하고 왼쪽이나 오른쪽으로 이동할 수 있습니다.

**작은 정보**  
**타임라인** 인터페이스와 상호 작용하는 데 필요한 키보드 바로 가기에 대한 추가 팁을 보려면 왼쪽 창에서 **키보드 바로 가기**를 선택하세요.

이 타임라인 트랙은 트리 구조로 구성되어 있어 호스트 수준에서 디바이스 수준까지의 정보를 제공합니다. 예를 들어, 각각 8개의 GPU가 있는 `N` 인스턴스를 실행하는 경우 각 인스턴스의 타임라인 구조는 다음과 같습니다.
+ **algo-inode** - 프로비저닝된 인스턴스에 작업을 할당하기 위한 SageMaker AI가 태그하는 것입니다. 숫자 inode은(는) 무작위로 할당됩니다. 예를 들어 인스턴스 4개를 사용하는 경우 이 섹션은 **algo-1**에서 **algo-4**로 확장됩니다.
  + **CPU** - 이 섹션에서 평균 CPU 사용률과 성능 카운터를 확인할 수 있습니다.
  + **GPU** - 이 섹션에서 평균 GPU 사용률, 개별 GPU 사용률 및 커널을 확인할 수 있습니다.
    + **합계 사용률** - 인스턴스당 평균 GPU 사용률입니다.
    + **HOST-0 PID-123** - 각 프로세스 트랙에 할당된 고유한 이름입니다. 약어 PID는 프로세스 ID이고, 여기에 추가된 숫자는 프로세스에서 데이터를 캡처하는 동안 기록되는 프로세스 ID 번호입니다. 이 섹션에는 프로세스에서 얻은 다음 정보가 표시됩니다.
      + **GPU-inum\$1gpu 사용률** - 시간 경과에 따른 inum\$1gpu번째 GPU 사용률.
      + **GPU-inum\$1gpu 디바이스** - inum\$1gpu번째 GPU 디바이스에서 실행되는 커널.
        + **스트림 icuda\$1stream** - GPU 디바이스에서 실행되는 커널을 보여주는 CUDA 스트림. CUDA 스트림에 대해 자세히 알아보려면 NVIDIA에서 제공하는 [CUDA C/C\$1\$1 스트림 및 동시성](https://developer.download.nvidia.com/CUDA/training/StreamsAndConcurrencyWebinar.pdf)에 관한 PDF 슬라이드를 참조하세요.
      + **GPU-inum\$1gpu 호스트** - inum\$1gpu번째 GPU 호스트에서 실행되는 커널.

다음 스크린샷은 각각 8개의 NVIDIA A100 Tensor Core GPU가 장착된 `ml.p4d.24xlarge` 인스턴스에서 실행되는 훈련 작업의 프로필 **타임라인**을 보여줍니다.

다음은 프로필을 축소하여 보여 주는 것으로, 다음 데이터 배치를 가져오기 위해 `step_232`와(과) `step_233` 사이의 간헐적인 데이터 로더를 포함하여 12개의 단계를 인쇄합니다.

![\[\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/profiler/sagemaker-profiler-ui-timeline-1.png)


각 CPU에 대해 CPU에서 실행되는 명령을 나타내는 `"itlb_misses.miss_causes_a_walk"` 및 `"clk_unhalted_ref.tsc"`와(과) 같은 CPU 사용률 및 성능 카운터를 추적할 수 있습니다.

각 GPU에 대해 호스트 타임라인과 디바이스 타임라인을 볼 수 있습니다. 커널 시작은 호스트 타임라인을 기준으로 하고 커널 실행은 디바이스 타임라인을 기준으로 합니다. GPU 호스트 타임라인에 훈련 스크립트를 추가한 경우 주석(예: 앞으로, 뒤로, 최적화)을 볼 수도 있습니다.

타임라인 보기에서는 커널 시작과 실행 쌍을 추적할 수도 있습니다. 이를 통해 호스트(CPU)에 예약된 커널 시작이 해당 GPU 디바이스에서 어떻게 실행되는지 이해할 수 있습니다.

**작은 정보**  
`f` 키를 누르면 선택한 커널이 확대됩니다.

다음 스크린샷은 이전 스크린샷의 `step_233` 및 `step_234`을(를) 확대한 모습입니다. 다음 스크린샷에서 선택한 타임라인 간격은 분산 훈련의 필수 통신 및 동기화 단계이자 GPU-0 디바이스에서 실행되는 `AllReduce` 작업입니다. 스크린샷에서 GPU-0 호스트에서의 커널 시작은 청록색 화살표로 표시된 GPU-0 디바이스 스트림 1에서 실행되는 커널에 연결된다는 것을 알 수 있습니다.

![\[\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/profiler/sagemaker-profiler-ui-timeline-2.png)


또한 이전 스크린샷과 같이 타임라인 간격을 선택하면 UI의 하단 패널에 두 개의 정보 탭이 나타납니다. **현재 선택** 탭에는 선택한 커널과 호스트의 연결된 커널 시작에 대한 세부 정보가 표시됩니다. 각 GPU 커널은 항상 CPU에서 직접적으로 호출되므로 연결 방향은 항상 호스트(CPU)에서 디바이스(GPU) 방향입니다. **연결** 탭에는 선택한 커널 시작 및 실행 쌍이 표시됩니다. 둘 중 하나를 선택하여 **타임라인** 보기의 중앙으로 이동할 수 있습니다.

다음 스크린샷은 `AllReduce` 작업 시작 및 실행 쌍을 더 확대하여 보여줍니다.

![\[\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/profiler/sagemaker-profiler-ui-timeline-3.png)


## 정보
<a name="profiler-expore-viz-information"></a>

**정보**에서 인스턴스 유형, 작업에 프로비저닝된 컴퓨팅 리소스의 Amazon 리소스 이름(ARN), 노드 이름, 하이퍼파라미터 등 로드된 훈련 작업에 대한 정보에 액세스할 수 있습니다.

## Settings
<a name="profiler-expore-viz-settings"></a>

SageMaker AI Profiler UI 애플리케이션 인스턴스는 기본적으로 2시간의 유휴 시간이 지나면 종료되도록 구성되어 있습니다. **설정**에서 다음 설정을 사용하여 자동 종료 타이머를 조정할 수 있습니다.
+ **앱 자동 종료 활성화** - 지정된 유휴 시간이 지나면 애플리케이션이 자동으로 종료되도록 선택하고 **활성화**로 설정합니다. 자동 종료 기능을 끄려면 **비활성화**를 선택합니다.
+ **자동 종료 임곗값(시간)** - **앱 자동 종료 활성화**에서 **활성화**를 선택하면 애플리케이션이 자동으로 종료되는 임곗값을 시간 단위로 설정할 수 있습니다. 기본값은 2시간으로 설정되어 있습니다.

# SageMaker Profiler 문제 해결
<a name="profiler-faq"></a>

SageMaker Profiler를 사용하는 동안 다음 질문 및 답변 페어를 사용하여 문제를 해결합니다.

**Q. `ModuleNotFoundError: No module named 'smppy'` 오류 메시지가 표시됩니다**

2023년 12월 이후 중복된 패키지 이름 문제를 해결하기 위해 SageMaker Profiler Python 패키지의 이름이 `smppy`에서 `smprof`로 변경되었습니다. `smppy`는 이미 오픈 소스 패키지에서 사용되고 있습니다.

따라서 2023년 12월 이전부터 `smppy`를 사용했는데 이 `ModuleNotFoundError` 문제가 발생한 경우 최신 `smprof` 패키지를 설치하거나 최신 [SageMaker Profiler에 사전 설치된 SageMaker AI 프레임워크 이미지](profiler-support.md#profiler-support-frameworks) 중 하나를 사용하는 동안 훈련 스크립트의 오래된 패키지 이름이 원인일 수 있습니다. 이 경우 훈련 스크립트 전체에서 `smppy`의 모든 언급을 `smprof`로 바꾸어야 합니다.

훈련 스크립트에서 SageMaker Profiler Python 패키지 이름을 업데이트하는 동안 사용해야 하는 패키지 이름의 버전에 대한 혼동을 방지하려면 다음 코드 코드 조각과 같이 조건부 가져오기 문을 사용하는 것이 좋습니다.

```
try:
    import smprof 
except ImportError:
    # backward-compatability for TF 2.11 and PT 1.13.1 images
    import smppy as smprof
```

또한 최신 PyTorch 또는 TensorFlow 버전으로 업그레이드하는 동안 `smppy`를 사용한 경우 [(선택 사항) SageMaker Profiler Python 패키지 설치](profiler-prepare.md#profiler-install-python-package)의 지침에 따라 최신 `smprof` 패키지를 설치해야 합니다.

**Q. `ModuleNotFoundError: No module named 'smprof'` 오류 메시지가 표시됩니다**

먼저 공식적으로 지원되는 SageMaker AI 프레임워크 컨테이너 중 하나를 사용해야 합니다. 이 중 하나를 사용하지 않는 경우 [(선택 사항) SageMaker Profiler Python 패키지 설치](profiler-prepare.md#profiler-install-python-package)의 지침에 따라 `smprof` 패키지를 설치할 수 있습니다.

**Q. `ProfilerConfig`를 가져올 수 없습니다.**

SageMaker Python SDK를 사용하여 작업 시작 관리자 스크립트에서 `ProfilerConfig`를 가져올 수 없는 경우 로컬 환경 또는 Jupyter 커널에 SageMaker Python SDK의 상당히 오래된 버전이 있을 수 있습니다. 최신 버전의 SDK를 사용해야 합니다.

```
$ pip install --upgrade sagemaker
```

**Q. `aborted: core dumped when importing smprof into my training script` 오류 메시지가 표시됩니다**

이전 버전의 `smprof`에서 이 문제는 PyTorch 2.0 이상 및 PyTorch Lightning에서 발생합니다. 이 문제를 해결하려면 [(선택 사항) SageMaker Profiler Python 패키지 설치](profiler-prepare.md#profiler-install-python-package)의 지침에 따라 최신 `smprof` 패키지도 설치합니다.

**Q. SageMaker Studio에서 SageMaker Profiler UI를 찾을 수 없습니다. 어떻게 찾을 수 있습니까?**

SageMaker AI 콘솔에 액세스할 수 있는 경우 다음 옵션 중 하나를 선택합니다.
+ [옵션 1: 도메인 세부 정보 페이지에서 SageMaker Profiler UI 시작](profiler-access-smprofiler-ui.md#profiler-access-smprofiler-ui-console-smdomain)
+ [옵션 2: SageMaker AI 콘솔의 SageMaker Profiler 랜딩 페이지에서 SageMaker Profiler UI 애플리케이션 시작](profiler-access-smprofiler-ui.md#profiler-access-smprofiler-ui-console-profiler-landing-page)

도메인 사용자이고 SageMaker AI 콘솔에 액세스할 수 없는 경우 SageMaker Studio Classic을 통해 애플리케이션에 액세스할 수 있습니다. 이 경우 다음 옵션을 선택합니다.
+ [옵션 3: SageMaker AI Python SDK에서 애플리케이션 시작 관리자 함수 사용](profiler-access-smprofiler-ui.md#profiler-access-smprofiler-ui-app-launcher-function)