Python 프로파일링 통계 데이터에 액세스 - 아마존 SageMaker

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

Python 프로파일링 통계 데이터에 액세스

Python 프로파일링은 훈련 스크립트 및 SageMaker 딥러닝 프레임워크의 Python 함수 및 연산자와 관련된 프레임워크 메트릭을 제공합니다.

Python 프로파일링을 위한 훈련 모드 및 단계

훈련 중에 특정 구간을 프로파일링하여 각 간격에 대한 통계를 분할하기 위해 디버거는 모드 및 단계를 설정하는 도구를 제공합니다.

훈련 모드의 경우 다음 PythonProfileModes 클래스를 사용하세요.

from smdebug.profiler.python_profile_utils import PythonProfileModes

이 클래스는 다음 옵션을 제공합니다.

  • PythonProfileModes.TRAIN - 훈련 단계에서 대상 단계를 프로파일링하려는 경우에 사용합니다. 이 모드 옵션은 에서만 사용할 수 있습니다. TensorFlow

  • PythonProfileModes.EVAL- 평가 단계에서 대상 단계를 프로파일링하려는 경우에 사용합니다. 이 모드 옵션은 에서만 사용할 수 TensorFlow 있습니다.

  • PythonProfileModes.PREDICT- 예측 단계에서 대상 단계를 프로파일링하려는 경우에 사용합니다. 이 모드 옵션은 에서만 사용할 수 TensorFlow 있습니다.

  • PythonProfileModes.GLOBAL - 이전 세 단계가 포함된 글로벌 단계에서 대상 단계를 프로파일링하려는 경우에 사용합니다. 이 모드 옵션은 에서만 사용할 수 PyTorch 있습니다.

  • PythonProfileModes.PRE_STEP_ZERO - 첫 번째 에포크의 첫 번째 훈련 단계가 시작되기 전에 초기화 단계에서 대상 단계를 프로파일링하려는 경우에 사용합니다. 이 단계에는 초기 작업 제출, EC2 인스턴스에 훈련 스크립트 업로드, EC2 인스턴스 준비, 입력 데이터 다운로드가 포함됩니다. 이 모드 옵션은 TensorFlow 및 모두에 사용할 수 PyTorch 있습니다.

  • PythonProfileModes.POST_HOOK_CLOSE - 훈련 작업이 완료되고 디버거 후크가 닫힌 후 마무리 단계에서 대상 단계를 프로파일링하려는 경우에 사용합니다. 이 단계에는 훈련 작업이 마무리되고 완료되는 동안 프로파일링 데이터가 포함됩니다. 이 모드 옵션은 TensorFlow 및 모두에 사용할 수 PyTorch 있습니다.

훈련 단계의 경우 다음 StepPhase 클래스를 사용하세요.

from smdebug.profiler.analysis.utils.python_profile_analysis_utils import StepPhase

이 클래스는 다음 옵션을 제공합니다.

  • StepPhase.START - 초기화 단계의 시작점을 지정하는 데 사용합니다.

  • StepPhase.STEP_START - 훈련 단계의 시작 단계를 지정하는 데 사용합니다.

  • StepPhase.FORWARD_PASS_END - 정방 전달이 종료되는 단계를 지정하는 데 사용합니다. 이 옵션은 다음에만 사용할 수 PyTorch 있습니다.

  • StepPhase.STEP_END - 훈련 단계의 종료 단계를 지정하는 데 사용합니다. 이 옵션은 다음에만 사용할 수 TensorFlow 있습니다.

  • StepPhase.END - 완료(post-hook-close) 단계의 종료점을 지정하는 데 사용합니다. 콜백 후크가 닫히지 않으면 완료 단계 프로파일링이 발생하지 않습니다.

Python 프로파일링 분석 도구

디버거는 두 가지 프로파일링 도구를 사용하여 Python 프로파일링을 지원합니다.

  • cProfile - 표준 Python 프로파일러입니다. cProfile은 프로파일링이 활성화되었을 때 호출된 모든 함수의 CPU 시간에 대한 프레임워크 지표를 수집합니다.

  • Pyinstrument - 밀리초마다 프로파일링 이벤트를 샘플링하는 낮은 오버헤드의 Python 프로파일러입니다.

Python 프로파일링 옵션과 수집 항목에 대한 자세한 내용은 기본 시스템 모니터링 및 다양한 프로파일링 옵션이 있는 사용자 지정 프레임워크 프로파일링으로 훈련 작업을 시작하세요. 섹션을 참조하세요.

Python 프로파일링 데이터를 가져오고 분석하기 위해 PythonProfileAnalysis, cProfileAnalysisPyinstrumentAnalysis 클래스의 다음 메서드가 제공됩니다. 각 함수는 기본 S3 URI에서 최신 데이터를 로드합니다.

