Pytorch Profiler
PyTorch에서 실행된 연산들의 성능을 분석하는 데 사용되는 도구로, CPU와 GPU(CUDA)에서 실행되는 연산의 실행 시간과 메모리 사용량을 측정하여 최적화 포인트를 찾는 데 유용하다.
- 각 연산의 실행 시간 분석 : 연산별 CPU 시간, GPU 시간을 측정하여 병목 구간 파악 가능
- CUDA(GPU) 연산 분석 : use_cuda=True 옵션을 사용하면 GPU 연산 시간도 포함하여 분석 가능
- 메모리 사용량 분석 : profile_memory=True를 설정하면 메모리 사용량까지 추적 가능
- Chrome 트레이스 파일(JSON) 저장 : 프로파일링 결과를 Chrome의 chrome://tracing/에서 시각화 가능
- 연산 호출 스택 추적 : with_stack=True를 사용하면 연산이 실행된 코드 위치까지 추적 가능
(*프로파일러 사용 시, 실행 시간이 증가한다는 점 참고 부탁드립니다.)
1. 사용법
Profiler 주요 매개변수
매개변수 | 설명 |
use_cuda=True | GPU 성능까지 프로파일링 |
record_shapes=True | 텐서의 shape까지 분석 |
profile_memory=True | 메모리 사용량도 기록 |
with_stack=True | 연산이 호출된 위치까지 추적 |
Profiler 기본 사용법
# profiler 호출
import torch.autograd.profiler as profiler
# 프로파일러 실행 (use_device = 'cuda'로 CUDA 성능 포함하여 분석)
with profiler.profile(use_device = 'cuda') as prof:
outputs = model(gene_embeddings, drug_embeddings, drug_graphs, drug_masks)
# 프로파일러 실행 영역 내에서 특정 모듈 프로파일링
with torch.autograd.profiler.record_function("Gene_Embedding"):
gene_embeddings = self.gene_embedding_layer(gene_embeddings)
# 프로파일링 결과 출력(CUDA 실행 시간이 긴 연산 순으로 정렬)
print(prof.key_averages().table(sort_by="cuda_time_total", row_limit=10))
2. 결과 해석
Profiler 결과 출력
열(Column) 설명
이름 | 설명 |
Name | 프로파일링된 연산(또는 함수)의 이름 |
Self CPU % | 이 연산이 CPU에서 실행된 시간 중, 다른 연산을 호출하지 않고 자체적으로 소비한 시간의 비율 |
Self CPU | 이 연산이 CPU에서 자체적으로 소비한 총 시간 (밀리초, ms) |
CPU total % | 이 연산이 CPU에서 실행된 총 시간(호출된 하위 연산 포함)이 전체 실행 시간에서 차지하는 비율 |
CPU total | 이 연산이 CPU에서 실행된 총 시간(호출된 하위 연산 포함) (밀리초, ms) |
CPU time avg | 이 연산의 평균 실행 시간 (전체 실행 시간 / 호출 횟수) |
Self CUDA | 이 연산이 GPU(CUDA)에서 자체적으로 소비한 총 시간 (밀리초, ms) |
Self CUDA % | 이 연산이 GPU에서 자체적으로 소비한 시간의 비율 |
CUDA total | 이 연산이 GPU에서 실행된 총 시간(호출된 하위 연산 포함) (밀리초, ms) |
CUDA time avg | 이 연산이 GPU에서 실행된 평균 시간 (전체 실행 시간 / 호출 횟수) |
# of Calls | 이 연산이 실행된 횟수 (호출 수) |
'예바의 스터디 > 개념 정리' 카테고리의 다른 글
HTTP 서버의 React Native Android APK 빌드하기 (1) | 2025.01.31 |
---|---|
[컴파일러] FOLLOW(𝞪)의 개념과 예제 (2) | 2024.10.13 |
MLFF(Machine Learning Force Fields)의 개념과 모델 (6) | 2024.09.17 |
[컴파일러] FIRST(𝞪)의 개념과 예제 (2) | 2024.09.16 |
MPNN(Message Passing Neural Network) (4) | 2024.08.15 |