한 번의 요청에서 모델이 현재까지 보고 있어야 하는 토큰 개수다.
토큰 수가 많아질수록, 각 토큰에 대한 Key/Value를 모두 저장해야 하므로 KV cache 메모리는 선형적으로 증가한다.
모델 내부의 Transformer 레이어 개수다.
각 레이어는 자기만의 KV cache를 가지므로, 레이어 수가 많을수록 저장해야 하는 KV의 총량도 비례해서 커진다.
각 레이어에서 Key/Value를 몇 개의 head 단위로 저장하는지를 의미한다.
KV head 수가 많을수록 토큰 하나당 저장해야 하는 Key/Value 벡터 개수가 많아지므로 메모리 사용량이 증가한다.
KV head 하나가 가지는 벡터 길이이다.
쉽게 말하면 head 하나에 저장되는 정보의 크기이며, 이 값이 클수록 각 head가 차지하는 메모리도 커진다.
KV cache는 이름 그대로 Key와 Value를 모두 저장한다.
따라서 한 토큰마다 K만 저장하는 것이 아니라 K와 V 두 종류의 벡터를 함께 보관해야 하므로 계산식에 2가 곱해진다.
저장되는 각 원소의 자료형이 FP16(16비트 부동소수점)이므로, 원소 하나당 2바이트가 필요하다.
만약 INT8이면 1바이트, INT4이면 0.5바이트로 계산할 수 있다.