VRAM에 2비트 복사본을, 시스템 RAM에 잔차를 검증기로 사용하는 방법: GPU 용량이 부족한 모델을 위한 추론 기법
2-bit copy in VRAM + exact residual in system RAM as the verifier: speculative decoding for models that don't fit your GPU
핵심 요약
GPU VRAM이 부족할 때 2비트 모델로 토큰을 생성하고 시스템 RAM의 잔차로 검증하는 새로운 추론 최적화 아이디어입니다.
- 메모리 효율성 — 2비트 모델을 GPU에, 잔차를 시스템 RAM에 배치하여 VRAM 부족 문제 해결
- 추론 성능 — 2비트 초안 모델이 토큰을 생성하고 전체 모델이 검증하여 효율적인 추론 가능
- 기술적 혁신 — Hadamard 회전을 활용한 2비트 기반과 잔차 보정 검증기의 결합
- 오픈 소스 — 연구 및 실험을 위해 허깅페이스 레포지토리 공개
안녕 형들! 최근에 R&D 좀 하다가 애 키우고 일하느라 바빠서 더 이상 진행을 못 하겠네. 그래도 누군가에겐 흥미로운 정보가 될 것 같아서 공유해. 엄청 대단한 건 아니지만, 특정 상황에서 써먹기 좋은 접근 방식이라고 생각해. AI가 찍어낸 쓰레기 같은 정보는 아니니까 Claude나 Astra 써서 직접 테스트해 봐도 좋아. 이건 내가 직접 고안한 아이디어고 실제로 내 프로덕션 앱에 적용 중인데, 덕분에 돈 엄청 아꼈어(LLM 관련 프로젝트는 아님). 지금 시점에 구식일 수도 있고 MTP랑도 작동할지 모르겠지만, 그냥 좋게 봐줘. 내 아이디어를 공유하는 거니까 다들 자유롭게 실험해 봐.
TLDR:
모델의 2-bit 버전을 GPU에 올리고, 나머지 가중치(잔차, 6-8 bit)는 시스템 RAM에 두는 방식이야. 2-bit 복사본이 토큰을 초안으로 뽑아내면, 전체 모델이 그걸 검증하는 거지. GPU는 2-bit 부분을, CPU는 잔차 부분을 처리하고 PCIe로는 활성화 값만 왔다 갔다 해. 그래서 초안 생성에 추가 메모리가 안 들어. 말 그대로 검증기 용량의 절반 수준이지.
내가 측정한 결과(실제 가중치지만, PyTorch에서 디퀀타이즈해서 돌린 거라 아직 tok/s는 안 나옴):
- 2-bit + 8-bit 잔차 조합이 Q8_0보다 bf16에 더 가깝고, KL 발산도 절반 수준임
- 6-bit 잔차를 쓰면 RAM에서 읽어오는 바이트가 약 28% 줄어들면서도 Q8_0 수준의 품질이 나옴
- 검증기의 KV 캐시를 재사용하는 2-bit 초안 생성기가 구글 공식 Gemma 4 드래프터보다 체크당 수락 토큰 수가 25-30% 더 많음(31B, 16 노드 트리 기준: 5.23 vs 4.20)
- 내 CPU 커널은 메모리 대역폭 제한을 받기 때문에 1개 토큰 처리하는 시간이나 16개 토큰 처리하는 시간이나 거의 똑같음
찾아본 것 중엔 SubSpec이 제일 비슷한데, 걔네는 4-bit 복사본을 따로 쓰고 모델을 비트 단위로 쪼개는 대신 PCIe로 가중치를 스트리밍하는 방식이라 좀 달라.
이건 Q8이 VRAM에 안 들어갈 때만 의미가 있어. VRAM에 다 들어가면 그냥 llama.cpp 쓰는 게 최고야.
공개 저장소 링크 여기 남길게. 연구하는 형들한테 도움 됐으면 좋겠다 https://huggingface.co/HappyGuitar123/twobit-residual-spec
이거 분석할 때 성능 좋은 LLM 써서 꼼꼼하게 파보길 추천해. 그래야 더 깊은 인사이트를 얻을 수 있을 거야. 이 아이디어 잠재력은 충분하다고 본다.
다들 수고해.

