- KV 캐시는 LLM의 어텐션 계산에서 이미 생성된 Key(K)와 Value(V)를 저장하여 재활용하는 메커니즘입니다. 💾
- 어텐션은 Query(Q), Key(K), Value(V)로 구성되며, Q는 가중치 계산 주입, K는 가중치 계산 재료, V는 어텐션 출력 재료로 사용됩니다. 🧩
- Query는 시퀀스 내 샘플 간 의존성 없이 병렬적으로 처리되므로, 새로운 Query가 추가되어도 기존 Query의 어텐션 출력은 변하지 않습니다. ↔️
- KV 캐시가 없는 LLM은 매 토큰 생성 시 전체 시퀀스를 다시 계산하여 O(L²D)의 높은 계산 복잡도를 가지며, 이전 계산 결과는 버려져 비효율적입니다. 🐢
- KV 캐시는 첫 토큰 생성 시 K와 V 시퀀스를 저장하고, 이후 토큰 생성 시에는 새로운 Query만 계산한 후 저장된 K와 V를 재활용하여 중복 계산을 방지합니다. ♻️
- KV 캐시의 효율성은 Query의 병렬성, LLM 출력이 마지막 샘플만 활용하는 점, Key/Value가 전체 시퀀스를 필요로 하지만 이전 값을 재활용할 수 있다는 '삼위일체' 원리에 기반합니다. ✨
- KV 캐시를 사용하면 토큰당 계산 복잡도가 O(L²D)에서 O(LD)로 대폭 감소하여 LLM의 생성 속도를 혁신적으로 향상시킵니다. 🚀
- Claude, ChatGPT와 같은 LLM 기반 서비스들은 KV 캐시를 활용하여 사용자에게 빠른 응답을 제공합니다. 💬