Qwen이 "Wait"이라고 말하며 멈출 때 무슨 생각을 하는가
What Qwen is thinking when it gets stuck saying "Wait"
핵심 요약
MIT 연구진이 Qwen 모델의 가중치를 미세 조정하여 추론 루프 문제를 해결한 사례를 공유하며, 모델 내부의 의심 회로를 분석함.
- 추론 루프 해결 — 가중치 0.016% 수정으로 MATH-500 성능 대폭 향상
- Jacobian 렌즈 분석 — 모델이 "Wait"을 반복할 때 내부적으로 "Wrong"이나 "Hmm" 같은 의심을 품는 것을 확인
- 수정된 모델 성능 — GGUF 변환이 원활하며 루프 발생 빈도가 현저히 감소
- 기술적 검증 — 로컬 환경(llama.cpp)에서 Ryzen AI 9 HX 370으로 테스트 완료
MIT CSAIL에서 GPT-6 Astra를 시켜서 Qwen3.5-0.8B의 추론 루프 문제를 가중치 0.016%만 수정해서 고쳐버림(MATH-500 점수가 7.9%에서 48.1%로 떡상함). 얘네가 diff 파일을 공개해서 똑같이 빌드해서 로컬에서 돌려볼 수 있게 됐다. 그래서 내가 한 발 더 나가서 Anthropic의 Jacobian 렌즈로 Qwen을 뜯어봤음.
모델이 또 "Wait"이라고 쓰려고 하는 토큰 지점에서, 이미 답을 다 적었는데도 60% 깊이부터는 렌즈에 "Wrong", "Nope", "Hmm" 같은 게 찍히더라. 제대로 멈춰야 할 지점에서는 "</think>", "Answer", "Output"이 뜨고.
수정본을 적용하고 같은 토큰에서 다시 확인해보니까, 의심스러운 단어들 대신 "Verification", "Completion", "Result"가 뜨는 걸 확인했다.
이 수정본은 GGUF로도 깔끔하게 변환되고(원본이랑 수정된 bf16 파일은 수정된 텐서 2개만 다름), Q4_K_M에서도 여전히 잘 돌아감. 40번 돌릴 때 루프는 딱 1번 걸리더라. Ryzen AI 9 HX 370 미니 PC에서 llama.cpp(Vulkan)로 돌려봤음. 샘플 수는 적지만 코드는 아래와 같음:
https://github.com/alisorcorp/inside-a-reasoning-loop/tree/main/code
그리고 데이터는 이거임:

