목록으로
'언젠가 읽기' 컨텐츠는 논문이나 영문 컨텐츠 등 언젠가 읽으려고 즐겨찾기 하고선 읽지 않고 계속 미룰만한 컨텐츠를 읽고 요약하거나 소개합니다.

Torch.compile 사용 방법

torch.compile의 가치 제안

torch.compile의 주요 가치는 PyTorch 모델을 컴파일하여 실행 속도를 향상시키는 것입니다. 이는 단순히 모델을 컴파일함으로써 X% 빠르게 실행된다는 직관적인 이점을 제공합니다. 하지만 다양한 사용자들이 torch.compile을 사용하는 과정에서, 실제로 이 가치 제안이 각자의 상황에 어떻게 적용되는지는 미묘한 차이가 있을 수 있음을 발견했습니다. 이 글에서는 torch.compile을 사용하는 다양한 방법과 이러한 사용 사례 내에서 무엇이 효과적이고 무엇이 그렇지 않은지에 대해 설명합니다.

소규모-중간 규모에서의 훈련 효율성 향상

시나리오

PyTorch로 작성된 모델을 소규모에서 중간 규모(예: 1,000개 미만의 GPU)로 훈련하고자 할 때, 모델의 훈련 속도를 개선하고 싶을 때 유용합니다. 로컬에서는 모델을 더 빨리 훈련할 수 있어 개발 속도가 향상되며, 전 세계적으로는 모든 사용자의 모델 훈련 속도가 빨라지면 GPU 사용 시간이 줄어들어 동일한 클러스터 내에서 더 많은 작업을 수행할 수 있습니다. 이는 GPU 자원이 제한된 환경에서도 효율성을 크게 향상시킬 수 있습니다.

해결 방법

torch.compile을 활용하여 모델의 특정 모듈만을 컴파일하는 것이 효과적일 수 있습니다. 전체 모델을 컴파일할 필요 없이, 성능 향상이 큰 특정 모듈을 선택적으로 컴파일함으로써 최적의 결과를 얻을 수 있습니다. 예를 들어, 추천 시스템에서는 임베딩 조회 부분의 최적화로 인한 계산 향상이 크지 않을 수 있으며, 모델 병렬화가 컴파일러에서 처리하기 어려울 수 있기 때문에 이를 비활성화할 수 있습니다.

추가적으로, torch.compile에 대한 자세한 가이드를 제공하는 "missing manual" 문서를 참고하여 컴파일러를 효과적으로 활용하는 방법을 익히는 것이 좋습니다.

오픈 소스 예제

  • torchtune
  • torchtitan
  • torchao

이들 라이브러리는 torch.compile을 사용한 최신 PyTorch 모델의 훈련 예제를 제공하며, 실습을 통해 더 깊이 이해할 수 있습니다.

단점

torch.compile은 사용자에게 단순히 모델을 컴파일하여 성능을 향상시킬 수 있다는 약속이 다소 과장되었을 수 있습니다. 컴파일러의 복잡성으로 인해 사용자는 모델을 torch.compile에 적용하면서 추가적인 복잡성을 감수해야 할 수 있습니다. 그러나 torch.compile의 설계는 점진적으로 도입할 수 있도록 되어 있어, 사용자는 필요한 부분부터 컴파일을 시작할 수 있습니다.

참고 자료

  • PyTorch 공식 문서
  • 컴파일러 최적화 기법
  • Zettelkasten 노트 작성법

[출처] Ways to Use Torch.compile