본문으로 건너뛰기

© 2026 Molayo

r/LocalLLaMA분석2026. 06. 15. 04:01

InfiniteKV 오픈 소스 공개: 오래된 토큰을 삭제하는 대신 104바이트 검색 가능한 레코드로 RAM 또는 디스크에 저장하는 KV 캐시.

요약

InfiniteKV는 긴 컨텍스트 처리를 위해 KV 캐시를 압축하여 RAM이나 디스크에 저장하는 오픈 소스 기술입니다. 기존의 슬라이딩 윈도우 방식처럼 토큰을 삭제하는 대신, 104바이트의 검색 가능한 레코드로 압축하여 모델이 과거 정보를 정확히 참조할 수 있게 합니다.

핵심 포인트

  • KV 캐시를 104바이트 레코드로 압축하여 VRAM 사용량 획기적 절감
  • 오래된 토큰을 삭제하지 않고 검색 가능한 형태로 RAM/디스크에 저장
  • 학습 윈도우를 초과하는 긴 컨텍스트에서도 높은 정보 유지력 증명
  • 압축된 캐시를 활용한 수학적 추론 및 정확한 정보 인용 가능

쉽게 설명하자면 다음과 같습니다. 여러분의 GPU는 대화의 모든 토큰마다 두 개의 float 벡터를 유지합니다. 이것이 KV 캐시(KV cache)이며, 긴 컨텍스트(context)가 VRAM을 많이 잡아먹는 이유입니다. Llama-3.1-8B는 토큰당 약 0.12 MB가 필요하므로, 100k 토큰은 12 GB가 필요하고 100만 토큰은 122 GB가 필요합니다. 일반 소비자용 그래픽 카드는 이를 수용할 수 없으므로, 용량이 부족해지면 서빙(serving) 스택은 가장 오래된 토큰들을 조용히 삭제합니다. 모델이 "제공되지 않았습니다"라고 말한다면 그것은 거짓말이 아닙니다. 정말로 더 이상 그 정보를 가지고 있지 않은 것입니다.

InfiniteKV는 컴퓨터가 작동하는 방식처럼 메모리를 두 개로 나눕니다. 가장 최근의 256개 토큰은 핫 RAM(hot RAM)처럼 GPU 메모리에 정확하게 유지됩니다. 그보다 오래된 모든 토큰은 일반 RAM이나 하드 디스크의 일반 파일에 저장될 수 있는 104바이트 레코드로 압축됩니다. 이 레코드들은 검색이 가능합니다. 모델이 새로운 토큰을 생성할 때마다, 캐시는 가장 관련성이 높은 오래된 토큰들을 다시 불러오며, 모델은 이 토큰들과 최근 윈도우(window)를 함께 어텐션(attention)합니다. 아무것도 삭제되지 않습니다. 100만 토큰의 경우, float16 방식의 122 GB 대신 약 3 GB의 레코드만 필요하므로, 여러분이 이미 보유한 기기에서도 충분히 실행 가능할 만큼 작습니다.

증거 자료입니다. 아래의 모든 내용은 검증되었으며, 이를 생성한 코드는 리포지토리(repo)에 있습니다. 또한 모든 결과는 해시(hash)와 환경 지문(environment fingerprint)이 포함된 JSON 영수증 형태로 제공되므로, 사후에 수정되지 않았음을 확인할 수 있습니다. 동일한 명령어를 실행하여 비교해 보십시오.

• 학습 윈도우 초과: Mistral-7B(32,768 토큰으로 학습됨)가 76,747번째 토큰에서 숨겨진 패스키(passkey)에 답변했습니다. 프로덕션 스타일의 슬라이딩 윈도우(sliding-window) 서빙은 "텍스트에 제공되지 않았습니다"라고 답변했습니다. SmolLM2(8,192 토큰으로 학습됨)는 수정되지 않은 상태에서는 횡설수설을 출력한 반면, 12,048번째 토큰에서 답변했습니다.
• 최근 윈도우에 위치하지 않음: 키(key)는 윈도우에서 약 38,000 토큰 정도 떨어져 있었습니다. 콜드 리트리벌(cold retrieval)을 차단하면 동일한 컨텍스트에서 동일한 모델이 내용을 지어내기 시작합니다. 이를 복구하면 키가 다시 나타납니다. 이 절제 연구(ablation)는 테스트 스위트(test suite)에서 강력하게 확인됩니다.
• VRAM에 비밀리에 저장되지 않음: 아카이브 모드(Archive mode)는 콜드 레코드(cold records)를 디스크의 메모리 맵 파일(memory-mapped files)에 유지합니다.

