Not unique as in: no one makes their compilers deterministic, and you have to work to make a non-deterministic one. LLMs are non-deterministic by default, and you have to contort them to the point of uselessness to make them deterministic
> If you are relying on a third-party service to run the LLM, quite possibly. Without control over the hardware, configuration, etc.
Again. Even if you control everything, the only time they produce deterministic output is when they are completely neutered:
- workaround for GPUs with num_thread 1
- temperature set to 0
- top_k to 0
- top_p to 0
- context window to 0 (or always do a single run from a new session)
Go (gc) was specifically designed to produce reproducible builds, so clearly that's not true, but you are right that it isn't the norm.
Some of the most widely recognized and used compilers, like gcc, clang, even rustc, are non-deterministic by default. If you work hard and control all the variables (e.g. -frandom-seed), you can make these compilers deterministic, but, hey, that's starting to sound like how you describe LLMs.