프로파일링 데이터 로더 - 아마존 SageMaker

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

프로파일링 데이터 로더

에서 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()

    시작 타임스탬프와 종료 타임스탬프 사이의 타임라인 차트를 표시합니다.