Okay, formulate this topic to post helped me thinking about the problem. Actually, my assumption that if I’m running the model training sequentially, the RNG state passed to the child will always be the same is not true.
If I reseed and set the cudnn flags on the child again, then I have a deterministic and reproducible code.
So, for future reference of others having the same problem, to solve it I had to reseed and set cudnn flags just like in the father, but in the child too:
# Set seed for deterministic results
torch.manual_seed(12345)
torch.cuda.manual_seed(12345)
np.random.seed(12345)
random.seed(12345)
torch.backends.cudnn.deterministic = True
torch.backends.cudnn.benchmark = False

Just reseed was not enough, the cudnn flags need to be set.
Now, while I understand the reason why it works, I do not understand why I had to reset everything on the child if it was supposed to get all the RNG states from the father.