4 ms·
My understanding is the bugginess is due to* unintended* nondeterminism, in other words, things like a race condition where two threads write some result to the
by kortex 5y ago
My understanding is the bugginess is due to* unintended* nondeterminism, in other words, things like a race condition where two threads write some result to the same memory address, or singularities/epsilon error in floating point calculations leading to diverging results.
Make no bones about it, these are programming faults. There's no reason why distributed, long-running models can't produce convergent results with a high degree of determinism given the input state. But this takes some amount of care and attention.
> So you might want to change the seed on every run to protect yourself from such nasty phantom effects.
That's a perfect example of what I mean where a seed is actually worse. If you know you can't control determinism, then you might as well go for the opposite: ensure your randomness is high quality enough such that it approximates a perfect uniform distribution. Adding a seed here means you are more likely to capture the true distribution of the output.
- mrtedbear 5y agoYeah unintended non-determinism would be a problem. But I don't think I saw a good source regarding this being the case at the time. I saw the John Cormack review which suggested there was nothing overly troubling in the code, https://mobile.twitter.com/id_aa_carmack/status/1254872368763277313?lang=en https://mobile.twitter.com/id_aa_carmack/status/125487236876... The other takedown reviews focused on the fact that there was non-determinism despite a seed, without understanding that's not necessarily a problem. Agreed on the second point about not having a seed, but I added the "assuming you have used a seed" caveat because sometimes people do use the seed for some reproducible execution modes (even multi-thread/process ones), which are fine, and it's just easier to randomly vary the seed generation rather than remove it all together when running in a non-deterministic mode.