torch.compile과 Fused Op 비교

마지막 수정:

pytorchtorch-compileoptimizationfused-kernels

PyTorch 모델을 최적화할 때 가장 먼저 볼 수 있는 선택지는 torch.compile이다.

compiled_model = torch.compile(model)

하지만 compile이 항상 모든 병목을 해결하지는 않는다. 어떤 op는 이미 충분히 최적화되어 있고, 어떤 구간은 shape나 graph break 때문에 기대만큼 합쳐지지 않는다.

비교는 같은 조건에서 한다.

1. eager model
2. torch.compile model
3. selected fused/custom op

이 카드는 custom CUDA로 내려가기 전에 PyTorch 레벨에서 얻을 수 있는 이득과 한계를 확인한다.

확인

  • torch.compile은 왜 benchmark 없이 성능 개선을 확신하기 어려운가?
  • fused op는 어떤 overhead를 줄이는가?
  • graph break가 많으면 compile 효과가 줄어드는 이유는 무엇인가?