

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

# 여러 프로필 추적 파일의 타임라인 병합
<a name="debugger-merge-timeline"></a>

SMDebug 클라이언트 라이브러리는 디버거에서 수집한 시스템 지표, 프레임워크 지표 및 Python 프로파일링 데이터의 타임라인을 병합하기 위한 프로파일링 분석 및 시각화 도구를 제공합니다.

**작은 정보**  
진행하기 전에 이 페이지의 예제 전반에서 활용할 TrainingJob 객체를 설정해야 합니다. TrainingJob 객체 설정에 대한 추가 정보는 [프로필 데이터에 액세스](debugger-analyze-data-profiling.md) 섹션을 참조하세요.

이 `MergedTimeline` 클래스는 다양한 프로파일링 정보를 단일 타임라인으로 통합하고 상호 연관시키는 도구를 제공합니다. 디버거가 훈련 작업의 여러 단계에서 프로파일링 데이터와 주석을 캡처한 후 추적 이벤트의 JSON 파일이 기본 `tracefolder` 디렉터리에 저장됩니다.
+ Python 레이어에 있는 주석의 경우 추적 파일이 `*pythontimeline.json`에 저장됩니다.
+ TensorFlow C\$1\$1 레이어에 있는 주석의 경우 추적 파일이 `*model_timeline.json`에 저장됩니다.
+ Tensorflow 프로파일러는 이벤트를 `*trace.json.gz` 파일에 저장합니다.

**작은 정보**  
모든 JSON 추적 파일을 나열하려면 다음 AWS CLI 명령어를 사용하세요.  

```
! aws s3 ls {tj.profiler_s3_output_path} --recursive | grep '\.json$'
```

다음 애니메이션 스크린샷에서 볼 수 있듯이 다양한 프로파일링 소스에서 캡처한 추적 이벤트를 단일 플롯에 배치하고 정렬하면 훈련 작업의 여러 단계에서 발생하는 전체 이벤트를 개괄적으로 파악할 수 있습니다.

![\[병합된 타임라인의 예\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/debugger/debugger-merged-timeline.gif)


**작은 정보**  
키보드를 사용하여 추적 앱에서 병합된 타임라인을 조작하려면 확대는 `W` 키, 왼쪽으로 이동은 `A` 키, 축소는 `S` 키, 오른쪽 이동은 `D` 키를 사용합니다.

`smdebug.profiler.analysis.utils.merge_timelines` 모듈에서 다음 `MergedTimeline` API 작업 및 클래스 메서드를 사용하여 여러 이벤트 추적 JSON 파일을 하나의 추적 이벤트 JSON 파일로 병합할 수 있습니다.

```
from smdebug.profiler.analysis.utils.merge_timelines import MergedTimeline

combined_timeline = MergedTimeline(path, file_suffix_filter, output_directory)
combined_timeline.merge_timeline(start, end, unit)
```

`MergedTimeline` API 작업은 다음 파라미터를 전달합니다.
+ `path`(str) - 시스템 및 프레임워크 프로파일링 추적 파일을 포함하는 루트 폴더(`/profiler-output`)를 지정합니다. SageMaker AI 예측기 클래스 메서드 또는 TrainingJob 객체를 사용하여 `profiler-output`을 찾을 수 있습니다. 예: `estimator.latest_job_profiler_artifacts_path()` 또는 `tj.profiler_s3_output_path`.
+ `file_suffix_filter`(list) - 타임라인을 병합할 파일 접미사 필터 목록을 지정합니다. 사용 가능한 접미사 필터는 `["model_timeline.json", "pythontimeline.json", "trace.json.gz"].`입니다. 이 파라미터를 수동으로 지정하지 않으면 기본적으로 모든 추적 파일이 병합됩니다.
+ `output_directory`(str) - 병합된 타임라인 JSON 파일을 저장할 경로를 지정합니다. 기본값은 `path` 파라미터에 지정된 디렉터리입니다.

`merge_timeline()` 클래스 메서드는 다음 파라미터를 전달하여 병합 프로세스를 실행합니다.
+ `start`(int) - 타임라인을 병합할 시작 시간(마이크로초 및 Unix 시간 형식) 또는 시작 단계를 지정합니다.
+ `end`(int) - 타임라인을 병합할 종료 시간(마이크로초 및 Unix 시간 형식) 또는 종료 단계를 지정합니다.
+ `unit`(str) - `"step"`dhk `"time"` 중에서 선택합니다. 기본값은 `"time"`입니다.

다음 예제 코드를 사용하여 `merge_timeline()` 메서드를 실행하고 병합된 JSON 파일을 다운로드합니다.
+ 타임라인을 `"time"` 단위 옵션과 병합합니다. 다음 예제 코드는 Unix 시작 시간(절대 0 Unix 시간)과 현재 Unix 시간 사이에 사용 가능한 모든 추적 파일을 병합합니다. 즉, 전체 훈련 기간 동안 타임라인을 병합할 수 있습니다.

  ```
  import time
  from smdebug.profiler.analysis.utils.merge_timelines import MergedTimeline
  from smdebug.profiler.profiler_constants import CONVERT_TO_MICROSECS
  
  combined_timeline = MergedTimeline(tj.profiler_s3_output_path, output_directory="./")
  combined_timeline.merge_timeline(0, int(time.time() * CONVERT_TO_MICROSECS))
  ```
+ 타임라인을 `"step"` 단위 옵션과 병합합니다. 다음 예제 코드는 3단계와 9단계 사이에 사용 가능한 모든 타임라인을 병합합니다.

  ```
  from smdebug.profiler.analysis.utils.merge_timelines import MergedTimeline
  
  combined_timeline = MergedTimeline(tj.profiler_s3_output_path, output_directory="./")
  combined_timeline.merge_timeline(3, 9, unit="step")
  ```

`chrome://tracing`에 Chrome 브라우저에서 Chrome 추적 앱을 열고 JSON 파일을 엽니다. 출력을 탐색하여 병합된 타임라인을 도식화할 수 있습니다.