TL;DR
장문·에이전트형 워크로드에서 어텐션이 추론 비용을 지배하게 되면서 모델 설계가 GPU 성능을 결정하는 핵심 요소가 되었다. 프리필은 전체 입력에 대해 큰 매트멀이 생겨 계산 바운드가 되고, 디코드는 토큰별로 KV 캐시를 HBM에서 읽어오는 메모리 바운드가 되므로 두 단계는 서로 다른 최적화 레버를 요구한다. FlashAttention은 Q/K/V 타일 스트리밍과 BMM1→온라인 소프트맥스→BMM2 결합으로 메모리 이동을 줄이고, 분석은 G(그룹 크기)를 키워 디코드 산술 집약도를 약 2×G로 올리는 것이 디코드 효율을 크게 개선한다고 보여준다. 따라서 실무 권장은 디코드용으로 G를 크게 하고 Hsz를 128 또는 256으로 맞추며 KV 상태를 압축·희소화하고 병렬화 전략을 KH 기준으로 설계하라는 것이다.
빠른 이해
새로운 점
어텐션 설계를 GPU 실행 특성에 맞춰 G, Hsz, KV 관리, 그리고 KH 기반 병렬 전략으로 정렬하는 실무형 코디자인 체크리스트를 제시한 점.
핵심 메커니즘
프리필은 GEMM‑M=ISL×G로 큰 매트멀이 계산을 지배하고, 디코드는 GEMM‑M=G로 KV를 HBM에서 스트리밍하는 메모리 비용이 지배적이며 FlashAttention의 BMM1→온라인 소프트맥스→BMM2 결합과 G 증가가 디코드의 산술 집약도를 약 2×G로 끌어올려 토큰당 KV 로드를 줄인다.
핵심 수치
- 어텐션 비용 비중: 4K → 128K: 18% → 85%- Figure 1의 DeepSeek‑R1 프리필 시간 분해에 기초
- 디코드 스케일링(그룹 크기): 런타임 약 2× 개선 per G 두 배- Figure 4과 산술 집약도 수식(Equations 5–7) 근거
- 프리필 스케일: 프리필 런타임 O(ISL²)- 모든 토큰이 서로를 참조하는 연산량 때문에 이차 스케일이 발생
섹션별 상세
어텐션 비용의 증가 문제
- Figure 1에서 DeepSeek‑R1의 프리필에서 컨텍스트가 4K에서 128K로 늘어나면 어텐션이 차지하는 비중이 18%에서 85%로 증가한다. — Figure 1(프리필 시간 분해) 참조.
프리필과 디코드의 차이
- 산술 집약도는 총 FLOPs를 총 바이트로 나눈 값이며, 프리필은 ridge 위의 계산 바운드이고 디코드는 ridge 아래의 메모리 바운드이다. — Equation 1 및 Figure 2(roofline 모델) 참조.
FlashAttention과 GEMM 모양
- FlashAttention은 Q/K/V 타일을 스트리밍해 BMM1→온라인 소프트맥스→BMM2를 한 번에 수행함으로써 전체 어텐션 행렬을 재구성하지 않고 메모리 접근을 줄인다. — FlashAttention 커널 도식과 BMM 단계 설명(본문 및 Figure 3) 참조.
그룹 크기(G)의 영향
- 디코드에서 G(그룹 크기)를 두 배로 하면 런타임이 대략 2배 개선되는 경향이 관측되며, 산술 집약도는 약 2×G에 비례한다. — Equations 5–7 및 Figure 4의 실측 결과 참조.
헤드 차원(Hsz)의 트레이드오프
시퀀스 길이(ISL/KVSL)의 스케일
병렬화 전략과 KV 헤드 수(KH)
- 텐서 병렬화는 TP > KH이면 KV 캐시의 중복 복사를 초래하므로, 효율적 확장을 위해서는 TP ≤ KH를 유지해야 한다. — 섹션의 병렬화 설명 및 Figure 7(샤딩 전략) 참조.
실무용 권장 체크리스트
용어 해설
- 산술 집약도(Arithmetic Intensity)
- — 산술 집약도는 GPU 작업이 얼마나 계산 중심인지 결정하는 지표로 FLOPs(연산량)를 메모리에서 읽는 바이트 수로 나눈 값이다. 이 값이 낮으면 메모리 대역폭에, 높으면 연산 유닛에 병목이 생기며 본문은 이를 통해 프리필(계산 바운드)과 디코드(메모리 바운드)를 구분한다. 수식은 총 FLOPs를 총 바이트로 나눈 형태로 표현되며, ridge point가 경계 역할을 한다.
- FlashAttention
- — FlashAttention은 전체 어텐션 행렬을 메모리에 올리지 않고 Q/K/V 타일을 스트리밍해 BMM1→온라인 소프트맥스→BMM2를 한 번의 패스로 결합하는 커널 설계이다. BMM은 Tensor Core에서 실행되고 소프트맥스는 특수 연산 유닛에서 처리되어 메모리 이동을 줄이면서 계산을 병렬화한다. 이 구조가 GEMM 모양과 arithmetic intensity 분석의 근거가 된다.
- 그룹 크기(G)(Group Size (G))
- — 그룹 크기 G는 하나의 KV head를 공유하는 query head 수로 MHA는 G=1, GQA는 G=4,8,16 등이며 MQA는 G=QH이다. 디코드 단계에서 GEMM-M이 G가 되어 G가 커질수록 토큰당 로드되는 KV 데이터가 줄고 연산 이용률이 개선되어 디코드의 산술 집약도가 약 2×G로 증가한다. 반면 프리필은 ISL에 지배되어 G에 둔감하다.
- KV 캐시(KV cache)
- — KV 캐시는 디코드 중에 각 토큰의 키와 값을 저장한 상태로, 디코드 단계에서 HBM에서 읽어오는 대상이 된다. KVSL로 표현되는 KV 캐시 길이에 따라 디코드의 메모리 트래픽이 선형으로 증가하며, 압축·희소화·슬라이딩 윈도 기법으로 유효 KV 상태를 줄이면 디코드 비용을 낮출 수 있다.
- 텐서 병렬화(TP)(Tensor Parallelism (TP))
- — 텐서 병렬화는 어텐션 헤드를 GPU들에 샤드해 각 장치가 QH/TP 쿼리 헤드와 KH/TP KV 헤드를 소유하게 하는 방식이다. 중요한 한계는 TP가 KV 헤드 수(KH)를 초과하면 동일한 KV head가 복제되어 메모리·대역폭 오버헤드가 발생한다는 점이며 따라서 TP ≤ KH를 권장한다.
기술
- FlashAttention
- FP8
- Tensor Cores
- HBM
- TensorRT-LLM
- Speculative decoding
언급된 리소스
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.