파일 목록을 확인할 수 있습니다: 드라이브에는 640 MB의 파일이 있고, VRAM에는 11.5 MB의 시그니처(signatures)가 있습니다. 만약 float16을 사용했다면 461 MB가 필요했을 것입니다.
• 검색된 메모리에 대한 추론 (Reasoning over retrieved memory). 온도(temperature) 0에서의 대수학: x가 질문 2,700 토큰 전에 정의되었을 때, 모델은 수정되지 않은 모델과 동일하게 압축된 캐시(compressed cache)로부터 3x + 5 = 56을 계산합니다. 제가 가장 좋아하는 전사(transcript) 예시는 문장제 문제입니다: 수치들(하루 240자루, 수레당 16자루)이 3,000 토큰 뒤에 위치함에도 불구하고, 모델은 압축된 레코드에서 두 숫자를 토씨 하나 틀리지 않고 그대로 인용하여 15라는 결과값을 도출합니다. 저장소(repo)에 원문 그대로의 전사본이 포함되어 있습니다.
• 출력 품질 (Output quality). 수정되지 않은 모델과 비교한 전체 어휘 KL 발산(KL divergence): 중앙값은 약 0.002이며, 8k 컨텍스트(context)에서는 드리프트(drift)가 증가하는 것이 아니라 오히려 감소합니다. Top-1 일치도는 약 0.95입니다. 그리디 디코딩(Greedy decode)은 등가 게이트(equivalence gate) 내에서 토큰 단위로 일치합니다.
• 가중치 무결성 (Weights untouched). 활성화 전후의 모든 텐서(tensor)에 대해 SHA-256을 수행했습니다. 바이트 단위로 정확합니다.
왜 단 7개의 모델뿐인가요? 짧게 답변하자면: 예산 때문입니다. 제 장비는 16 GB RTX 3080을 탑재한 Dell Precision 노트북이므로, 이 장비에서 구동 가능한 모든 것을 인증했으며, 규모가 큰 두 모델은 RunPod 인스턴스를 대여하여 테스트했습니다. 6개의 인증된 모델과 월 테스트(wall test)용으로 사용하는 작은 모델 하나가 있습니다. 세상의 모든 LLM을 다 다루려다 압도당하는 대신, 몇 가지 모델에 대한 확실한 증거와 어디에서 취약한지에 대한 명확한 목록을 제공하는 쪽을 택했습니다. 또한, 저의 개인용 로컬 LLM도 현재 이 캐시를 사용하여 데일리 드라이버로 구동 중이며, 몇 주 안에 실제로 중요한 실사용 벤치마크(실제 몇 주간의 일반적인 사용 사례)를 게시할 예정입니다.
하나의 조절 노브 (One knob). top_k_cold는 생성된 토큰당 몇 개의 콜드 레코드(cold records)를 가져올지를 설정합니다. 이는 모델에 맞춰 자동 튜닝됩니다 (발표된 모든 수치는 32에서 64 사이의 설정값에서 측정되었습니다). 캐시는 사실(facts)이 아닌 토큰을 압축하며, 하나의 사실은 약 12개의 토큰으로 구성되므로 기본 바스켓(basket)은 하나의 사실을 여유롭게 담을 수 있습니다. 만약 문서가 사실, 계약서, 참조 문서, 또는 정의가 많은 코드와 같이 정보 밀도가 높다면, 값을 96으로 높이십시오. 약간의 속도 비용만으로 바스켓의 크기를 더 키울 수 있습니다.
클릭 한 번으로 체험해 보세요.

저장소 상단에 Colab 배지가 있습니다. 무료 T4를 사용하면 약 10분 정도 소요됩니다. 패스키 (passkey)를 숨긴 뒤 이를 검색하고, KL 발산 (KL divergence)을 눈앞에서 측정하며, 가중치 (weights)를 바이트 단위로 검증하고, 학습 윈도우 (training window)를 넘어선 디스크 파일로부터 답변을 생성하며, 메모리 비용을 출력합니다. 모든 트랜스크립트 (transcript)와 벤치마크 명령어를 포함한 나머지 모든 내용은 여기에 있습니다: <github.com/QLNI/InfiniteKV>

이것이 무엇이 아닌지에 대해서도 말씀드리겠습니다. 완벽하지 않으며, 아직 완벽해질 단계도 아닙니다. 저는 이 모델들이 한 번도 학습된 적 없는 작업을 수행하도록 붙이고 있습니다. 참조 구현 (reference implementation)은 순수 PyTorch로 작성되어 느립니다. 만약 해밍 스캔 (Hamming scan)을 위한 CUDA 또는 C++ 커널을 작성하신다면, 기쁘게 PR (Pull Request)을 받겠습니다. 슬라이딩 윈도우 (Sliding-window) 모델은 핫 티어 (hot tier)만 사용하며, MLA 모델은 제가 아직 구축하지 않은 변형된 방법이 필요합니다.

그리고 네, 이것을 만드는 동안 Claude를 사용했습니다. 그것은 도구이며 도움이 되었습니다. 저는 코드를 작성할 줄 알며, 그것에 의존하지 않습니다. 어느 쪽이든, 위에 언급된 모든 수치는 여러분이 직접 실행할 수 있는 테스트에서 나온 것이며, 제 생각에는 그것만이 유일하게 중요한 부분입니다.

미리 경고하자면, 저장소가 약간 시적(poetic)입니다. 그것 때문에 판단하지 않으시길 바랍니다. 저는 제 저장소가 지루해 보이는 것을 좋아하지 않고, 여유 시간이 좀 있어서 작업했을 뿐입니다.

누군가에게 도움이 되길 바랍니다. 감사합니다.
submitted by /u/Final-Data-1410
[link] [comments]

AI 자동 생성 콘텐츠

본 콘텐츠는 r/LocalLLaMA의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0