기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
프로파일링 데이터 로더
에서 PyTorchMultiProcessingDataLoaderIter
, SingleProcessingDataLoaderIter
와 같은 데이터 로더 이터레이터는 데이터세트에 대한 모든 반복이 시작될 때 시작됩니다. 초기화 단계에서는 구성된 작업자 수에 따라 작업자 프로세스를 PyTorch 켜고 데이터 및 스레드를 가져오기 위한 데이터 대기열을 설정합니다. pin_memory
PyTorch 데이터 로더 프로파일링 분석 도구를 사용하려면 다음 클래스를 가져오세요. PT_dataloader_analysis
from smdebug.profiler.analysis.utils.pytorch_dataloader_analysis import PT_dataloader_analysis
검색된 프로파일링 데이터를 pandas 데이터 구문 분석 도구를 사용하여 프로파일링 데이터에 액세스 섹션에서 Pandas 프레임 데이터 객체로 전달합니다.
pt_analysis = PT_dataloader_analysis(pf)
pt_analysis
객체에는 다음과 같은 함수를 사용할 수 있습니다.
SMDebug S3SystemMetricsReader
클래스는 지정된 S3 버킷에서 s3_trial_path
파라미터로 시스템 지표를 읽습니다.
-
pt_analysis.analyze_dataloaderIter_initialization()
분석은 이러한 초기화 기간의 중앙값 및 최대 기간을 출력합니다. 이상치가 있는 경우(즉, 기간이 2 * 중앙값보다 큰 경우) 함수는 해당 기간의 시작 및 종료 시간을 출력합니다. 이를 사용하여 해당 시간 간격 동안 시스템 지표를 검사할 수 있습니다.
다음 목록은 이 클래스 메서드에서 사용할 수 있는 분석을 보여줍니다.
-
어떤 유형의 데이터 로더 반복기가 초기화되었습니까?
-
반복기 당 작업자 수.
-
반복기가 pin_memory를 사용하여 초기화되었는지 아니면 사용하지 않고 초기화되었는지 검사하세요.
-
훈련 중에 반복기가 초기화된 횟수입니다.
-
-
pt_analysis.analyze_dataloaderWorkers()
다음 목록은 이 클래스 메서드에서 사용할 수 있는 분석을 보여줍니다.
-
전체 훈련 기간 동안 분리된 작업자 프로세스 수.
-
작업자 프로세스의 중앙값 및 최대 기간.
-
이상치인 작업자 프로세스의 시작 및 종료 시간.
-
-
pt_analysis.analyze_dataloader_getnext()
다음 목록은 이 클래스 메서드에서 사용할 수 있는 분석을 보여줍니다.
-
교육 중에 GetNext 걸려온 호출 수.
-
통화의 중앙값 및 최대 지속 시간 (마이크로초). GetNext
-
GetNext이상치 통화 기간의 시작 시간, 종료 시간, 기간 및 작업자 ID.
-
-
pt_analysis.analyze_batchtime(start_timestamp, end_timestamp, select_events=[".*"], select_dimensions=[".*"])
디버거는 모든 통화의 시작 및 종료 시간을 수집합니다. GetNext 하나의 데이터 배치에서 훈련 스크립트가 소비한 시간을 확인할 수 있습니다. 지정된 기간 내에서 훈련에 직접적으로 영향을 주지 않는 호출을 식별할 수 있습니다. 이러한 호출은 정확도 계산, 디버깅 또는 로깅을 위한 손실 추가, 디버깅 정보 인쇄 등의 작업을 통해 발생할 수 있습니다. 이러한 작업은 계산 집약적이거나 시간이 많이 소요될 수 있습니다. Python 프로파일러, 시스템 지표 및 프레임워크 지표를 상호 연관시켜 이러한 작업을 식별할 수 있습니다.
다음 목록은 이 클래스 메서드에서 사용할 수 있는 분석을 보여줍니다.
-
현재 통화와 이후 GetNext 통화의 시작 시간 간의 차이를 찾아 각 데이터 배치에 소요된 시간을 프로파일링합니다.
BatchTime_in_seconds
-
BatchTime_in_seconds
에서 이상치를 찾고 해당 이상치에 대한 시작 및 종료 시간을 확인하세요. -
해당
BatchTime_in_seconds
타임스탬프 동안 시스템 및 프레임워크 지표를 획득하세요. 이는 시간을 어디에 소비했는지를 나타냅니다.
-
-
pt_analysis.plot_the_window()
시작 타임스탬프와 종료 타임스탬프 사이의 타임라인 차트를 표시합니다.