TurboQuant 구현 결과가 논문과 일치하지 않음
Implemented TurboQuant and results don’t fully match paper
핵심 요약
TurboQuant를 직접 구현했으나 논문 대비 성능이 저조하여 원인을 파악하고 커뮤니티의 조언을 구함.
- 구현 문제 — TurboQuant 논문 수치와 실제 구현 결과 간의 상관관계 및 정확도 차이 발생
- 기술적 원인 — K/V 텐서의 첨도 문제나 차원 설정에 따른 성능 저하 가능성 제기
- 참고 자료 — TheToms의 llama.cpp 브랜치를 통한 비교 및 검증 필요성 대두
- 실제 활용 — TurboQuant를 적용한 모델이 VRAM 효율성 측면에서 긍정적인 성과를 보임
지난 며칠 동안 TurboQuant (arXiv:2504.19874)를 처음부터 직접 구현해 보았습니다.
제 수치가 논문의 수치와 일치하지 않아서 이곳 분들에게 확인을 좀 부탁드리고 싶습니다.
관찰 결과:
MSE 버전은 잘 작동합니다 (예상대로 압축 및 왜곡 발생)
PROD 버전:
논문에서는 99% 이상의 상관관계를 주장하지만
제 수치는 4비트에서 약 95.8% 정도입니다
하지만 더 흥미로운 점은:
이 95% 수준의 상관관계에서도 어텐션 품질이 상당히 저하된다는 것입니다
(단순 시뮬레이션에서 top-1 정확도가 약 67%에 불과함)
제 가설:
상관관계 != 순위 보존
어텐션은 순서 오류에 매우 민감함
그 외에 겪은 문제들:
분산 스케일링(unit vs 1/d)이 처음에 MSE 버전을 망쳤음
QJL 분산 스케일링을 다시 유도해야 했음
압축이 작동하려면 비트 패킹이 필수적임
확실하지 않은 점:
제가 PROD 스케일링에서 무언가를 놓치고 있는 것인지
d=256일 때 예상되는 동작인지
논문 결과가 더 큰 차원이나 특정 설정에 의존하는 것인지
코드는 관심 있으신 분들을 위해 여기에 올려두었습니다:
https://github.com/Ashx098/Turboquant-Implementation
KV 캐시 양자화나 유사한 기술을 다뤄보신 분들의 피드백을 정말 환영합니다.


