기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Python 프로파일링 통계 데이터에 액세스
Python 프로파일링은 훈련 스크립트 및 SageMaker AI 딥 러닝 프레임워크의 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
, cProfileAnalysis
및 PyinstrumentAnalysis
클래스의 다음 메서드가 제공됩니다. 각 함수는 기본 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 )
cProfileAnalysis
및 PyinstrumentAnalysis
클래스가 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)
- 시작 단계와 종료 단계를 가져와서 프로파일링된step
가start_step <= step < end_step
를 만족하는 모든 단계 통계의 함수 통계를 반환합니다.-
start_step
및end_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을 반환합니다. 각 행에는 각 프로파일링 인스턴스의 메타데이터와 해당 통계 파일(단계당 하나)이 들어 있습니다. -
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
(후크를 종료 후 프로파일링)입니다.