AI Briefing

vLLM, Qwen3.8 비결정성 버그 수정

PSA: Qwen3.8-Flash-Next on vLLM is non-deterministic at temperature 0 (different answers per run). Found the kernel, made a fix.

·2026.08.29 19:55

핵심 내용

vLLM에서 Qwen3.8-Flash-Next의 temperature 0 비결정적 출력 문제를 sparse-attention kernel 수정으로 해결했다.

자세히 보기

vLLM이 Qwen3.8-Flash-Next 모델을 서빙할 때 temperature 0에서도 실행마다 다른 출력을 생성하는 비결정적(non-deterministic) 문제가 발견되었습니다. 이는 GB10/DGX Spark 환경에서 사용되는 sparse-attention indexer의 persistent_topk kernel에서 발생하는 race condition이 원인입니다.

문제의 원인

persistent_topk kernel의 atomicAdd slot assignment 과정에서 경쟁 상태가 발생하여, 매 실행마다 선택되는 top-2048 위치가 달라집니다. 이로 인해 attention 레이어가 읽는 컨텍스트가 변경되어 최종 출력이 불안정해집니다. llama.cpp나 다른 vLLM 모델에서는 이러한 문제가 나타나지 않았습니다.

해결 방법 및 성능

문제를 해결하기 위해 torch.topk(sorted=False)와 canonical tie ordering을 적용한 1파일 오버레이 방식의 수정안이 제시되었습니다. 이 수정은 prefill 비용을 1.35배 증가시키지만(전체 정렬 시 2.9배 증가 대비 효율적), decode/MTP 성능에는 영향을 주지 않습니다. 수정 후 재실행 결과, 50개 테스트 중 불안정한 출력이 0건으로 줄었으며, 노이즈로 인해 잘못 집계되었던 점수가 1점 상승했습니다.

추가 발견 사항

결정성이 확보되면서 기존 kernel 노이즈에 가려졌던 greedy+thinking 반복 루프 문제가 드러났습니다. 또한, 해당 모델에서 MTP(Multi-Token Prediction)가 일반 greedy 디코딩과 출력 결과가 동일하지 않다는 사실도 확인되었습니다.

이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.

AI 처리 방식을 확인하거나, 요약 오류와 출처 표기 문제, 삭제 요청을 문의 · 건의로 알려주세요.