PyTorch: torch.compile이 커널 퓨전으로 최대 10배 가속을 달성하는 방법
PyTorch 컴파일러 torch.compile은 전역 메모리에 대한 중복 쓰기를 커널 퓨전 기법으로 제거하여 GPU에서 최대 10배 가속을 달성합니다. 각 연산에 대한 별도의 GPU 커널 대신, Inductor 컴파일러가 의존 연산들을 자동으로 하나의 커널로 합쳐 중간값을 프로세서의 빠른 레지스터에 유지합니다.
이 기사는 AI가 1차 출처를 기반으로 생성했습니다.
PyTorch 컴파일러 torch.compile은 코드 변경 없이 최대 10배 가속을 달성합니다.
GPU 메모리가 모델 학습을 어떻게 제한하나요?
GPU 커널 실행에는 고정 오버헤드가 있습니다. 퓨전 없이 세 개의 연속 포인트와이즈 연산은 텐서 I/O 작업 8개가 필요합니다. 커널 퓨전 후: 4개 작업 — 메모리 트래픽 50% 감소.
torch.compile은 어떻게 커널을 자동으로 합치나요?
Inductor 컴파일러가 적용하는 방식:
- 수직 퓨전: GPU 레지스터의 의존 연산
- 포인트와이즈 퓨전:
multiply → add → sigmoid를 하나의 Triton 커널로 - 리덕션 퓨전: 배치 정규화에 적용
- GEMM + 에필로그 퓨전: 바이어스 및 활성화 함수
- 수평 퓨전: 독립 연산의 병렬 처리
실제 커널에서는 무슨 일이 일어나나요?
Triton 커널은 GPU 레지스터에 중간값을 유지하고 마지막에만 결과를 씁니다. 커널명: triton_poi_fused_* 및 triton_per_fused_*.
결과 및 적용
실제 모델에서 최대 10배 가속. 한 줄 코드:
model = torch.compile(model) 자주 묻는 질문
- 커널 퓨전이란 무엇이며 왜 GPU 학습을 가속하나요?
- 커널 퓨전은 여러 GPU 커널을 하나로 합칩니다. 퓨전 없이 세 개의 연속 포인트와이즈 연산은 텐서 I/O 작업 8개가 필요합니다. 퓨전 후에는 4개로 줄어 메모리 트래픽이 50% 감소합니다.
- torch.compile은 어떤 종류의 커널 퓨전을 지원하나요?
- 수직 퓨전(의존 연산), 포인트와이즈 퓨전, 리덕션 퓨전, GEMM + 에필로그 퓨전, 수평 퓨전(독립 연산 병렬 처리) 등 다섯 가지 유형을 지원합니다.
📬 AI 뉴스를 받은편지함으로
나만의 방식으로 구성하는 일일 다이제스트 — 주제, 출처, 주기를 선택하세요. 원클릭 해지.