View a markdown version of this page

여러 프로필 추적 파일의 타임라인 병합 - Amazon SageMaker AI

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

여러 프로필 추적 파일의 타임라인 병합

참고

지원 종료 공지: 2027년 6월 30일에 AWS 는 Amazon SageMaker Profiler에 대한 지원을 종료합니다. 2027년 6월 30일 이후에는 더 이상 Profiler 콘솔 또는 Profiler 리소스에 액세스할 수 없습니다. 자세한 내용은 프로파일러 가용성 변경 단원을 참조하십시오.

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

작은 정보

진행하기 전에 이 페이지의 예제 전반에서 활용할 TrainingJob 객체를 설정해야 합니다. TrainingJob 객체 설정에 대한 추가 정보는 프로필 데이터에 액세스 섹션을 참조하세요.

이 MergedTimeline 클래스는 다양한 프로파일링 정보를 단일 타임라인으로 통합하고 상호 연관시키는 도구를 제공합니다. 디버거가 훈련 작업의 여러 단계에서 프로파일링 데이터와 주석을 캡처한 후 추적 이벤트의 JSON 파일이 기본 tracefolder 디렉터리에 저장됩니다.

  • Python 레이어에 있는 주석의 경우 추적 파일이 *pythontimeline.json에 저장됩니다.

  • TensorFlow C++ 레이어에 있는 주석의 경우 추적 파일이 *model_timeline.json에 저장됩니다.

  • Tensorflow 프로파일러는 이벤트를 *trace.json.gz 파일에 저장합니다.

작은 정보

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

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

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

병합된 타임라인의 예입니다.
작은 정보

키보드를 사용하여 추적 앱에서 병합된 타임라인을 조작하려면 확대는 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 ModelTrainer 클래스 메서드 또는 TrainingJob 객체를 profiler-output 사용하여를 찾을 수 있습니다. 예: model_trainer.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 파일을 엽니다. 출력을 탐색하여 병합된 타임라인을 도식화할 수 있습니다.