A trained causal LM produces one token at a time. The procedure is:
- Run the prompt through the model. Take the logits for the last position.
- Sample a token from those logits (greedy, top-k, top-p, or temperature-scaled).
- Append the new token to the sequence.
- Repeat from step 1 until you hit an EOS token, a stop sequence, or a maximum length.
This loop is fundamentally serial. Token 5 cannot be predicted until token 4 has been chosen. Even with infinite GPUs, you cannot parallelize across the time axis during generation — only across the batch axis (multiple independent generations) and the depth axis (within a single forward pass). This single fact is what drives KV-cache, speculative decoding, and continuous batching: all are attempts to soften the impact of inherent sequentiality.