허깅페이스(Hugging Face)가 파이토치(PyTorch) 공식 성능 분석 도구인 torch.profiler의 입문 가이드를 공개했다. AI 모델 개발 과정에서 훈련·추론 속도가 기대에 못 미칠 때 어디서 시간이 새는지 정확히 파악하는 것은 최적화의 출발점이며, torch.profiler는 이를 위한 핵심 도구다.
torch.profiler는 CPU와 GPU에서 실행되는 연산의 시간, 순서, 자원 사용량을 추적해 두 가지 형태로 분석 정보를 제공한다. 프로파일러 테이블(key_averages().table)은 연산별 평균 실행 시간 통계를 요약해 “어느 연산이 시간을 가장 많이 소비하는가”를 파악하는 데 적합하다. 프로파일러 트레이스(export_chrome_trace)는 시간 순서대로 모든 작업의 실행 흐름을 기록하며, Perfetto UI(ui.perfetto.dev)에서 시각적으로 확인할 수 있다. 기본 사용법은 with 블록 안에 profiler를 감싸고 schedule 파라미터로 웜업(warmup)과 측정 구간을 지정하는 형태다.

측정 결과를 해석하는 핵심은 CPU 시간과 GPU 시간의 관계를 비교하는 것이다. CPU 시간이 GPU 시간보다 현저히 길면 커널 준비·실행 오버헤드가 병목인 오버헤드 바운드 상태이며, CPU와 GPU 시간이 비슷하면 GPU 연산 자체가 병목인 컴퓨트 바운드 상태다. 첫 번째 단계가 이후보다 훨씬 길다면 cuBLAS 휴리스틱·레이지 로딩 등 일회성 초기화 비용이 포함된 것이므로 워밍업 구간을 충분히 두어야 한다. cudaDeviceSynchronize 호출 시간이 길게 나타나면 GPU 작업 완료 대기가 빈번하다는 신호로 오버헤드 바운드를 의심할 수 있다. CUDA 런타임 오버헤드로 인해 CPU에서 커널을 시작하기 전 약 2.5ms의 지연이 발생하는 것은 정상 범위다.
torch.compile 적용 후에도 GPU 커널 자체는 동일하게 실행되며, 차이는 dispatcher 계층의 커널 융합 여부에서 나타난다. 허깅페이스는 이 가이드를 파이토치 프로파일링 시리즈의 첫 편으로 출시했으며, 측정 없이 진행하는 최적화는 효과를 예측하기 어렵다는 점에서 프로파일링을 모든 성능 개선 작업의 첫 단계로 제시했다.


