벤치마크 결과: Llama.cpp용 MindControl
Benchmarked: MindControl for Llama.cpp
핵심 요약
Llama.cpp에서 추론 토큰 예산을 효율적으로 관리하는 MindControl의 벤치마크 결과, 성능 저하 없이 토큰 소비량이 크게 감소함.
- 추론 예산 관리 — 모델의 사고 과정을 강제 종료하지 않고 스스로 조절하도록 유도함
- 벤치마크 결과 — HumanEval+ 및 LiveCodeBench에서 토큰 소비량 감소 및 성능 유지 확인
- 오프 디스트리뷰션 우려 — 모델이 훈련되지 않은 시퀀스를 생성할 위험은 낮음
- 향후 개선 방향 — 루프 감지 및 재시작 기능과 결합하여 효율성 극대화 예정
최근에 원조 MindControl PoC를 공유했었지(github에도 올렸고). llama.cpp용 샘플러 레벨의 추론 예산 가이드인데, 단순히 토큰을 딱 잘라버리는 게 아니라 모델 스스로 자기 추론 예산을 인지하게끔 유도하는 방식이야. 반응이 꽤 좋았는데, 가장 많이 나온 질문(충분히 일리 있는 지적)은 "아이디어는 좋은데, 구현 방식 때문에 성능 떨어지는 거 아님? 벤치마크 결과 좀 가져와 봐"였어.
그래서 벤치마크 결과를 가져왔다. HumanEval+랑 LiveCodeBench를 다양한 토큰 예산으로 돌려봤고, 설정은 총 4가지야: naive(llama.cpp 기존 방식, 아무런 신호 없이 그냥 끊어버림. 우리가 개선하려는 대상), grace-period hard-stop(유예 기간 두고 강제 종료), soft-warning + hard-stop(부드러운 경고 후 강제 종료), 그리고 intro + soft + hard(전체 도입부 + 부드러운 경고 + 강제 종료) 풀 세트. 전부 Qwen3.6-27B, Q4_K_XL (MTP) 모델로 돌렸고, speculative decoding 없이 진행했어(구현 방식 고려하면 당연한 결과).
결과: 토큰 소모량은 일관되게 줄었고, 복잡한 작업일수록 효과가 더 확실하게 나타났어. LiveCodeBench에서는 테스트한 모든 예산 구간에서 (naive > hard-limit only > soft+hard > intro+soft+hard) 순서가 예외 없이 유지됐어. 가장 높은 예산 구간에서는 intro+soft+hard 방식이 naive 방식보다 토큰을 절반도 안 쓰면서 점수는 거의 똑같이 뽑아냈지. HumanEval+에서는 대부분의 설정이 제약 없는 기본 모델 성능을 맞추거나 아예 뛰어넘었어. 전체 테스트에서 최고 점수(95.7%)가 나온 것도 가장 강하게 가이드를 주고 예산을 빡빡하게 제한한 설정이었는데, 이때 토큰 소모량은 기본 모델의 절반 수준이었어. 내 생각엔 추론 예산을 제한하니까 모델이 쉬운 문제에서 뇌절하거나 이상한 추론 루프에 빠지는 걸 막아준 것 같아.
몇몇 사람들이 구체적인 우려를 표했는데, 다들 일리 있는 말이라 나도 내 생각이 틀릴 수도 있겠다 싶어서 직접 짚고 넘어가려고 해.


