본문으로 건너뛰기

© 2026 Molayo

Reddit요약2026. 05. 25. 09:22

hipEngine: RDNA3(Strix Halo, 7900 XTX)를 위한 빠른 네이티브 Qwen 3.6 추론

요약

RDNA3 아키텍처(7900 XTX 등)를 위해 최적화된 새로운 오픈 소스 ROCm 네이티브 LLM 추론 엔진인 hipEngine을 소개합니다. HIP/C++ 기반의 핫 패스와 AMD 네이티브 라이브러리를 활용하여 Qwen 3.6 모델에서 llama.cpp를 상회하는 프리필 성능을 보여줍니다.

핵심 포인트

  • AMD RDNA3 GPU를 위한 고성능 ROCm 네이티브 추론 엔진
  • PyTorch 의존성 없이 HIP/C++ 및 AMD 라이브러리 활용
  • Qwen 3.6 모델에서 llama.cpp 대비 우수한 프리필 성능 기록
  • INT8 KVCache 지원으로 256K 컨텍스트를 24GB 미만 메모리에서 실행 가능

FastDMS를 마친 후 몇 주 전, Qwen 3.6 MoE를 얼마나 빠르게 실행할 수 있는지 확인하기 위해 다시 RDNA3 커널(kernel) 작성을 시도해 보았습니다. 결과가 꽤 좋았기에, 지난 몇 주 동안 이러한 실험들을 새로운 오픈 소스 (AGPLv3) ROCm 네이티브 로컬 LLM 추론 엔진인 hipEngine으로 발전시켰습니다.

이 엔진은 Python 기반이지만, 무거운 PyTorch 의존성이 없습니다. 모든 핫 패스(hot-path)는 HIP/C++로 작성되었으며, hipBLASLt, hipGraph, AOTriton 등 AMD 네이티브 라이브러리(libs)를 아낌없이 사용합니다.

gfx1100 (Radeon RX 7900 XTX / Radeon Pro W7900)

초기 구현 버전에서 Qwen 3.6 (MoE 및 dense)은 llama.cpp와 경쟁할 만한 성능을 보여줍니다. 특히 (제가 ROCm 호환성을 위해 포팅하기도 한) ParoQuant 4.68bpw는 gfx1100 (W7900/7900 XTX) 환경의 512~128K 모든 테스트된 컨텍스트 길이(context length)에서 c=1 프리필(prefill, "프롬프트 처리") 성능이 더 뛰어났습니다.

Prefill tok/s

워크로드 (Workload)hipEngine PAROhipEngine GGUF Q4_K_Sllama.cpp HIPllama.cpp Vulkan
512/1282718.4972258.8472436.0491816.927
...

Decode tok/s

워크로드 (Workload)hipEngine PAROhipEngine GGUF Q4_K_Sllama.cpp HIPllama.cpp Vulkan
512/128103.460109.15285.487127.515
...

Peak GiB

워크로드 (Workload)hipEngine PAROhipEngine GGUF Q4_K_Sllama.cpp HIPllama.cpp Vulkan
512/12820.96225.10821.12520.844
...

또한 128K에서 가장 낮은 피크 메모리(peak memory) 사용량을 기록했습니다. hipEngine은 또한 (속도 저하가 거의 없는) 손실이 거의 없는 INT8 KVCache를 지원하므로, RDNA3에서 좋은 성능으로 Qwen 3.6의 전체 256K 컨텍스트 창(context window)을 24GB 미만(예: 전용 7900 XTX 사용 시)에서 실행할 수 있습니다.

모델컨텍스트 (Context)KV 캐시 (KV cache)샘플링 피크 (Sampled peak)할당 피크 (Allocator peak)유지된 KV (Retained KV)프리필 (Prefill)디코드 (Decode)
Qwen3.6 35B-A3B PARO128KBF1621.04 GiB21.88 GiB2.69 GiB1091.9 tok/s62.2 tok/s
...

gfx1151 (AMD Ryzen AI MAX+ 395 / Radeon 8060S)

현재 커널 (kernel) 작업을 위해 집중적으로 사용할 수 있는 Strix Halo 전용 머신은 없지만, 최소한의 타겟 최적화 (targeted optimization)만으로도 gfx1151에서 이미 상당히 빠르다는 점을 기쁘게 말씀드립니다.

