LLMs use pseudo-random numbers. You can set the seed and get exactly the same output with the same model and input.
and the GPU scheduler isn't deterministic
Unfortunately, this is only deterministic on the same hardware, but there is no reason why one couldn't write reasonably efficient LLM kernels. It just has not been a priority.
Nevertheless, I still agree with the main point that it is difficult to get LLMs to produce the same output reliably. A small change in the context might trigger all kinds of changes in the generated code.