강의: 처음부터 GPU 컴파일러 구축하기. PyTorch 그래프를 다단계 IR을 통해 CUDA로 낮추기 (GPU_MODE 비디오 + 기사)
요약
본 기사는 PyTorch 그래프를 다단계 IR(Intermediate Representation)을 거쳐 CUDA 커널로 낮추는 GPU 컴파일러 구축 과정을 설명합니다. TVM, Modular, PyTorch Inductor 등 최신 컴파일러의 공통 개념에 초점을 맞추어, 일반 연산이 어떻게 점진적으로 낮은 레벨의 CUDA 커널로 변환되는지 보여줍니다.
핵심 포인트
- PyTorch 그래프를 다단계 IR을 통해 CUDA 커널로 낮추는 과정 설명
- LLM 서빙 엔진 구축 시 vLLM과 결합하여 엔드투엔드 지원 가능
- 커널 퓨전, 스케줄 열거 등 최적화를 위한 자체 IR 도입
- Tensor Core 및 TMA 같은 최신 GPU 기능을 활용한 고성능 커널 생성
https://preview.redd.it/3ekngxk224vh1.png?width=1080&format=png&auto=webp&s=9bfe5c92033e17d5b2fb4529f1320c99455a138b 저는 GPU 컴파일러를 구축하고 이에 대한 기사를 작성했습니다. 이 기사는 T VM, Modular, PyTorch Inductor와 같은 최신 컴파일러들이 공유하는 개념에 초점을 맞추고 있습니다. 이 컴파일러는 vLLM과 함께 작동하여 완전한 엔드투엔드 모델 서빙을 지원하므로, LLM 서빙 엔진 구축에 관심이 있다면 유용할 수 있습니다. 본 기사는 CUDA 커널 생성을 일련의 패스로 나누어 보여주며, 일반적인 연산(RMSNorm, Matmul, Attention)이 어떻게 점진적으로 낮춰져 (lowered) CUDA 커널을 생성하는지 보여줍니다. 각 패스는 커널 퓨전이나 스케줄 열거와 같은 특정 작업을 위해 최적화된 자체 IR을 도입합니다. https://preview.redd.it/tm16quo324vh1.png?width=1080&format=png&auto=webp&s=4435d5b7f7aacd90de2841731597ae77f2ecbca7 각 예제는 재현 가능하므로, PyTorch 코드를 작성하고 특정 IR 레벨에서 코드를 생성할 수 있어 흐름을 이해하기 쉽습니다. % emmy compile -c 'nn.Linear(3, 2, bias=False)(torch.randn(4, 3))' --ir loop for a0 in 0..4 for a1 in 0..2 for a2 in 0..3 in0 = load input[a0, a2] in1 = load linear_wt[a2, a1] v0 = multiply(in0, in1) acc0 <- add(acc0, v0) linear[a0, a1] = acc0
벤치마크된 워크로드에서 많은 부분이 Torch Inductor와 cuBLAS보다 성능이 우수합니다. 생성된 커널은 tensor core 및 TMA와 같은 최신 기능을 사용합니다. https://preview.redd.it/jmbmyc1624vh1.png?width=1080&format=png&auto=webp&s=6ed1559514475626d9265725a01b0ec47c4d8d9a 이 분야는 매우 역동적이며 경쟁하는 접근 방식이 많아
AI 자동 생성 콘텐츠
본 콘텐츠는 Reddit AI Engineering의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기