▲ 230 ▼ Torvalds: AI Is the New Compiler, Not the New Programmer (pbxscience.com) submitted 2 months ago by inari@piefed.zip to c/technology@lemmy.world 106 comments fedilink hide all child comments
[–] piyuv@lemmy.world 172 points 2 months ago (25 children) Never seen a non-deterministic compiler though permalink fedilink source hideshow 25 child comments replies: [–] ryannathans@aussie.zone 87 points 2 months ago* (8 children) C/C++ compilers are non deterministic due to support of super macros that change run to run, non-deterministic optimisation strategies or ordering due to parallelism, and linkers often produce different outputs every time they are run where subtle bugs can cause crashes when addresses don't line up how you expect. And that's without mentioning projects that use a configuration step. It's actually a big problem in producing reproducible builds for security. permalink fedilink source parent hideshow 8 child comments replies: [–] Mondez@lemdro.id 25 points 2 months ago (3 children) Can't most serious compilers produce reproducible builds these days given the same build environment. I know there has been a drive towards reproducible builds in general for security verification purposes. permalink fedilink source parent hideshow 3 child comments replies: [–] MajorasMaskForever@lemmy.world 4 points 2 months ago Yeah, but it does take a lot of work to coerce them to do it. GCC is honestly obnoxious, and you have to do a bunch of unintuitive things to get it. The compile stage needs the built-in RNG seeded, parent file paths stripped, you need to ensure that the date/time macros are not used anywhere, and you need to ensure that all command line flags are passed in the exact same order every time. I just went through this with GCC16 on a new project. permalink fedilink source parent [–] Natanael@infosec.pub 4 points 2 months ago Not by default usually but yes, you need to do a lot of work to set all necessary configurations and sometimes provide your own RNG seed for things which insist on random looking values. permalink fedilink source parent [–] ieGod@lemmy.zip 1 point 2 months ago Not only can they but certified toolchains exist in the safety critical space. Medical, aerospace, nuclear projects, and the like are often required to use and procure such toolchains as part of their validation. permalink fedilink source parent [–] piyuv@lemmy.world 14 points 2 months ago (3 children) I’m not very good with C/C++ so please correct me, isn’t that what’s called a “race condition”? Parallelism can cause non-determinism but not in the same sense LLMs generate non-deterministic output. Compilers are not statistical machines. permalink fedilink source parent hideshow 3 child comments replies: [–] ryannathans@aussie.zone 16 points 2 months ago You don't need parallelism to have a race condition, just not handling an event with expected timing can cause one - like when two keys are pressed within one polling cycle and you depend on one being pressed before the other for some logic like up and right arrow for a diagonal but they register as right and up so the diagonal movement doesn't trigger Compiler optimisation strategies sometimes use statistical machines and link time optimisation does use random number generators for producing output permalink fedilink source parent [–] Natanael@infosec.pub 1 point 2 months ago* You can have single threaded race conditions appear simply from inputs appearing in an unintended ordering. Or on a single core CPU, you can have one task meant to be done first take unusually long time, so the CPU gives time to another thread which finishes first but expected to finish last. permalink fedilink source parent [–] wonderingwanderer@sopuli.xyz 0 points 2 months ago From my understanding, which is very limited, race conditions are more an issue with concurrent programming. Parallel computing uses separate processor cores for each task so there's less reliance on stack machines. But I guess each core still shares the memory, so maybe it still happens. Like I said, my understanding is limited. Just use rust. permalink fedilink source parent [–] chunes@lemmy.world 14 points 2 months ago Or one that pretends compilation was a success when it wasn't. permalink fedilink source parent [–] 8uurg@lemmy.world 25 points 2 months ago (1 child) 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. permalink fedilink source parent hideshow 1 child comment replies: [–] Natanael@infosec.pub 5 points 2 months ago 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 permalink fedilink source parent [–] dwalin@lemmy.world 16 points 2 months ago (2 children) There is a parameter in llms called temperature. If you reduce it down to zero it will become deterministic. And probably even worse. permalink fedilink source parent hideshow 2 child comments replies: [–] naught101@lemmy.world 17 points 2 months ago 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.. permalink fedilink source parent [–] frongt@lemmy.zip 3 points 2 months ago Yeah but the output would be crap. Just use the same prng seed and you'll get reproducible output. permalink fedilink source parent [–] brucethemoose@lemmy.world 16 points 2 months ago* (last edited 2 months ago) (3 children) Technically, LLMs (and most ML models) are deterministic with the same input and same seed. I get what you mean though. permalink fedilink source parent hideshow 3 child comments replies: [–] Scrollone@feddit.it 8 points 2 months ago* (2 children) So does ChatGPT intentionally change seed at every interaction so it always spits two different outputs given the same input? permalink fedilink source parent hideshow 2 child comments replies: [–] Scipitie@lemmy.dbzer0.com 15 points 2 months ago 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. permalink fedilink source parent [–] brucethemoose@lemmy.world 4 points 2 months ago* 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. permalink fedilink source parent [–] sunbeam60@feddit.uk 6 points 2 months ago (4 children) 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. permalink fedilink source parent hideshow 4 child comments replies: [–] theunknownmuncher@lemmy.world 6 points 2 months ago (3 children) Setting the temperature parameter to 0.00 makes an LLM deterministic. permalink fedilink source parent hideshow 3 child comments replies: [–] sunbeam60@feddit.uk -2 points 2 months ago (2 children) No. Floating point arithmetic and ordering of operations won’t make 0.0 deterministic. permalink fedilink source parent hideshow 2 child comments replies: [–] theunknownmuncher@lemmy.world 1 point 2 months ago* (last edited 2 months ago) (1 child) 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. permalink fedilink source parent hideshow 1 child comment replies: [–] sunbeam60@feddit.uk 1 point 2 months ago* 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. permalink fedilink source parent [–] wonderingwanderer@sopuli.xyz 2 points 2 months ago Yeah, that sounds like a disaster waiting to happen... permalink fedilink source parent
[–] ryannathans@aussie.zone 87 points 2 months ago* (8 children) C/C++ compilers are non deterministic due to support of super macros that change run to run, non-deterministic optimisation strategies or ordering due to parallelism, and linkers often produce different outputs every time they are run where subtle bugs can cause crashes when addresses don't line up how you expect. And that's without mentioning projects that use a configuration step. It's actually a big problem in producing reproducible builds for security. permalink fedilink source parent hideshow 8 child comments replies: [–] Mondez@lemdro.id 25 points 2 months ago (3 children) Can't most serious compilers produce reproducible builds these days given the same build environment. I know there has been a drive towards reproducible builds in general for security verification purposes. permalink fedilink source parent hideshow 3 child comments replies: [–] MajorasMaskForever@lemmy.world 4 points 2 months ago Yeah, but it does take a lot of work to coerce them to do it. GCC is honestly obnoxious, and you have to do a bunch of unintuitive things to get it. The compile stage needs the built-in RNG seeded, parent file paths stripped, you need to ensure that the date/time macros are not used anywhere, and you need to ensure that all command line flags are passed in the exact same order every time. I just went through this with GCC16 on a new project. permalink fedilink source parent [–] Natanael@infosec.pub 4 points 2 months ago Not by default usually but yes, you need to do a lot of work to set all necessary configurations and sometimes provide your own RNG seed for things which insist on random looking values. permalink fedilink source parent [–] ieGod@lemmy.zip 1 point 2 months ago Not only can they but certified toolchains exist in the safety critical space. Medical, aerospace, nuclear projects, and the like are often required to use and procure such toolchains as part of their validation. permalink fedilink source parent [–] piyuv@lemmy.world 14 points 2 months ago (3 children) I’m not very good with C/C++ so please correct me, isn’t that what’s called a “race condition”? Parallelism can cause non-determinism but not in the same sense LLMs generate non-deterministic output. Compilers are not statistical machines. permalink fedilink source parent hideshow 3 child comments replies: [–] ryannathans@aussie.zone 16 points 2 months ago You don't need parallelism to have a race condition, just not handling an event with expected timing can cause one - like when two keys are pressed within one polling cycle and you depend on one being pressed before the other for some logic like up and right arrow for a diagonal but they register as right and up so the diagonal movement doesn't trigger Compiler optimisation strategies sometimes use statistical machines and link time optimisation does use random number generators for producing output permalink fedilink source parent [–] Natanael@infosec.pub 1 point 2 months ago* You can have single threaded race conditions appear simply from inputs appearing in an unintended ordering. Or on a single core CPU, you can have one task meant to be done first take unusually long time, so the CPU gives time to another thread which finishes first but expected to finish last. permalink fedilink source parent [–] wonderingwanderer@sopuli.xyz 0 points 2 months ago From my understanding, which is very limited, race conditions are more an issue with concurrent programming. Parallel computing uses separate processor cores for each task so there's less reliance on stack machines. But I guess each core still shares the memory, so maybe it still happens. Like I said, my understanding is limited. Just use rust. permalink fedilink source parent
[–] Mondez@lemdro.id 25 points 2 months ago (3 children) Can't most serious compilers produce reproducible builds these days given the same build environment. I know there has been a drive towards reproducible builds in general for security verification purposes. permalink fedilink source parent hideshow 3 child comments replies: [–] MajorasMaskForever@lemmy.world 4 points 2 months ago Yeah, but it does take a lot of work to coerce them to do it. GCC is honestly obnoxious, and you have to do a bunch of unintuitive things to get it. The compile stage needs the built-in RNG seeded, parent file paths stripped, you need to ensure that the date/time macros are not used anywhere, and you need to ensure that all command line flags are passed in the exact same order every time. I just went through this with GCC16 on a new project. permalink fedilink source parent [–] Natanael@infosec.pub 4 points 2 months ago Not by default usually but yes, you need to do a lot of work to set all necessary configurations and sometimes provide your own RNG seed for things which insist on random looking values. permalink fedilink source parent [–] ieGod@lemmy.zip 1 point 2 months ago Not only can they but certified toolchains exist in the safety critical space. Medical, aerospace, nuclear projects, and the like are often required to use and procure such toolchains as part of their validation. permalink fedilink source parent
[–] MajorasMaskForever@lemmy.world 4 points 2 months ago Yeah, but it does take a lot of work to coerce them to do it. GCC is honestly obnoxious, and you have to do a bunch of unintuitive things to get it. The compile stage needs the built-in RNG seeded, parent file paths stripped, you need to ensure that the date/time macros are not used anywhere, and you need to ensure that all command line flags are passed in the exact same order every time. I just went through this with GCC16 on a new project. permalink fedilink source parent
[–] Natanael@infosec.pub 4 points 2 months ago Not by default usually but yes, you need to do a lot of work to set all necessary configurations and sometimes provide your own RNG seed for things which insist on random looking values. permalink fedilink source parent
[–] ieGod@lemmy.zip 1 point 2 months ago Not only can they but certified toolchains exist in the safety critical space. Medical, aerospace, nuclear projects, and the like are often required to use and procure such toolchains as part of their validation. permalink fedilink source parent
[–] piyuv@lemmy.world 14 points 2 months ago (3 children) I’m not very good with C/C++ so please correct me, isn’t that what’s called a “race condition”? Parallelism can cause non-determinism but not in the same sense LLMs generate non-deterministic output. Compilers are not statistical machines. permalink fedilink source parent hideshow 3 child comments replies: [–] ryannathans@aussie.zone 16 points 2 months ago You don't need parallelism to have a race condition, just not handling an event with expected timing can cause one - like when two keys are pressed within one polling cycle and you depend on one being pressed before the other for some logic like up and right arrow for a diagonal but they register as right and up so the diagonal movement doesn't trigger Compiler optimisation strategies sometimes use statistical machines and link time optimisation does use random number generators for producing output permalink fedilink source parent [–] Natanael@infosec.pub 1 point 2 months ago* You can have single threaded race conditions appear simply from inputs appearing in an unintended ordering. Or on a single core CPU, you can have one task meant to be done first take unusually long time, so the CPU gives time to another thread which finishes first but expected to finish last. permalink fedilink source parent [–] wonderingwanderer@sopuli.xyz 0 points 2 months ago From my understanding, which is very limited, race conditions are more an issue with concurrent programming. Parallel computing uses separate processor cores for each task so there's less reliance on stack machines. But I guess each core still shares the memory, so maybe it still happens. Like I said, my understanding is limited. Just use rust. permalink fedilink source parent
[–] ryannathans@aussie.zone 16 points 2 months ago You don't need parallelism to have a race condition, just not handling an event with expected timing can cause one - like when two keys are pressed within one polling cycle and you depend on one being pressed before the other for some logic like up and right arrow for a diagonal but they register as right and up so the diagonal movement doesn't trigger Compiler optimisation strategies sometimes use statistical machines and link time optimisation does use random number generators for producing output permalink fedilink source parent
[–] Natanael@infosec.pub 1 point 2 months ago* You can have single threaded race conditions appear simply from inputs appearing in an unintended ordering. Or on a single core CPU, you can have one task meant to be done first take unusually long time, so the CPU gives time to another thread which finishes first but expected to finish last. permalink fedilink source parent
[–] wonderingwanderer@sopuli.xyz 0 points 2 months ago From my understanding, which is very limited, race conditions are more an issue with concurrent programming. Parallel computing uses separate processor cores for each task so there's less reliance on stack machines. But I guess each core still shares the memory, so maybe it still happens. Like I said, my understanding is limited. Just use rust. permalink fedilink source parent
[–] chunes@lemmy.world 14 points 2 months ago Or one that pretends compilation was a success when it wasn't. permalink fedilink source parent
[–] 8uurg@lemmy.world 25 points 2 months ago (1 child) 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. permalink fedilink source parent hideshow 1 child comment replies: [–] Natanael@infosec.pub 5 points 2 months ago 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 permalink fedilink source parent
[–] Natanael@infosec.pub 5 points 2 months ago 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 permalink fedilink source parent
[–] dwalin@lemmy.world 16 points 2 months ago (2 children) There is a parameter in llms called temperature. If you reduce it down to zero it will become deterministic. And probably even worse. permalink fedilink source parent hideshow 2 child comments replies: [–] naught101@lemmy.world 17 points 2 months ago 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.. permalink fedilink source parent [–] frongt@lemmy.zip 3 points 2 months ago Yeah but the output would be crap. Just use the same prng seed and you'll get reproducible output. permalink fedilink source parent
[–] naught101@lemmy.world 17 points 2 months ago 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.. permalink fedilink source parent
[–] frongt@lemmy.zip 3 points 2 months ago Yeah but the output would be crap. Just use the same prng seed and you'll get reproducible output. permalink fedilink source parent
[–] brucethemoose@lemmy.world 16 points 2 months ago* (last edited 2 months ago) (3 children) Technically, LLMs (and most ML models) are deterministic with the same input and same seed. I get what you mean though. permalink fedilink source parent hideshow 3 child comments replies: [–] Scrollone@feddit.it 8 points 2 months ago* (2 children) So does ChatGPT intentionally change seed at every interaction so it always spits two different outputs given the same input? permalink fedilink source parent hideshow 2 child comments replies: [–] Scipitie@lemmy.dbzer0.com 15 points 2 months ago 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. permalink fedilink source parent [–] brucethemoose@lemmy.world 4 points 2 months ago* 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. permalink fedilink source parent
[–] Scrollone@feddit.it 8 points 2 months ago* (2 children) So does ChatGPT intentionally change seed at every interaction so it always spits two different outputs given the same input? permalink fedilink source parent hideshow 2 child comments replies: [–] Scipitie@lemmy.dbzer0.com 15 points 2 months ago 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. permalink fedilink source parent [–] brucethemoose@lemmy.world 4 points 2 months ago* 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. permalink fedilink source parent
[–] Scipitie@lemmy.dbzer0.com 15 points 2 months ago 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. permalink fedilink source parent
[–] brucethemoose@lemmy.world 4 points 2 months ago* 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. permalink fedilink source parent
[–] sunbeam60@feddit.uk 6 points 2 months ago (4 children) 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. permalink fedilink source parent hideshow 4 child comments replies: [–] theunknownmuncher@lemmy.world 6 points 2 months ago (3 children) Setting the temperature parameter to 0.00 makes an LLM deterministic. permalink fedilink source parent hideshow 3 child comments replies: [–] sunbeam60@feddit.uk -2 points 2 months ago (2 children) No. Floating point arithmetic and ordering of operations won’t make 0.0 deterministic. permalink fedilink source parent hideshow 2 child comments replies: [–] theunknownmuncher@lemmy.world 1 point 2 months ago* (last edited 2 months ago) (1 child) 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. permalink fedilink source parent hideshow 1 child comment replies: [–] sunbeam60@feddit.uk 1 point 2 months ago* 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. permalink fedilink source parent
[–] theunknownmuncher@lemmy.world 6 points 2 months ago (3 children) Setting the temperature parameter to 0.00 makes an LLM deterministic. permalink fedilink source parent hideshow 3 child comments replies: [–] sunbeam60@feddit.uk -2 points 2 months ago (2 children) No. Floating point arithmetic and ordering of operations won’t make 0.0 deterministic. permalink fedilink source parent hideshow 2 child comments replies: [–] theunknownmuncher@lemmy.world 1 point 2 months ago* (last edited 2 months ago) (1 child) 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. permalink fedilink source parent hideshow 1 child comment replies: [–] sunbeam60@feddit.uk 1 point 2 months ago* 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. permalink fedilink source parent
[–] sunbeam60@feddit.uk -2 points 2 months ago (2 children) No. Floating point arithmetic and ordering of operations won’t make 0.0 deterministic. permalink fedilink source parent hideshow 2 child comments replies: [–] theunknownmuncher@lemmy.world 1 point 2 months ago* (last edited 2 months ago) (1 child) 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. permalink fedilink source parent hideshow 1 child comment replies: [–] sunbeam60@feddit.uk 1 point 2 months ago* 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. permalink fedilink source parent
[–] theunknownmuncher@lemmy.world 1 point 2 months ago* (last edited 2 months ago) (1 child) 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. permalink fedilink source parent hideshow 1 child comment replies: [–] sunbeam60@feddit.uk 1 point 2 months ago* 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. permalink fedilink source parent
[–] sunbeam60@feddit.uk 1 point 2 months ago* 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. permalink fedilink source parent
[–] wonderingwanderer@sopuli.xyz 2 points 2 months ago Yeah, that sounds like a disaster waiting to happen... permalink fedilink source parent