카테고리 없음

Standard MHA에서 KV 캐시가 왜 “시퀀스 길이 × 히든 차원”이 되는지 250618

mezzanineX 2025. 6. 18. 06:32

Standard MHA에서 KV 캐시가 왜 “시퀀스 길이 × 히든 차원”이 되는지, 예시를 들어 차근차근 설명드리겠습니다.
1. KV 캐시란?
트랜스포머 디코더가 이전 토큰의 키(Key)·값(Value) 정보를 계속 활용하려면, 매 타임스텝마다 생성된 K와 V를 저장해 두어야 합니다. 이 저장소가 바로 “KV 캐시”입니다.
2. 왜 시퀀스 길이×히든 차원이 되는가?
• 디코더가 t번째 토큰을 처리할 때까지 저장된 키·값 쌍의 개수는 t개입니다. 즉, 최종적으로 시퀀스 전체 길이를 L이라 하면, L개의 키와 L개의 값이 캐시에 쌓이게 됩니다.
• 한 토큰당 키 벡터의 차원은 히든 차원(H), 값 벡터도 마찬가지로 H입니다.
• 따라서 키만 해도 “L (토큰 개수)” × “H (벡터 차원)”의 저장 공간이 필요하고, 값도 동일한 크기의 공간이 필요합니다.
• 보통 “KV 캐시 크기”라고 할 때는 키와 값을 합친 크기를 의미하기도 하지만, 편의상 “한쪽만 보아도 L × H”라고 간단히 표현합니다.
3. 숫자 예시
• 시퀀스 길이 L = 100 토큰
• 히든 차원 H = 512
이 경우
• 키 벡터 저장: 100 × 512 = 51,200개의 숫자(실수)
• 값 벡터 저장: 100 × 512 = 51,200개의 숫자
• 합치면 102,400개의 숫자를 메모리에 저장하게 됩니다.
4. 메모리 용량으로 환산
• 한 숫자(32비트 부동소수점) = 4바이트라 하면
• 키만: 51,200 × 4 B = 약 200 KB
• 값만: 약 200 KB
• 합계: 약 400 KB
• 이게 토큰 100개분이고, 시퀀스 길이가 늘어나면 선형적으로 메모리 부담이 커집니다.
5. 규모가 커지면?
• 예를 들어 L = 1,024, H = 2,048인 대형 모델이라면
• 키 저장: 1,024 × 2,048 = 2,097,152개 → 약 8 MB
• 값 저장도 동일 → 총 약 16 MB
• 이렇듯 시퀀스가 길어질수록, 또는 히든 차원이 커질수록 캐시 부담이 매우 커집니다.

이러한 이유로 Standard MHA는 시퀀스 길이와 히든 차원에 비례하는 큰 KV 캐시를 갖게 되고, 메모리·대역폭 부담이 큽니다.

반응형