KV Caching

2025. 8. 31. 21:28·Artificial Intelligence/Basic

이 글을 통해 많은 사람이 KV Caching을 쉽게 이해할 수 있기를 바란다.

 

Transformer(Q, K, D)

https://www.researchgate.net/figure/Diagram-of-the-query-key-value-and-self-attention-mechanism-The-input-vectors-x-is_fig4_391696986

아래와 같은점만 명심하고 넘어가자.

  • $Q, K ,D$에 곱해지는 입력 $X$ 값은 실제로 모두 같은 값이다.
  • $W^Q, W^K, W^V$의 초기값은 '랜덤' 값이다. 특정한 의미를 가지고 있지 않다.(다만 학습을 통해 점점 업데이트됨.)
  • $Q$ 와 $K^T$를 통해 유사도를 계산.(Q: 내가 찾는 정보, K: 제공할 수 있는 정보 = 즉 둘간의 매칭정보)
  • $\sqrt{d_k}$로 값이 너무 커지는것을 방지
  • $softmax$로 각 토큰에 대한 가중치를 확률분포로 변환.
  • $V$와 곱셈하여 최종 출력 생성.(V: 그래서 뭘 전달할건데? 전달할 실제 정보)
  • $Z$는 문맥정보가 통합된 최종 출력 벡터값

외에도 Transformer 에는 여러가지 레이어들이 같이 들어있기에 엄밀히 말해 위 Attention 구조만으로 Transformer를 모두 설명한다고 볼 수는 없다. 하지만 KV Caching에 대해 이해하기 위해선 위 부분만이 필수적이다.

 

Transformer의 문제점

Transformer를 기반으로 하는 모델들은 텍스트를 생성할 때 이전 토큰을 모두 검토하여 다음 토큰을 예측한다. 때문에 '이미 알고 있는' 값을 다시 계산하기 위해서 동일한 계산을 반복적으로 수행하게 되고, 이것은 곧 엄청난 리소스 낭비로 직결된다.

위 동영상에서 '!' 라는 값을 출력하기 위해선, Hello의 $Z$값이 필요하기에, 이를 다시 계산 하는 모습을 확인할 수 있다. 하지만 이는 이미 계산해 뒀던 값이고, 저 Hello의 $Z$ 값은 변하지 않는다. 그럼에도 저장해둔 값이 없으니(KV Cache) 이를 다시 계산해야 하는 것이다.(간혹 VRAM이 아니라 DRAM을 사용해도 되지 않냐는 의견이 있지만... 이건 컴퓨터 공학을 너무 모르고 하는 소리다.)

때문에 시간 복잡도를 $O(n^2)$에서 $O(n)$으로 감소 수준으로 감소시킬 수 있다.

 

Deepseek 의 KV Caching 은 뭐가 다른가?

이전 Deepseek 논문 리뷰를 참조하면 좋다.

 
저작자표시 비영리 동일조건 (새창열림)

'Artificial Intelligence > Basic' 카테고리의 다른 글

Transformer 의 CrossAttention 차이점  (0) 2024.04.23
행렬 기초  (0) 2024.04.17
모델 훈련시 Epoch 와 Steps 의 차이  (0) 2024.03.05
batch_size 란?  (0) 2024.03.05
인공지능에서 Parameter 란?  (0) 2024.01.27
'Artificial Intelligence/Basic' 카테고리의 다른 글
  • Transformer 의 CrossAttention 차이점
  • 행렬 기초
  • 모델 훈련시 Epoch 와 Steps 의 차이
  • batch_size 란?
Cyp
Cyp
  • Cyp
    Cyp Software Blog
    Cyp
  • 전체
    오늘
    어제
    • Cyp Blog (166)
      • Artificial Intelligence (43)
        • Article Review (22)
        • Post (3)
        • Basic (15)
        • Preferences (3)
      • Cyber Security (1)
      • Programming (46)
        • C++ (21)
        • C# (19)
        • Python (2)
        • Rust (0)
        • Java (1)
      • Algorithm (17)
        • BACKJOON (15)
      • Operating System (14)
        • WSL (2)
        • Windows (1)
        • Linux (5)
        • Security (3)
      • Tools (26)
        • Docker (3)
        • DataBase (2)
        • SSH (1)
        • Doxygen (2)
        • Etc (17)
      • Miscellaneous (14)
        • Book (2)
        • Hardware (2)
        • Hevel (1)
  • 블로그 메뉴

    • Home
    • Guest Book
  • 공지사항

    • 블로그 업데이트 노트
    • 블로그 운영방침
  • 인기 글

  • 최근 글

  • 최근 댓글

  • 태그

    y-cruncher
    UTF-8 without BOM
    C4819
    utf-8 bom
    Bom
  • hELLO· Designed By정상우.v4.10.5
Cyp
KV Caching
상단으로

티스토리툴바