AI Engineering••EN

LLM 추론 최적�� Part 3 — Sparse Attention 실전

Sliding Window, Sink Attention, DeepSeek DSA, IndexCache, Nvidia DMS. 동적 토큰 선별부터 Needle-in-Haystack 평가까지.

LLM 추론 최적�� Part 3 — Sparse Attention 실전

LLM 추론 최적화 Part 3 — Sparse Attention 실전

Part 2에서 KV Cache 양자화, 압축, PagedAttention을 다뤘습니다. 이 기법들은 저장된 데이터를 줄이는 접근입니다. Part 3에서는 방향을 바꿔서 계산 자체를 줄이는 Sparse Attention을 다룹니다.

핵심 질문: "모든 토큰이 정말 필요한가?"

대부분의 경우, 답은 "아니오"입니다. 128K 컨텍스트에서 현재 토큰이 실제로 참조해야 하는 토큰은 전체의 5~20%에 불과합니다.

Full Attention의 문제

🔐

구독 회원 전용 글입니다

구독하면 모든 프리미엄 시리즈와 Jupyter 노트북이 열립니다.

결제하려면 무료 계정이 필요합니다. 언제든 취소할 수 있습니다.

관련 포스트

KV 캐시 줄이는 12가지, A100 한 장에서 실측 — 1편: 12개를 한 줄로 세울 수 없습니다
Models & Algorithms

KV 캐시 줄이는 12가지, A100 한 장에서 실측 — 1편: 12개를 한 줄로 세울 수 없습니다

KV 캐시 기법 목록은 12개를 나란히 놓지만 각각이 얼마인지는 말하지 않습니다. A100 한 장에서 재보니 프리픽스 재사용은 공유 프리픽스 작업을 59.4초에서 6.2초로 줄였고, paged 블록 크기는 용량을 1%도 바꾸지 못했습니다. 둘을 한 줄로 세울 수 없는 이유는 지불 단위가 다르기 때문입니다.

llama.cpp KV 캐시 양자화: q8_0 처리량 손실이 9%에서 22%로 커지는 이유
Models & Algorithms

llama.cpp KV 캐시 양자화: q8_0 처리량 손실이 9%에서 22%로 커지는 이유

본류 llama.cpp, A100 한 장, Qwen3-8B Q4_K_M, llama-server 동시 슬롯 1~32. 32K 프롬프트에서 q8_0은 요청당 128토큰을 생성할 때 서버 처리량의 9%를 잃었고, 1,024토큰을 생성할 때는 22%를 잃었습니다. 짧은 쪽은 프리필이 벽시계를 지배하는데 프리필은 KV 타입을 타지 않기 때문입니다. 토큰당 디코드는 34% 느렸고 이는 llama-bench 결과와 일치합니다. 시작 직후 VRAM 사용량은 64K 슬롯 4개에서 41.0 GiB에서 25.1 GiB로 내려갔습니다.

llama.cpp KV 캐시 양자화, A100 한 장에서 실측 — q8_0은 4K에서 공짜이고 64K에서는 디코드 속도 절반을 냅니다
Models & Algorithms

llama.cpp KV 캐시 양자화, A100 한 장에서 실측 — q8_0은 4K에서 공짜이고 64K에서는 디코드 속도 절반을 냅니다

본류 llama.cpp, Qwen3-8B, A100 한 장. -ctk q8_0 -ctv q8_0은 퍼플렉시티가 f16과 같고 32K 캐시를 2.11 GiB 줄이지만, 64K 깊이 디코드는 f16의 55%로 떨어집니다(q4_0은 50%). q5_1과 K q8_0/V q4_0 혼합은 프리필이 초당 43·63토큰으로 조용히 CPU에서 돌았습니다.