llama.cpp FP8 KV 캐시 병합: 스케일 처리와 지원 범위 확인하기
llama.cpp가 OCP-FP8 KV 캐시 지원을 master에 병합했다. 스케일 변환 검사와 일부 모델·백엔드의 지원 조건을 공식 코드로 확인한다.

llama.cpp가 OCP-FP8 기반 KV 캐시 지원을 master에 병합했다. PR #28392의 병합 시각은 2026년 11월 10일 16:08:33 UTC, 한국 시각으로는 11월 11일 01:08:33이다. AI Weekly의 11월 11일 브리핑에서 발견했으며 공식 저장소의 PR 상태와 변경 코드를 대조했다.
llama.cpp는 선택적인 텐서별 고정 스케일을 실행 시점에 적용한다. 작성자는 변환과 로딩, 문맥 이동을 다루는 테스트도 추가했다. 지원 추가 사실과 실제 장비에서 속도·품질을 평가하는 일은 구분해서 읽어야 한다. 공식 PR
스케일을 읽고 적용하는 경로
작성자는 스케일을 곱하는 연산을 그래프에 두었다. ggml_flash_attn_ext 자체를 수정하는 방식은 쓰지 않았다. PR 설명에 따르면 이 구조는 Flash Attention과 일반 attention 경로가 FP8 로직을 공유하기 쉽게 하려는 선택이다.
변환 코드는 모델의 .k_scale과 .v_scale을 찾아 GGUF에 옮긴다. BF16 또는 FP32 스칼라를 받아 값이 유한하고 0이 아닌지 확인한다. 따라서 스케일을 포함한 체크포인트를 다룰 때는 변환 과정에서 이 정보가 보존되는지도 확인해야 한다. 변경 코드
테스트가 확인하는 범위
새 Python 테스트는 합성 텐서로 스케일의 이름 매핑과 저장·읽기를 검사한다. 파일 안내에는 GPU와 모델 다운로드가 필요 없다고 명시돼 있다. 이것은 변환 경로의 검사이며 특정 GPU에서 추론 속도나 한국어 응답 품질을 측정한 결과로 읽을 수는 없다. 스케일 테스트
지원 범위에도 조건이 있다. 변경 코드에는 KV 캐시를 직접 소비하는 일부 모델 구조에서 FP8 캐시 생성을 거부하는 분기가 있다. OpenVINO CI에서는 test-fp8-kv를 제외한다. 테스트 제외 자체가 모든 OpenVINO 실행의 실패를 입증하지는 않지만 모든 백엔드의 지원을 보장하는 근거도 아니다.
도입 전에 비교할 항목
이 변경을 적용할 개발자는 우선 자신의 빌드에 병합 커밋 202c1a229f5a83d1c9d758ed0f2d43760fa4bab0이 포함됐는지 확인하는 편이 좋다. master 병합과 설치 패키지 반영은 서로 다른 상태다. 이 글에서는 배포 패키지별 포함 여부를 확인하지 않았다.
실제 도입 판단에는 같은 모델·문맥 길이·장비에서 기존 설정과 비교한 측정이 필요하다. 캐시 메모리 사용량과 처리 속도, 출력 품질을 함께 기록하면 된다. 여기서는 해당 벤치마크를 실행하지 않았으므로 메모리 절감률이나 속도 향상률을 제시하지 않는다. 확인한 변화는 FP8 캐시와 스케일을 처리하는 코드 및 테스트가 master에 들어갔다는 사실이다.



Discussion
No comments yet