Prefill / decode
Las dos fases de la inferencia en un LLM: prefill procesa todo el prompt en paralelo (rellenando la caché KV), y decode genera la respuesta un token cada vez. Tienen perfiles de rendimiento completamente distintos, lo que condiciona cómo se optimizan y se cobran los LLM.
Prefill: todo el texto de entrada pasa por el modelo de una vez —todos los tokens en paralelo— por lo que está limitado por cómputo, aprovecha bien la GPU y determina el "time to first token" (TTFT). Decode: cada token nuevo exige una pasada completa por el modelo pero solo para un token, por lo que está limitado por el ancho de banda de memoria (hay que leer todos los pesos más la caché KV para producir un único token), es ineficiente por token, y determina los "tokens por segundo". Consecuencias: un prompt largo implica un prefill caro (una de las razones por las que los tokens de entrada y de salida se cobran distinto); el decode se beneficia del batching y de optimizar la caché KV. Algunos sistemas incluso separan las dos fases en GPU distintas ("disaggregated serving"). Fundamental para entender la latencia y el coste de un LLM. Relacionado con la caché KV y el continuous batching.