Torvalds: "100% of Their Code Is Written by Compilers" Too. The Linux creator argued that AI-written code claims are misleading — and warned that a wave of low-quality, AI-generated bug reports is quietly burning out the maintainers who keep open source running.
An LLM is not inherently non-deterministic though - if you don’t randomly sample and instead have a fixed rule (which is what the recent fingerprint embedding approach does), if applied in all cases the output is deterministic, as the neural net at its core is deterministic function. A lot of the randomness beyond that is due to optimizations [source].
LLMs are however unreliable at ‘compiling’. Whether or not it will be able to complete the requested task (translate human language into code) correctly it not guaranteed - at least nowhere near the compilers we use.
While they can be deterministic in runtime they can be compared to cryptographic hashes in that they come preloaded with pseudorandomness which will behave unpredictably
If you do that it will basically produce the most average possible output, given the context. I don’t know if that’s going to be useful in a compiler context…
In the ChatGPT app, there’s tons of shuffling in the background, like context being injected, maybe sampling changed, agenic action, quantization… its “far” from the actual LLM, opaque by design, and as a result certainly not deterministic.
You can sometimes get deterministic output with the OpenAI API, but it’s also dependent on nothing changing on their end. And their end changes a lot.
But self hosting or using a more consistent provider will give you deterministic output.
Exactly this. If you made an LLM that had deterministic code output then I’m all up for saying “AI is a compiler for human language”. But until then AI is most definitely not a compiler.
Um… yes. Matrix multiplication is deterministic, there’s nothing non-deterministic about an LLM, unless you artificially add randomness to them, like randomly selecting 1 of the top N ranked tokens.
The function is deterministic, agreed. The implementation is almost always not. Hardware floating point addition is not associative. So a GPU kernel that splits a reduction differently (ie interleaving it with anything else, like running your graphics, or sharing your work with other users on the same hardware) will produce different results over different runs even at temperature 0.0.
Determinism is almost always impossible when dealing with floating point on a multi-process/multi-user system.
Never seen a non-deterministic compiler though
An LLM is not inherently non-deterministic though - if you don’t randomly sample and instead have a fixed rule (which is what the recent fingerprint embedding approach does), if applied in all cases the output is deterministic, as the neural net at its core is deterministic function. A lot of the randomness beyond that is due to optimizations [source].
LLMs are however unreliable at ‘compiling’. Whether or not it will be able to complete the requested task (translate human language into code) correctly it not guaranteed - at least nowhere near the compilers we use.
While they can be deterministic in runtime they can be compared to cryptographic hashes in that they come preloaded with pseudorandomness which will behave unpredictably
There is a parameter in llms called temperature. If you reduce it down to zero it will become deterministic. And probably even worse.
If you do that it will basically produce the most average possible output, given the context. I don’t know if that’s going to be useful in a compiler context…
Yeah but the output would be crap. Just use the same prng seed and you’ll get reproducible output.
Technically, LLMs (and most ML models) are deterministic with the same input and same seed.
I get what you mean though.
So does ChatGPT intentionally change seed at every interaction so it always spits two different outputs given the same input?
In short: yes. You can tune these values when self hosting - it basically changes the b chance which tokens will be used under which circumstances.
Like Scipitie said, sort of.
In the ChatGPT app, there’s tons of shuffling in the background, like context being injected, maybe sampling changed, agenic action, quantization… its “far” from the actual LLM, opaque by design, and as a result certainly not deterministic.
You can sometimes get deterministic output with the OpenAI API, but it’s also dependent on nothing changing on their end. And their end changes a lot.
But self hosting or using a more consistent provider will give you deterministic output.
Or one that pretends compilation was a success when it wasn’t.
Exactly this. If you made an LLM that had deterministic code output then I’m all up for saying “AI is a compiler for human language”. But until then AI is most definitely not a compiler.
Setting the temperature parameter to 0.00 makes an LLM deterministic.
No. Floating point arithmetic and ordering of operations won’t make 0.0 deterministic.
Um… yes. Matrix multiplication is deterministic, there’s nothing non-deterministic about an LLM, unless you artificially add randomness to them, like randomly selecting 1 of the top N ranked tokens.
The function is deterministic, agreed. The implementation is almost always not. Hardware floating point addition is not associative. So a GPU kernel that splits a reduction differently (ie interleaving it with anything else, like running your graphics, or sharing your work with other users on the same hardware) will produce different results over different runs even at temperature 0.0.
Determinism is almost always impossible when dealing with floating point on a multi-process/multi-user system.
There are attempts to create batch invariant language models (https://github.com/thinking-machines-lab/batch_invariant_ops) but all the major ones are not.
Yeah, that sounds like a disaster waiting to happen…