여러분, vLLM 실행 시 AITER Unified Attention 지원 패치 필요
요약
작성자는 vLLM 환경에서 AITER Unified Attention을 지원하기 위한 패치 개발 및 테스트 과정을 공유하고 있습니다. 특히 R9700s와 MI300X 같은 최신 GPU 아키텍처에서 긴 컨텍스트 길이(64k 토큰 이상)를 처리할 때 발생하는 성능 저하 문제를 집중적으로 다루고 있습니다. AITER 지원을 위해서는 특정 환경 변수 설정과 함께, 하이브리드 아키텍처 모델 사용 시 발생할 수 있는 TILE_SIZE 불일치 같은 기술적 난제들을 해결해야 함을 강조합니다.
핵심 포인트
- vLLM에서 긴 컨텍스트 길이(64k 토큰) 처리 시 GPU 성능 저하 문제가 관찰됨.
- AMD MI300X와 R9700s 등 최신 아키텍처에서 AITER Unified Attention 활성화가 필수적임.
- AITER 지원 패치는 gfx1201 같은 신규 아키텍처를 지원하기 위해 게이트 제거 및 커널 추가 작업이 필요함.
- Qwen3.6과 같은 하이브리드 모델은 TILE_SIZE 불일치 문제로 인해 AITER Unified Attention 사용에 어려움을 겪을 수 있음.
- 현재까지의 테스트 결과, AITER는 FP16/BF16 KV Cache만 지원할 수 있다는 한계가 발견됨.
Threadripper Pro 기반의 4 x R9700 시스템을 가지고 있지만, vLLM 에서 GPU 성능에 항상 만족하지 못했습니다. 저는 새로운 모델을 시도할 때마다 llama-benchy 를 벤치마킹하여 모델의 크기 및 아키텍처가 제 시스템에서 어떻게 비교되는지 더 잘 이해할 수 있도록 했습니다. 테스트한 모든 모델에서 64k 토큰 컨텍스트 길이 주변에 한계에 부딪힙니다. TTFT, TG, PP 모두 긴 컨텍스트 길이에 대해 얼굴을 향해 떨어집니다.
그리고 지난 주말 RunPod 에서 MI300X 를 임대하여 AMD 가 CDNA 에서 이 문제를 해결했을 것이라고 생각했습니다. Qwen3.6-27B-FP8 로 vLLM 을 로드할 때, vLLM 이 AITER attention 백엔드 중 하나를 선택하지 않고 ROCm Attention 을 선택하는 것을 발견했는데, 이는 이상했지만 벤치마킹 실행을 계속했습니다. llama-benchy 실행 후 MI300X 가 제 R9700s 와 같이 긴 컨텍스트 길이에 동일한 문제를 가지고 있다는 것을 보았습니다. 64k 컨텍스트 이상에서 TG/s 는 자리수 이하로 떨어집니다. 이 제안은 AMD 를 위한 vLLM 실행을 위한 runbook 을 찾기 위해 검색하게 만들었고, AITER attention 메커니즘이 명시적으로 활성화해야 하는 env var 뒤에 가동된다는 것을 발견했습니다. 이 새로운 정보를 바탕으로 제 R9700s 와 gfx1201 지원 패치를 다시 시도하기 시작했습니다.
이미 제 R9700 에 FP8 지원을 가져오기 위해 AITER Triton 커널을 기반으로 구축한 vLLM 의 수정 버전을 가지고 있습니다. 처음 AITER 지원을 패치할 때 문제가 있었으므로, FP8 를 작동시키기 위해 모든 것을 비활성화하고 Triton 커널만 사용했습니다. AITER 와 vLLM 의 대부분의 패치는 gfx1201 을 차단하는 게이트를 제거하거나 MI350X (제 이해는 MI350X 와 RDNA4 는 FP8 을 동일한 또는 매우 유사한 방식으로 구현하여 일부 MI350X 커널을 RDNA4 에서 사용할 수 있습니다) 에 해당 아키텍처를 추가하는 것입니다. 모든 테스트는 Qwen3.6 27B 주변에서 수행되었으며, 이 모델이 가정에서 SOTA 성능에 거의 도달합니다. Qwen3.6 은 하이브리드 아키텍처이기 때문에 예상 TILE_SIZE 불일치로 인해 AITER Unified Attention 을 계속 충돌시켰습니다. AITER 는 kv block sizes 가 2 의 거듭제곱이어야 한다는 것과 관련된 것입니다.
지금까지 발견된 주요 단점은, 그것을 그렇게 부를 수 있다면, FP16/BF16 KV Cache 만 실행할 수 있다는 것입니다. Qwen3.6 가족은 이미 캐치 푸트프린트가 매우 작기 때문에 양자화할 필요가 없습니다. 하지만 시도해 보기로 결정했다면 주의해야 할 것입니다.
제 R9700s 와 임대한 MI300X 에서 Qwen3.6 의 벤치마크 실행 결과를 첨부했습니다. AITER Attention 을 테스트하기 위해 RunPod 에서 MI300X 를 다시 임대할 수 없었습니다. 지난 몇 일 동안 가용성이 없었습니다. 미리 aiter 벤치마크가 없다는 것을 사과합니다. 제가 문제 해결을 위해 이 벤치마크를 덮어썼습니다. Qwen3.6 35B 의 원래 벤치마크도 첨부했습니다. MTP 를 활성화하고 3 토큰으로 설정한 벤치마크도 첨부했습니다. 단일 컨커런시로 보아, 그것은 무료 성능입니다. 높은 컨텍스트에서 컨커런시 2 에서 TG 성능이 높은 컨텍스트 깊이에서 급격히 떨어집니다. llama-benchy 실행은 각 컨텍스트 깊이에 대해 TG128 과 PP2048 입니다.
이미지 링크가 제공되었으나, 이미지 자체가 텍스트로 변환되지 않았으므로 번역할 내용이 없습니다.
원문 (rawText) 을 번역해야 하지만, 사용자가 제공한 URL 은 이미지 파일 링크일 뿐, 실제 텍스트 내용은 포함되어 있지 않습니다. 따라서 번역 가능한 원문이 없으므로, 요청하신 규칙에 따라 JSON 형식으로 응답을 작성합니다.
(참고: 만약 이 이미지를 텍스트로 변환하여 제공받으셨다면, 해당 텍스트를 다시 입력해 주시면 즉시 번역해 드리겠습니다.)
AI 자동 생성 콘텐츠
본 콘텐츠는 Reddit AI Engineering의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기