Inference/Optimization2 KV 캐시 란 KV 캐시, 컨텍스트가 길어지면 메모리가 왜 터지나요약KV 캐시는 자기회귀 생성에서 이전 토큰들의 Key와 Value를 저장해두고 재사용하는 기법입니다. 매 토큰마다 전체 시퀀스를 다시 계산하는 낭비를 없앱니다.두 얼굴이 있습니다. LLM 추론 속도의 토대이면서, 동시에 긴 컨텍스트에서 메모리 병목의 주범입니다.캐시 크기는 시퀀스 길이와 배치에 정비례합니다. 그래서 롱컨텍스트나 대량 동시요청에서는 KV 캐시가 모델 가중치보다 큰 메모리를 차지하기도 합니다.흔한 오해 하나. KV 캐시는 공짜 속도가 아니라 시간과 메모리의 트레이드오프입니다. 계산을 아끼는 대신 메모리를 많이 먹습니다.줄이는 방법은 넷입니다. K와 V를 헤드끼리 공유하거나(GQA, MQA), 저랭크로 압축하거나(MLA), 8비트나 4비트로 .. 2024. 7. 2. [Opt] prefill vs decode 프리필과 디코드, 왜 첫 글자는 빠른데 그 뒤가 느린가요약LLM 추론은 성격이 정반대인 두 단계로 나뉩니다. prefill은 프롬프트를 한 번에 병렬 처리해 KV 캐시를 채우고 첫 토큰까지 걸리는 시간(TTFT)을 결정합니다. decode는 토큰을 하나씩 순차 생성하며 초당 토큰 수(TPS)를 결정합니다.둘을 가르는 건 산술 강도(FLOPs/byte)입니다. prefill은 행렬끼리 곱해서 연산 한계에 걸리고, decode는 토큰 하나를 만들려고 전체 가중치를 읽어야 해서 메모리 대역폭 한계에 걸립니다.이 둘을 한 그림에 올린 게 루프라인 모델입니다.실용적인 소득이 하나 있습니다. "내 PC에서 이 모델이 몇 tok/s 나와야 정상인가"를 암산으로 검산할 수 있게 됩니다.흔한 오해. GPU FLOP/s를.. 2024. 3. 11. 이전 1 다음