google-deepmind / concordia

A library for generative social simulation
Apache License 2.0
701 stars 165 forks source link

[bug] Nondeterminism #98

Open AlekseyKorshuk opened 1 month ago

AlekseyKorshuk commented 1 month ago

I have spotted some lines where the generator is used without the seed. Some of them might not be used, but the rest a critical for result consistency. Here is the list:

jzleibo commented 1 week ago

Here's how we're thinking about this. We could make the lines you mention use the seed, and we should and will do that in the long run. However, this won't actually make the result deterministic. The problem is that these are all places that will be called after substantial use of the LLM API has already happened. But the LLM API could be delayed for network traffic reasons, rate limits, etc, any number of things. These would all end up advancing the seed. So just making the lines you mention take a seed parameter would not actually yield a deterministic result in practice.

What we have done to take as big a step as possible toward determinism is to make sure that all the random choices that happen in environment setup, before we use the LLM, are all seeded properly. This part of the variation really can be made deterministic, so we have done that.