vLLM AMD ROCm 어텐션 백엔드 최적화
vLLM은 AMD ROCm을 위한 일련의 최적화된 어텐션 백엔드를 구현했으며, 단순 포팅을 넘어 아키텍처 공동 설계를 진행했습니다. vLLM의 오케스트레이션 레이어와 AMD의 AITER 프리미티브를 결합함으로써, AMD Instinct MI300X, MI325X, MI355X GPU에서 멀티-헤드 어텐션(MHA) 및 멀티-헤드 잠재 어텐션(MLA) 워크로드에 대해 1.2‑4.4배 높은 처리량(TPS)을 달성했습니다.
혼합 추론 워크로드의 도전 과제
프로덕션 LLM 서빙은 프리필, 확장, 디코드 토큰을 동시에 처리하는 지속적인 배칭을 포함합니다. 각 단계는 고유한 성능 병목 현상을 가지고 있습니다:
- Prefill: 연산에 바인드된 단계; 새로운 프롬프트에 대해 큰 타일 크기와 최대 ALU 활용도가 필요합니다.
- Extend: 하이브리드 워크로드; KV 캐시가 부분적으로 구축된 요청에 대해 추가 프롬프트‑사이드 토큰을 처리합니다.
- Decode: 메모리 바인드된 단계; 토큰을 하나씩 생성하며, 연속된 메모리 접근과 최소한의 캐시 페치를 요구합니다.
하나의 단계에 최적화된 커널은 다른 단계에서 성능이 저하되는 경우가 많기 때문에, vLLM은 명시적인 라우팅을 사용해 각 요청 유형을 특화된 커널로 전달합니다.
ROCM_AITER_FA: MHA를 위한 삼중 경로 오케스트레이션
ROCM_AITER_FA는 CDNA 아키텍처에서 하드웨어 활용도를 극대화하기 위해 세 개의 특화된 경로로 요청을 라우팅하는 정교한 오케스트레이션 레이어입니다.
기술 혁신
- 삼중 경로 라우팅: 요청을 동적으로 Prefill(
flash_attn_varlen_func를 매트릭스 코어에 사용), Extend(100K+ 컨텍스트를 위한 청크 어텐션과 LSE 병합 사용), Decode(AI터의 고도로 최적화된 메모리 대역폭 커널 사용) 로 분류합니다. - 배치 재정렬: vLLM Model Runner는 요청을
[decode:extend:prefill]순서로 재정렬합니다. 이는 연속 메모리 접근을 보장하고 중복 KV 캐시 페치를 제거합니다. - 하드웨어 최적화 KV 캐시 레이아웃: 사전 셔플된 KV 캐시 레이아웃은 메모리 접근 패턴을 AMD CDNA 아키텍처와 정렬합니다. 이를 통해 디코드 경로가 레이아웃 변환 오버헤드 없이
pa_fwd_asm커널을 호출할 수 있어 디코드 처리량이 15‑20% 향상됩니다. - 청크 컨텍스트 처리: 긴 시퀀스를 고정된 반복당 토큰 예산(~32K 토큰)으로 처리하며, Log‑Sum‑Exp(LSE) 기반 병합을 사용해 수치적 안정성을 유지합니다.
MHA 백엔드 비교
ROCM_AITER_FA 외에도 vLLM은 다른 MHA 백엔드를 제공합니다:
- 통합 백엔드(
TRITON_ATTN,ROCM_AITER_UNIFIED_ATTN): 모든 토큰을 단일 커널 경로로 처리합니다. - 레거시 2‑Path(
ROCM_ATTN): 프리필(Triton)과 디코드(HIP 페이지드 어텐션)를 위한 별도 커널을 사용합니다. 이 백엔드는 Radeon GPU를 지원하지만, 지원되지 않는 KV 헤드 크기에 대해 느린 Triton 디코드 커널로 폴백될 수 있습니다.
AITER MLA 백엔드: DeepSeek에 최적화
멀티‑헤드 잠재 어텐션(MLA)은 DeepSeek 및 Kimi에서 사용되며 KV 캐시를 576 차원으로 압축해 성능 병목을 이동시킵니다. vLLM은 이 압축을 처리하기 위해 특화된 AITER 기반 MLA 백엔드를 제공합니다.
하이브리드 처리 전략
MLA 백엔드는 처리 단계에 따라 분할 전략을 사용합니다:
- Prefill/Extend (비흡수): 압축되지 않은 표현에 대해 표준 MHA 커널을 사용해 어텐션을 계산합니다.
- Decode (흡수): 압축된 576‑dim 잠재 공간에서 직접 작동하는 특화된 MLA 커널을 사용합니다.
어셈블리에서 얻은 성능 향상
ROCM_AITER_MLA와 ROCM_AITER_TRITON_MLA의 주요 성능 향상은 mla_decode_fwd 어셈블리 커널에서 비롯됩니다. 이 수작업 튜닝 커널은 HBM3 대역폭을 최대화하여 TRITON_MLA 기준 대비 Time Per Output Token(TPOT)을 1.2‑1.6배 빠르게 만듭니다.
성능 벤치마크
벤치마크는 ROCm 7.0.0 환경에서 Qwen3-235B(MHA)와 DeepSeek‑R1(MLA) 모델을 사용해 수행되었습니다.
MHA 결과 (Qwen3-235B)
ROCM_AITER_FA는 모든 테스트 하드웨어에서 출력 처리량(TPS) 면에서 레거시 백엔드보다 크게 앞섭니다:
| 하드웨어 | ROCM_AITER_FA | ROCM_AITER_UNIFIED_ATTN | TRITON_ATTN | ROCM_ATTN |
|---|---|---|---|---|
| MI300X (64 req) | 1.00x | 1.05x | 1.30x | 3.82x |
| MI325X (64 req) | 1.00x | 1.02x | 1.19x | 4.36x |
| MI355X (64 req) | 1.00x | 0.95x | 1.08x | 3.61x |
ROCM_AITER_FA는 이 모델에 대해 ROCM_ATTN 대비 2.7‑4.4배 높은 처리량을 달성합니다. 이는 ROCM_ATTN이 지원되지 않는 헤드 크기에 대해 Triton 디코드 커널로 폴백하기 때문입니다.
MLA 결과 (DeepSeek‑R1)
AITER MLA 백엔드는 TRITON_MLA 대비 최대 1.5배 높은 처리량을 제공합니다:
| 하드웨어 | ROCM_AITER_MLA | ROCM_AITER_TRITON_MLA | TRITON_MLA |
|---|---|---|---|
| MI300X (64 req) | 1.00x | 0.98x | 1.33x |
| MI325X (64 req) | 1.00x | 0.98x | 1.41x |
| MI355X (64 req) | 1.00x | 1.03x | 1.52x |
ROCM_AITER_MLA는 특히 MI355X에서 최고의 첫 토큰 도달 시간(TTFT)을 기록하므로 MLA 워크로드의 기본 옵션으로 권장됩니다.
구현 및 배포
최적화된 AITER 백엔드를 사용하려면 다음 환경 변수를 설정하십시오:
export VLLM_ROCM_USE_AITER=1
이 설정을 하면 vLLM은 MHA 모델(예: Llama, Qwen, Mistral)에는 자동으로 ROCM_AITER_FA를, MLA 모델(예: DeepSeek, Kimi)에는 ROCM_AITER_MLA를 선택합니다.
하드웨어 지원 매트릭스
| GPU | 메모리 | 아키텍처 |
|---|---|---|
| MI300X | 192GB HBM3 | gfx942 |
| MI325X | 256GB HBM3e | gfx942 |
| MI355X | 288GB HBM3e | gfx950 |