프리필 (Prefill) tok/s

워크로드 (Workload)hipEngine PAROllama.cpp HIPllama.cpp Vulkan
512/128983.2061058.738638.008
...

디코드 (Decode) tok/s

워크로드 (Workload)hipEngine PAROllama.cpp HIPllama.cpp Vulkan
512/12862.06050.53757.615
...

GGUF

gfx1100 테이블에서 눈치채셨을 수도 있는 점은, hipEngine이 이제 GGUF에 대한 초기 지원을 또한 시작했다는 것입니다. 이는 추가하기 쉬울 것이라고 생각했던 부분이었으나 (실제로는 예상보다 며칠이 더 걸렸고, 백그라운드에서 수십억 개의 에이전틱 코딩 (agentic coding) 토큰이 돌아가야 했습니다), Q4_K_M 및 Q4_K_S를 "충분히 괜찮은" 초기 상태로 구현해냈습니다. 속도 면에서는 ParoQuant 경로보다 약간 뒤처지지만, 향후 호환성을 열어주며 별도의 커스텀 학습 (custom training)이 필요하지 않다는 장점이 있습니다 (ParoQuant 모델은 양자화 (quant)하는 데 며칠이 걸릴 수 있습니다).

구현 노트 (Implementation Notes)

hipEngine은 주로 재미있는 사이드퀘스트/실험으로서 패키징되었지만, DS4에서 영감을 받아 모든 RDNA3 사용자들과 패키징하여 공유할 만큼 충분히 유용해 보입니다. 이 프로젝트는 다양한 모델 아키텍처(다음으로는 아마도 Gemma 4 또는 StepFun 3.5가 될 수 있습니다)와 다양한 하드웨어로의 확장이 가능하도록 설계되었습니다.

관심 있는 분들을 위해 리포지토리(repo)에 일부 docs/를 공유해 두었습니다:

  • KERNELS.md - 정확성을 위해 융합(fused) 및 비융합(unfused) 커널(그리고 CPU-참조 오라클(CPU-reference oracle))을 모두 포함한 100개 이상의 커스텀 커널(custom kernels) 목록입니다.
  • ROOFLINE.mdROOFLINE-gfx1151.md - AMD GPU 전문가들을 위한 자료로, 이론적인 성능 잠재력이 매우 크기 때문에 제가 이 길을 선택하게 된 이유 중 일부입니다. 커널 실행(kernel launches)을 줄이고 수많은 반복 과정을 거쳤음에도 불구하고 다음과 같은 결과가 나타났습니다.
  • LESSONS-LEARNED.md - 최적화 과정에서 무엇이 작동했고 무엇이 작동하지 않았는지에 대한 몇 가지 기록입니다.

관심이나 직감이 있는 분이라면 직접 살펴보거나, 문서를 검토하거나, 자신만의 코드/최적화를 생성해 보는 등의 활동을 해보시길 권장합니다. 다만, 특히 hipEngine 코드베이스와 관련하여 몇 가지 주의 사항이 있습니다: hipEngine은 AGPLv3 라이선스를 따르며, 이는 강력한 카피레프트(copy-left) 라이선스입니다. 누구나 원하는 대로 자유롭게 사용하고 수정할 수 있지만, 이를 재배포할 경우 반드시 동일한 조건으로 공유해야 합니다.

또한, 이 포스트는 전부 텍스트 박스에 직접 타이핑하여 작성되었지만, 커널 최적화는 수백(혹은 수천?) 번의 AI 보조 생성(AI-assisted generation) 결과물이며, 엄격한 반(反) AI 정책을 가진 코드베이스에서 사용하거나 채택하기에는 적합하지 않습니다.

참고: 이 코드는 매우 초기 단계의 코드입니다. 모든 수치는 매우 신중하게 테스트되었고 모델 추론도 저에게는 잘 작동하지만, 만약 이를 설치하려고 시도하는 과정에서 HIP/ROCm 관련 문제에 직면한다면 AI 에이전트의 도움을 받는 것이 좋을 것입니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 Reddit AI Engineering의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0