콘텐츠로 이동

모델 메모리·KV 캐시·문맥 계산기

모델 파라미터와 KV 캐시는 서로 다른 방식으로 메모리를 사용한다. 가중치 용량은 파라미터 수와 저장 정밀도에 비례하고, KV 캐시는 레이어·배치·문맥 길이·KV 헤드·헤드 차원에 비례한다. 학습 모드에서는 그래디언트와 옵티마이저 상태도 추가된다.

모델과 실행 조건

파라미터 수는 십억 개(B) 단위로 입력한다. 같은 정밀도를 가중치와 KV 캐시에 적용한다.

7B GQA 모델의 예시 조건을 계산할 수 있다.

가중치 메모리는 파라미터 수 × 정밀도(bit) ÷ 8로 계산한다. KV 캐시는 디코더 자기어텐션에서 레이어마다 키와 값 벡터를 각각 하나씩 유지한다고 보고 다음 식을 사용한다.

2 × 레이어 수 × 배치 크기 × 문맥 길이 × KV 헤드 수 × 헤드 차원 × 원소 바이트

학습 상태는 Adam 계열 옵티마이저를 기준으로 파라미터당 FP32 그래디언트 4바이트와 1·2차 모멘트 8바이트를 사용한다고 가정한다. 선택한 가중치 정밀도가 32비트보다 낮으면 FP32 마스터 가중치 4바이트를 추가한다. 따라서 가중치와 별도로 학습 상태가 파라미터당 12바이트 또는 16바이트 필요하다고 근사한다.

선택한 정밀도는 가중치와 KV 캐시 원소에 동일하게 적용한다. 실제 런타임에서 가중치만 양자화하고 KV 캐시는 FP16/BF16으로 유지한다면 두 항목을 같은 정밀도로 계산해서는 안 된다. 이 경우 KV 캐시 조건에 맞춰 결과를 별도로 비교해야 한다.

학습 모드에서도 KV 캐시 항목은 입력한 구조를 독립적으로 비교하기 위해 총 추정치에 합산한다. 이는 표준 전체 시퀀스 학습의 활성값 메모리를 뜻하지 않으며, 학습 활성값과 중간 텐서는 아래 제외 항목에 남는다.

총 추정치는 가중치, 학습 상태와 KV 캐시처럼 입력만으로 계산 가능한 항목을 합친 최소 근사치다. 활성값과 역전파용 중간 텐서, 어텐션·행렬곱 커널 작업 공간, 프레임워크 오버헤드, 메모리 단편화, 양자화 그룹별 메타데이터와 텐서 병렬 통신 버퍼는 포함하지 않는다.

실제 장치 용량과 결과가 같다고 해서 실행 가능하다는 뜻은 아니다. 모델 구조, 런타임, 배치 스케줄러와 병렬화 방식에 따라 최고 메모리 사용량이 달라지므로 실제 측정과 별도 여유 용량이 필요하다.

학습 상태의 기본 구성은 Hugging Face Transformers GPU 메모리 사용 문서를 참고한다. KV 캐시는 AI Learning Wiki의 트랜스포머 구조 문서와 명시된 텐서 차원을 기준으로 계산한다. 계산 버전은 model-memory-v1이다.

입력과 결과는 브라우저 안에서만 처리하며 외부 서버로 전송하거나 저장하지 않는다. 공유 주소에는 모델 크기와 구조 수치만 포함된다.

모델 카드의 파라미터 수에는 임베딩 공유, 전문가 혼합 모델의 활성 파라미터, 비학습 버퍼 등이 서로 다르게 집계될 수 있다. KV 헤드 수와 헤드 차원은 쿼리 헤드 수나 은닉 차원과 같다고 가정하지 말고 실제 모델 설정에서 확인해야 한다. 이 도구의 결과는 장치 구매나 운영 용량 확정값이 아니라 구조 비교와 초기 계획을 위한 근사치다.