TurboQuant의 Qwen3.6 수정
speculative decoding silently broken for Qwen3.6 on the TurboQuant fork — PR to fix
·2026.04.22 08:17
핵심 내용
TurboQuant fork의 Qwen3.6 speculative decoding 버그를 수정했다.
자세히 보기
Qwen3.6-35B-A3B를 TurboQuant fork에서 돌릴 때 speculative decoding이 조용히 무시되고, 에러 없이 일반 디코딩으로 떨어지는 문제가 있었다.
원인은 Qwen3.6의 hybrid 구조였다. 일반 transformer가 아니라 recurrent layer가 섞여 있어, draft token이 거절될 때 내부 상태를 되돌리는 롤백이 필요했지만 TurboQuant 쪽 recurrent layer가 이를 지원하지 못했다.
- mainline llama.cpp의 최근 PR #19493에서 이 문제가 먼저 수정됐다.
- TurboQuant fork는 그 변경을 아직 반영하지 못해 speculative decoding이 사실상 동작하지 않았다.
- 작성자는 이 패치를 fork에 병합했고, 벤치마크도 마쳤다고 밝혔다.
draft model과 main model의 vocab 호환성도 중요하다.
- Qwen3.5-0.8B를 draft로, Qwen3.6-35B-A3B를 main model로 쓰면
vocabs not compatible경고가 뜬다. - tokenizer가 완전히 같지 않으면 llama.cpp가 토큰을 변환하느라 추가 오버헤드가 생긴다.
- 호환이 완벽하지 않아도 speculative decoding은 계속 돌지만, 모델 조합과 생성 내용에 따라 속도 이득은 줄 수 있다.
특히 코드 생성처럼 예측 가능한 토큰이 많은 작업에서는 여전히 큰 속도 향상이 가능하다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.