-
Notifications
You must be signed in to change notification settings - Fork 3.6k
Avoid changing current cudnn benchmark #12020
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
timesler
wants to merge
18
commits into
Lightning-AI:master
from
timesler:bugfix/avoid-changing-current-cudnn-benchmark
Closed
Changes from all commits
Commits
Show all changes
18 commits
Select commit
Hold shift + click to select a range
3e6d927
Leave current value for cudnn.benchmark unchanged by default
timesler 040fec0
Don't change torch.backends.cudnn.benchmark by default
timesler 4910444
Update docs for benckmark arg to Trainer
timesler 4f4e586
Clarify explanation of benchmark arg
timesler 3b21017
Merge branch 'master' into avoid-changing-current-cudnn-benchmark
timesler dbe73af
Update docs/source/common/trainer.rst
timesler 3039227
Clarify default benchmark behaviour in docs
timesler ebb744b
Merge branch 'master' into bugfix/avoid-changing-current-cudnn-benchmark
timesler 1d4d6c4
Fix reference to non-existent benchmark attribute
timesler 75f98c3
Remove erroneous deterministic comment
timesler 2413c6b
Update deterministic docstring entry.
timesler caaea75
Clarify benchmark docstring.
timesler c0db741
Add `benchmark` fix to CHANGELOG.
timesler 55f96ec
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] cf21c54
Fix ref to nonexistent attribute
timesler 5426d1a
Update benchmark arg test
timesler 22fdded
Update docs/source/common/trainer.rst
timesler ceaed22
Merge branch 'master' into bugfix/avoid-changing-current-cudnn-benchmark
timesler File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So now, somebody that creates
Trainer()with no arguments, won't getcudnn.benchmark=Trueas it does in master?I think having
benchmark=Trueby default is best.The proposal in this PR only works if we were able to know if the user had set
benchmarkmanually before.Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The justification for this change is that Pytorch Lightning shouldn't break standard Pytorch functionality, but extend it. In general, PL offers value by establishing sensible default values so users don't need to think about them usually. However, in this case, we are silently setting a global variable, resulting in this behaviour:
Output:
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I understand that, but since there's no way for us to know whether the user previously set the value, we have 2 exclusive options:
I personally prefer 1 as it establishes a "sensible default". We could request the torch folks to add an optional default so the options are not exclusive in the future.
ccing revierwers @awaelchli @ananthsub @krshrimali to see if they think differently.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We can know, by making the default value for the argument None. A default
Trainer()would result in taking the value fromtorch.backends.cudnn.benchmarkwhich by default is TrueThere was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is it? locally:
$ python -c 'import torch; print(torch.backends.cudnn.benchmark)' False