기본 시스템 모니터링 및 다양한 프로파일링 옵션이 있는 사용자 지정 프레임워크 프로파일링 - Amazon SageMaker AI

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

기본 시스템 모니터링 및 다양한 프로파일링 옵션이 있는 사용자 지정 프레임워크 프로파일링

이 섹션에서는 지원되는 프로파일링 구성 클래스와 예제 구성에 대한 정보를 제공합니다. 다음 프로파일링 구성 클래스를 사용하여 프레임워크 프로파일링 옵션을 관리할 수 있습니다.

  • DetailedProfilingConfig - 기본 프레임워크 프로파일러(TensorFlow 프로파일러 및 프로파일러)를 사용하여 프레임워크 작업을 PyTorch 프로파일링할 대상 단계 또는 시간 범위를 지정합니다. 예를 들어 TensorFlow를 사용하는 경우 디버거 후크를 사용하면 TensorFlow 프로파일러가 TensorFlow특정 프레임워크 지표를 수집할 수 있습니다. 세부 프로파일링을 통해 모든 프레임워크 연산자를 사전 단계(첫 단계 이전), 훈련 작업의 단계 내 및 단계 간에 프로파일링할 수 있습니다.

    참고

    세부 프로파일링은 GPU 메모리 소비를 크게 증가시킬 수 있습니다. 두 단계 이상에 대해서는 세부 프로파일링을 활성화하지 않는 것이 좋습니다.

  • DataloaderProfilingConfig - 딥 러닝 프레임워크 데이터 로더 프로세스를 프로파일링할 대상 단계 또는 시간 범위를 지정합니다. 디버거는 프레임워크의 모든 데이터 로더 이벤트를 수집합니다.

    참고

    데이터 로더 프로파일링은 데이터 로더에서 정보를 수집하는 동안 훈련 성능을 저하시킬 수 있습니다. 데이터 로더 프로파일링을 두 단계 이상 활성화하지 않는 것이 좋습니다.

    디버거는 AWS 딥 러닝 컨테이너에 대해서만 데이터 로더 프로세스에 주석을 달도록 사전 구성되어 있습니다. 디버거는 다른 사용자 지정 또는 외부 훈련 컨테이너의 데이터 로더 프로세스를 프로파일링할 수 없습니다.

  • PythonProfilingConfig - Python 함수를 프로파일링할 대상 단계 또는 시간 범위를 지정합니다. 두 Python 프로파일러 cProfile 와 Pyinstrument 중에서 선택할 수도 있습니다.

    • cProfile - 표준 Python 프로파일러.는 훈련 중에 호출된 모든 Python 연산자에 대한 정보를 cProfile 수집합니다. cProfile를 사용하면 Debugger는 각 함수 호출에 대한 누적 시간과 주석을 저장하여 Python 함수에 대한 전체 세부 정보를 제공합니다. 예를 들어 딥 러닝에서 가장 자주 호출되는 함수는 컨볼루션 필터와 역방향 패스 연산자, 그리고 각 함수의 cProfile 프로파일일 수 있습니다. cProfile 옵션의 경우 타이머 옵션인 총 시간, CPU 시간 및 비CPU정기 옵션을 추가로 선택할 수 있습니다. 프로세서( CPU 및 모두GPU)에서 실행되는 모든 함수 호출을 CPU 적시에 프로파일링할 수 있지만 비CPU정기 옵션을 사용하여 I/O 또는 네트워크 병목 현상을 식별할 수도 있습니다. 기본값은 총 시간이며 디버거 프로필CPU은 및 비정CPU규 시간입니다. 를 사용하면 프로필 데이터를 분석할 때 모든 단일 함수로 드릴다운할 cProfile수 있습니다.

    • Pyinstrument - Pyinstrument는 샘플링을 기반으로 작동하는 오버헤드가 적은 Python 프로파일러입니다. 디버거는 Pyinstrument 옵션을 사용하여 밀리초마다 프로파일링 이벤트를 샘플링합니다. Pyinstrument는 CPU 시간 대신 경과된 벽시계 시간을 측정하므로 Pyinstrument 옵션은 프로파일링 노이즈를 줄이고(누적적으로 빠른 관련 없는 함수 호출 필터링) 모델 훈련을 위해 실제로 컴퓨팅 집약적인(누적적으로 느린) 연산자를 캡처하는 cProfile 옵션보다 더 나은 선택이 될 수 있습니다. Pystrument를 사용하면 함수 호출 트리를 확인하고 속도 저하의 구조와 근본 원인을 더 잘 이해할 수 있습니다.

    참고

    Python 프로파일링을 활성화하면 전체 훈련 시간이 느려질 수 있습니다.는 호출할 때마다 가장 자주 호출되는 Python 연산자를 cProfile 프로파일링하므로 호출 수에 따라 프로파일링 처리 시간이 증가합니다. Pystrument의 경우 샘플링 메커니즘 때문에 시간에 관하여 누적 프로파일링 시간이 증가합니다.

다음 예제 구성은 지정된 값과 함께 다양한 프로파일링 옵션을 사용할 때의 전체 구조를 보여줍니다.

import time from sagemaker.debugger import (ProfilerConfig, FrameworkProfile, DetailedProfilingConfig, DataloaderProfilingConfig, PythonProfilingConfig, PythonProfiler, cProfileTimer) profiler_config=ProfilerConfig( system_monitor_interval_millis=500, framework_profile_params=FrameworkProfile( detailed_profiling_config=DetailedProfilingConfig( start_step=5, num_steps=1 ), dataloader_profiling_config=DataloaderProfilingConfig( start_step=7, num_steps=1 ), python_profiling_config=PythonProfilingConfig( start_step=9, num_steps=1, python_profiler=PythonProfiler.CPROFILE, cprofile_timer=cProfileTimer.TOTAL_TIME ) ) )

사용 가능한 프로파일링 옵션에 대한 자세한 내용은 Amazon SageMaker Python SDK PythonProfilingConfigDetailedProfilingConfigDataloaderProfilingConfig, 및 섹션을 참조하세요.