Skip to main content
공개 노트

MoonMath HIP Attention Kernel이 보여준 AMD 튜닝의 방향

Views 2약 4분생성형 AI 활용
Summary

MoonMath HIP Attention Kernel이 보여준 AMD 튜닝의 방향

LLM 추론에서 attention은 성능 병목이 되기 쉽습니다. QKᵀ로 토큰 간 중요도를 계산하고, 그 결과로 V를 섞어 출력을 만드는 transformer의 핵심 연산이기 때문입니다. 특히 긴 컨텍스트를 다루면 연산 자체뿐 아니라 메모리 이동, 캐시 활용, 대기 시간 관리가 성능을 크게 좌우합니다.

MoonMath AI가 공개한 HIP attention 커널은 이 지점을 정면으로 겨냥합니다. 대상은 AMD CDNA3 기반 MI300X, 즉 LLVM 타깃 gfx942 GPU이며, bf16 forward attention 커널입니다.13 MoonMath AI의 GitHub에는 AMD Instinct용 수작업 튜닝 커널 저장소가 C++ 및 MIT 라이선스로 등록돼 있고, 해당 저장소는 2026년 6월 19일 업데이트된 것으로 표시됩니다.2

HIP으로 쓰되, 결정적인 명령은 직접 고른다

이 커널의 핵심은 “HIP으로 작성된 커널”이라는 점과 “중요한 명령은 개발자가 직접 지정한다”는 점이 함께 있다는 데 있습니다. MoonMath AI는 전체 커널을 GCN 어셈블리로 작성하지 않고, HIP 코드 안에서 one-instruction asm wrapper를 사용합니다.1

이는 실용적인 절충입니다. 커널 전체 구조는 C++/HIP로 유지해 작성과 검증 부담을 줄이고, 성능에 민감한 특정 GPU 명령만 명시적으로 고릅니다. 반대로 레지스터 배치처럼 오류 가능성이 높고 유지보수 비용이 큰 부분은 컴파일러에 맡깁니다.

이 접근이 중요한 이유는 명확합니다. AITER v3처럼 이미 강하게 튜닝된 기준선을 넘어서려면 컴파일러 자동 최적화만으로는 한계가 있을 수 있습니다. 그렇다고 전체를 어셈블리로 작성하면 개발 비용과 변경 비용이 급격히 커집니다. MoonMath 커널은 그 중간 지점에서 저수준 제어와 유지보수성을 함께 노립니다.

MI300X의 구조를 전제로 한 데이터 이동 설계

MI300X는 CDNA3 아키텍처의 gfx942 GPU로 분류됩니다.3 하드웨어 구성도 대규모 attention 최적화에 중요한 전제입니다. MI300X는 8개 XCD와 4개 IOD로 구성되며, 총 304개 활성 CU, 19,456개 스트림 프로세서, 1,216개 매트릭스 코어를 제공합니다.3 최대 엔진 클럭은 2,100MHz이고, CU당 LDS는 64KB, L1 데이터 캐시는 32KB, XCD당 L2 캐시는 4MB입니다.3

MoonMath 커널은 이런 구조를 의식해 설계된 것으로 보입니다. 저장소 설명에 따르면 8-wave warp-specialized CTA를 사용하고, K는 HBM에서 LDS로 스트리밍하며, V는 L1에서 바로 소비합니다.4 Q와 누산값은 레지스터에 둡니다.4

여기서 중요한 것은 단순히 “연산을 더 많이 한다”가 아닙니다. attention 성능은 자주 데이터가 어디에 머무는지, 언제 이동하는지, 어떤 메모리 계층을 거치는지에 의해 결정됩니다. K를 LDS로 가져오고, V를 L1에서 소비하며, Q와 누산값을 레지스터에 두는 방식은 메모리 이동과 대기 시간을 줄이려는 설계로 읽을 수 있습니다.

즉, 이 커널의 메시지는 “MI300X에서 빠른 attention은 하드웨어 구조를 전제로 다시 짜야 한다”에 가깝습니다.

성능 수치는 인상적이지만, 조건을 함께 봐야 한다

MoonMath AI의 공개 결과에 따르면 이 커널은 MI300X, bf16, head_dim 128 조건에서 AITER v3 대비 기하평균 기준 RTNE 1.18배, RTNA 1.15배, RTZ 1.08배 빠릅니다.4 또한 8K부터 128K까지의 sweep에서 모든 shape와 rounding mode에서 앞섰다고 보고했습니다.4

이 결과는 눈에 띄지만, 적용 범위도 같이 봐야 합니다. 현재 설명 기준으로 이 커널은 bf16 입출력, head_dim 128, MI300X/gfx942에 초점을 둡니다. causal mask, GQA, varlen batching은 지원하지 않습니다.4

따라서 이 커널을 범용 attention 대체재로 이해하기보다는, 특정 하드웨어와 특정 shape에서 성능을 극대화한 사례로 보는 편이 정확합니다. 다만 이런 사례는 실험에 그치지 않을 수 있습니다. vLLM에서 AITER가 ROCm용 fused kernel과 attention backend로 쓰이는 흐름을 보면, 하드웨어 특화 커널은 실제 서빙 스택의 선택지와도 연결될 수 있습니다.5

AMD GPU 최적화에서 배울 점

MoonMath HIP attention 커널이 보여주는 가치는 단순한 벤치마크 숫자에만 있지 않습니다. 더 중요한 점은 AMD GPU에서 LLM 추론 성능을 높이는 방식이 어디로 향하고 있는지를 보여준다는 것입니다.

프레임워크 설정이나 런타임 옵션만으로는 한계가 있습니다. MI300X 같은 가속기에서는 CU, LDS, L1/L2 캐시, wave 구성, 메모리 스트리밍 방식까지 고려한 커널 설계가 성능 차이를 만듭니다.

결론적으로 MoonMath AI의 커널은 “HIP으로도 충분히 저수준 최적화를 할 수 있는가”라는 질문에 대한 한 가지 실전 답변입니다. 전체 어셈블리로 내려가지 않으면서도, 중요한 명령과 데이터 이동 경로를 직접 통제하면 AMD Instinct 환경에서 의미 있는 성능 향상을 만들 수 있다는 점을 보여줍니다.

참고

1A Fast Attention Kernel for MI300X, Written in HIP, Not Assembly

2moonmath-ai repositories · GitHub

3AMD Instinct MI300 Series / MI350 Series workload optimization -- ROCm Documentation

4GitHub - moonmath-ai/amd-kernels: Hand-tuned kernels for AMD Instinct

5vLLM V1 performance optimization -- ROCm Documentation

이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.

틸노트는 사용자가 AI를 활용해 노트를 쉽게 작성하거나 편집할 수 있는 서비스입니다.

AI 스퀘어 단톡방에 함께해요

AI 활용과 틸노트 사용 팁을 나누는 오픈채팅방입니다. 입장 비밀번호는 tilnote입니다.

참여하기