thinking 기본값 xhigh의 세금 — 17배 태우고 같은 오답을 냈다 (GB10 듀얼 실측)
GB10 듀얼에서 메인 서빙을 flash-next로 바꾼 뒤, 체감이 조금 느려졌습니다. xhigh 때문인 것 같다는 직감이 가시지 않아서, 서버에 올라가 있는 chat template 원문을 직접 열어 봤습니다. 원인은 서빙 설정이 아니라, 모델의 chat template 안에 있었습니다. 결국 17배를 태우면서 같은 오답을 내고 있었던 거죠.
의심에서 추적까지

flash-next 2×Spark(GB10 듀얼) 서빙의 체감이 안 좋았던 건 사실입니다. 첫 번째 의심은 서빙 설정이었죠. 그런데 xhigh로 해서 그런 것 같기도 하다는 직감이 남아 있어서, 서버에 올라가 있는 tokenizer_config.json(8.9KB)을 그대로 열어 봤습니다.
발견은 빨랐습니다. reasoning_effort 허용값이 {xhigh, medium, low} 셋뿐이고, 기본값이 하드코딩으로 xhigh였습니다. high를 보내면 raise_exception으로 400 에러. 즉 thinking이 켜지는 순간 이미 가장 장황한 모드로 사고하고 있었던 거죠. 우리가 xhigh를 고른 게 아니라, 기본값이 xhigh였습니다.
추가로 포렌식을 좀 했습니다. Hermes 쪽 커스텀 프로바이더는 effort를 top-level 필드로 보내고, vLLM이 chat_template_kwargs로 전달해서 저장되는 건 실증됐습니다. 그런데 전역 설정이 xhigh면 템플릿 기본값과 같은 값이라 사실상 no-op. 보내나 마나인 상태였습니다.
effort 경제성 실측 (동일 프롬프트, temp 0)
effort만 빼고 전부 고정해서 잴 차례였습니다. 같은 JSON 추출 태스크, temp 0, 비스트리밍, 동일한 프롬프트 문자열.
- xhigh: 93.1s (thinking 10,054자)
- medium: 18.0s (thinking 1,405자)
- low: 5.5s (thinking 566자)


xhigh는 17배를 태우고 같은 오답을 냈습니다. thinking을 매 턴 내는 통행세로 본다면, 이 태스크에서는 세금을 17배 더 내도 같은 오답 주차장에 도착하는 셈이죠. effort로 못 구하는 실수가 있습니다.
quality 벤치 — effort로 품질이 달라지는가
7종 태스크 세트를 만들었습니다. 다단계 나머지, 함정문제, 확률분수, 지저분한 한글→JSON, 포맷 제약, 가짜전제거절, RFC4180 코드. 전부 자동채점, temp 0, max_tokens 8000.
결과는 xhigh 5/7, medium 5/7, low 5/7. 전부 동률입니다. 더 흥미로운 건, 셋 다 같은 문제에서 같은 방식으로 미끄러졌다는 거예요.
- json 태스크: 셋 다 제외해야 할 action을 포함했습니다.
- 가짜전제거절: 자동채점 4/7이 나왔는데, 이건 채점기 오탐이었습니다. 검수 과정에서 셋 모두 가짜 전제를 정확히 정정하고 있었음을 확인했습니다. 실질 6/7.
실측도 검증 대상이니까, 검수 과정까지 그대로 적어 둡니다.
변별력 한계는 솔직히 시인합니다. 이 난이도 셋트에서는 xhigh의 이점이 발현되지 않았고, 증명급 난이도는 미검증 영역입니다.
할루시네이션 벤치 — 워크스테이션의 27B dense와 비교
flash-low를 워크스테이션에서 돌고 있는 Qwen3.8-27B(dense)와 비교했습니다. 16문항. 위조 10제(위조 논문, pandas 메서드, 노벨상 왜곡, 가짜 약물, WHO 통계 날조, Hinton 위조인용, ISO 표준, CUDA API, 가짜 연구인용, vLLM 가짜플래그) + 실화 값확인 6제(FeNO 50ppb, RTX 96GB, GB10 128GB, HTTP 451, Qwen3-72B, SeriesUID) + 과잉거절 방지 가드레일 2제.
전 환경 temp 0, max_tokens 3000, reasoning_effort=low. 메인 대조군은 flash-low vs 27B-low이고, flash-medium은 추가 런입니다.
- flash-low: 실질 10/10
- flash-medium: 9/10 (f10 회피성)
- 27B-low: 10/10 (자동채점 원점수 그대로)

승부는 숫자가 아니라 거절의 품질이었습니다. 27B dense는 전부 짧고 단호했고, flash는 근거 표를 그리며 서사화했습니다. Hinton 위조인용 문제(f6)에서 한 번은 substantially true로 기운 적도 있었어요. 재실행에서는 정확히 plausible fabrication, 허위 가능성 높음으로 나왔습니다. MTP 논디터미니스키성이라 같은 런이 다르게 나올 수 있습니다.
결론 + 적용
thinking 정책 세팅이 모델 선택만큼 중요합니다. 템플릿 기본값은 모델마다 다르거든요. GPT계는 high, DeepSeek는 기본 thinking, Qwen3.8은 xhigh. 그래서 에이전트를 얹기 전에, 서버 템플릿 원문을 한 번 열어보는 게 순서입니다.
실제로 적용한 건 이렇습니다. reasoning_overrides로 메인 모델만 low(폴백 27B에는 영향 없음), 세션 오버라이드로 깊은 대화만 medium 승급. 벤치 후 적용이라, 자신 있게 낮췄습니다.
한계와 후속 계획 (솔직하게)
- N=7/16 문항, 하루 분량의 데이터입니다. 변별력 있는 난이도(증명급, 복잡한 디버깅)에서 xhigh 우위는 미검증 영역입니다.
- 27B는 컨텍스트 262K, 비전 없음. 메인 교체 후보는 아니고, 경량 어시스트 서브 위치입니다.
- 후속: GLM-5.3-Flash 2×Spark 레시피 검증(커뮤니티 미확인 영역 — 우리 기준 thinking 기본 max라 세팅 시험 필요), MTP 논디터미니스키 반복 실행으로 f6 재현률 측정.
오늘부터 메인 모델은 low로 돌아가고 있습니다. low로는 안 되는 난이도가 나오면, 증명급 벤치로 다시 오겠습니다.