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

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

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

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추정기 클래스 메서드 또는 객체를 profiler-output 사용하여 찾을 수 있습니다. TrainingJob 예: 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 파일을 엽니다. 출력을 탐색하여 병합된 타임라인을 도식화할 수 있습니다.