Skip to content

fix: use stable seeds in PyTorch notebooks - #644

Open
marcus-campbell wants to merge 1 commit into
wandb:mainfrom
marcus-campbell:fix-stable-pytorch-seeds
Open

fix: use stable seeds in PyTorch notebooks#644
marcus-campbell wants to merge 1 commit into
wandb:mainfrom
marcus-campbell:fix-stable-pytorch-seeds

Conversation

@marcus-campbell

@marcus-campbell marcus-campbell commented Aug 15, 2026

Copy link
Copy Markdown

Description

Several PyTorch notebooks here state they behave deterministically, but they don't appear to actually do that. This is because they derive their seeds from hash("..."). Python randomizes string hashes between interpreter processes, so these notebooks can actually initialize their RNGs differently across runs.

This updates:

  • the PyTorch introduction notebook
  • the Simple PyTorch integration notebook
  • the PyTorch Lightning integration notebook

To make this fix, I had to replace the "self-commenting hashes" - for example, hash("setting random seeds") - with a named integer seed, so the code has lost a bit of its former character. If y'all want this recovered somehow (perhaps a short comment), just let me know.

Why this matters

I found this while researching a prototype Ruff rule for reproducibility problems. I ran a small exploratory search for this pattern, and the same recognizable recipe appeared in at least 24 other repositories. This suggests that the pattern here has propagated beyond W&B's own examples, so correcting this now can help prevent the problem from spreading further.

I've also submitted wandb/docs#3072, which updates the corresponding wandb/docs page, which contains the same bug.

Testing

  • Confirmed that all three modified notebooks remain valid JSON.
  • Confirmed that the diffs contain only the intended seed-cell changes.
  • Confirmed that the old hash-derived seeds vary with PYTHONHASHSEED.

Replace process-randomized hash-derived seeds with fixed integer seeds
so the PyTorch and Lightning examples initialize their RNGs consistently
across Python processes.
@review-notebook-app

Copy link
Copy Markdown

Check out this pull request on  ReviewNB

See visual diffs & provide feedback on Jupyter Notebooks.


Powered by ReviewNB

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant