PyTorch 내부 구조 15 - PyTorch Profiling으로 Operator 병목 읽기
internals를 이해하는 목적은 결국 profile에서 시간을 어디서 잃는지 읽고 바꿀 수 있게 되는 데 있다
프로파일은 해석이 더 중요하다
PyTorch profiler나 Nsight timeline을 열어도 구조를 모르면 숫자만 많다. 앞에서 본 dispatcher, autograd, stream, hidden copy 감각이 있어야 timeline이 읽힌다.
무엇을 봐야 하나
- CPU launch overhead가 큰가
- CUDA kernel 사이에 빈 구간이 많은가
- hidden copy나 layout conversion이 보이는가
- autograd backward가 비정상적으로 길게 이어지는가
이 질문을 통해 "모델이 느리다"를 더 구체적인 병목으로 바꿀 수 있다.
다음 글에서는 torch.compile과 FX/Inductor 쪽으로 넘어간다. PyTorch는 이제 eager runtime만이 아니라 compiler path도 중요한 프레임워크가 되었다.