from smdebug.profiler.analysis.python_profile_analysis import PythonProfileAnalysis, cProfileAnalysis, PyinstrumentAnalysis

분석을 위해 Python 프로파일링 객체를 설정하려면 다음 예제 코드와 같이 cProfileAnalysis 또는 PyinstrumentAnalysis 클래스를 사용하십시오. cProfileAnalysis 객체를 설정하는 방법을 보여주고, PyinstrumentAnalysis를 사용하려는 경우 클래스 이름을 바꾸는 방법을 보여줍니다.

python_analysis = cProfileAnalysis( local_profile_dir=tf_python_stats_dir, s3_path=tj.profiler_s3_output_path )

cProfileAnalysisPyinstrumentAnalysis 클래스가 Python 프로파일링 통계 데이터를 가져오는 데 사용할 수 있는 메서드는 다음과 같습니다.

  • python_analysis.fetch_python_profile_stats_by_time(start_time_since_epoch_in_secs, end_time_since_epoch_in_secs) - 시작 시간과 종료 시간을 가져와서 시작 또는 종료 시간이 제공된 간격과 겹치는 단계 통계의 함수 통계를 반환합니다.

  • python_analysis.fetch_python_profile_stats_by_step(start_step, end_step, mode, start_phase, end_phase) - 시작 단계와 종료 단계를 가져와서 프로파일링된 stepstart_step <= step < end_step를 만족하는 모든 단계 통계의 함수 통계를 반환합니다.

    • start_stepend_step(str) - Python 프로파일링 통계 데이터를 가져오기 위한 시작 단계와 종료 단계를 지정합니다.

    • mode(str) - PythonProfileModes 열거자 클래스를 사용하여 훈련 작업 모드를 지정합니다. 기본값은 PythonProfileModes.TRAIN입니다. 사용 가능한 옵션은 Python 프로파일링을 위한 훈련 모드 및 단계 섹션에 나와 있습니다.

    • start_phase(str) - StepPhase 열거자 클래스를 사용하여 대상 단계의 시작 단계를 지정합니다. 이 파라미터를 사용하면 여러 훈련 단계 간에 프로파일링을 수행할 수 있습니다. 기본값은 StepPhase.STEP_START입니다. 사용 가능한 옵션은 Python 프로파일링을 위한 훈련 모드 및 단계 섹션에 나와 있습니다.

    • end_phase(str) - StepPhase 열거자 클래스를 사용하여 대상 단계의 종료 단계를 지정합니다. 이 파라미터는 훈련의 종료 단계를 설정합니다. 사용 가능한 옵션은 start_phase 파라미터에 사용할 수 있는 옵션과 동일합니다. 기본값은 StepPhase.STEP_END입니다. 사용 가능한 옵션은 Python 프로파일링을 위한 훈련 모드 및 단계 섹션에 나와 있습니다.

  • python_analysis.fetch_profile_stats_between_modes(start_mode, end_mode) - 시작 모드와 종료 모드 사이의 Python 프로파일링에서 통계를 가져옵니다.

  • python_analysis.fetch_pre_step_zero_profile_stats() - Python 프로파일링에서 0단계까지 통계를 가져옵니다.

  • python_analysis.fetch_post_hook_close_profile_stats() - 후크가 종료된 후 Python 프로파일링에서 통계를 가져옵니다.

  • python_analysis.list_profile_stats()— Python 프로파일링 통계 DataFrame 중 a를 반환합니다. 각 행에는 각 프로파일링 인스턴스의 메타데이터와 해당 통계 파일(단계당 하나)이 들어 있습니다.

  • python_analysis.list_available_node_ids() - Python 프로파일링 통계에 사용할 수 있는 노드 ID 목록을 반환합니다.

cProfileAnalysis 클래스별 메서드:

  • fetch_profile_stats_by_training_phase() - 가능한 모든 시작 모드와 종료 모드 조합에 대한 Python 프로파일링 통계를 가져오고 집계합니다. 예를 들어, 세부 프로파일링이 활성화된 상태에서 훈련 및 검증 단계를 완료하면, (PRE_STEP_ZERO, TRAIN), (TRAIN, TRAIN), (TRAIN, EVAL), (EVAL, EVAL)(EVAL, POST_HOOK_CLOSE) 조합이 됩니다. 이러한 각 조합 내의 모든 통계 파일이 집계됩니다.

  • fetch_profile_stats_by_job_phase() - 작업 단계별로 Python 프로파일링 통계를 가져오고 집계합니다. 작업 단계는 initialization(0단계까지 프로파일링), training_loop(훈련 및 검증), finalization(후크를 종료 후 프로파일링)입니다.