본문으로 건너뛰기

[vllm] AMD RDNA3 (gfx1100)를 위한 vLLM의 W4A16 GPTQ 커널 최적화 심층 분석

PR 링크: vllm-project/vllm#41394 상태: Merged | 변경: +3846 / -0

들어가며

최근 대규모 언어 모델(LLM)은 bf16 데이터 타입으로 학습 및 배포되는 경향이 강합니다. 이는 fp16보다 넓은 동적 범위를 제공하여 수치적 안정성을 높이기 위함입니다. 하지만 AMD RDNA3 아키텍처(RX 7900 XTX 등 gfx1100 계열)에서는 bf16 모델의 4-bit Weight, 16-bit Activation (W4A16) 양자화 추론에 심각한 성능 병목이 존재했습니다.

기존 옵션은 다음과 같았습니다:

  • ExLlama: fp16 전용으로 빠르지만, bf16 모델을 fp16으로 캐스팅하면 수치적 불안정성(inf/NaN 전파, 출력 품질 저하)이 발생했습니다.
  • Triton W4A16 커널: bf16을 지원했지만, ExLlama fp16 대비 약 3배 느린 82 tk/s 수준으로 실용성이 떨어졌습니다.

이러한 "빠르지만 수치적으로 부정확"하거나 "정확하지만 사용 불가능할 정도로 느린" 트레이드오프는 RDNA3 사용자들에게 큰 걸림돌이었습니다. 이 PR은 이러한 문제를 해결하기 위해 AMD RDNA3에 최적화된 네이티브 HIP W4A16 커널을 도입하여, bf16 모델의 수치적 안정성을 유지하면서도 압도적인 성능 향상을 달성했습니다.

핵심 코드 분석

이 PR은 vLLMROCm 백엔드에 RDNA3W4A16LinearKernel이라는 새로운 커널을 추가하고, gfx1100 아키텍처에 특화된 최적화를 적용합니다. 주요 변경 사항과 그 의미를 살펴보겠습니다.

1. CMakeLists.txt 및 조건부 컴파일

CMakeLists.txt 파일은 gfx1100 아키텍처를 대상으로 할 때만 새로운 HIP 커널 소스 파일을 빌드하도록 설정합니다. 이는 특정 하드웨어에 대한 최적화 코드가 다른 아키텍처에서 불필요하게 컴파일되거나 문제를 일으키는 것을 방지합니다.

Before:

--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1284,6 +1284,14 @@ if(VLLM_GPU_LANG STREQUAL 

## 참고 자료
- https://pytorch.org/docs/stable/generated/torch.compile.html
- https://docs.amd.com/bundle/HIP-Programming-Guide-v5.4/page/HIP_Programming_Guide.html

> ⚠️ **알림:** 이 분석은 AI가 실제 코드 diff를 기반으로 작성했습니다.

댓글

관련 포스트

PR Analysis 의 다른글