Skip to content
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

fix resuming from checkpoint for fault-tolerant in case of no failure #9371

Merged
merged 31 commits into from
Sep 10, 2021

Conversation

awaelchli
Copy link
Contributor

@awaelchli awaelchli commented Sep 8, 2021

What does this PR do?

Fixes #8835

When saving the loop state dict on a failure (breaking in the middle of an epoch), we want to save the progress counters exactly as they are in order to resume on the failed batch. The same applies to runs that finish successfully and with the full epoch completed. If we resume training in such a case, we don't want to resume on the last batch that we saved, but instead on the next one which is the batch 0 from the next epoch. So the counters need to reset every start of an epoch if:

  • we are not restarting (regular case)
  • if we are restarting, the current counters are at the limit of the loop AND we did not fail

Note:

  • This fix applies to master branch only (fault-tolerant training).
  • Test fails on master

TODO:

  • test

Before submitting

  • Was this discussed/approved via a GitHub issue? (not for typos and docs)
  • Did you read the contributor guideline, Pull Request section?
  • Did you make sure your PR does only one thing, instead of bundling different changes together?
  • Did you make sure to update the documentation with your changes? (if necessary)
  • Did you write any new necessary tests? (not for typos and docs)
  • Did you verify new and existing tests pass locally with your changes?
  • Did you update the CHANGELOG? (not for typos, docs, test updates, or internal minor changes/refactorings)

PR review

Anyone in the community is free to review the PR once the tests have passed.
Before you start reviewing make sure you have read Review guidelines. In short, see the following bullet-list:

  • Is this pull request ready for review? (if not, please submit in draft mode)
  • Check that all items from Before submitting are resolved
  • Make sure the title is self-explanatory and the description concisely explains the PR
  • Add labels and milestones (and optionally projects) to the PR so it can be classified

Did you have fun?

I made sure I had fun coding 🙃

@awaelchli awaelchli added the bug Something isn't working label Sep 8, 2021
@awaelchli awaelchli modified the milestones: v1.4.x, v1.5 Sep 8, 2021
@awaelchli awaelchli added the checkpointing Related to checkpointing label Sep 8, 2021
tests/loops/test_loops.py Outdated Show resolved Hide resolved
pytorch_lightning/loops/epoch/training_epoch_loop.py Outdated Show resolved Hide resolved
@awaelchli awaelchli marked this pull request as draft September 8, 2021 16:31
@awaelchli awaelchli marked this pull request as ready for review September 9, 2021 12:48
Copy link
Contributor

@tchaton tchaton left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM !

@mergify mergify bot added ready PRs ready to be merged has conflicts labels Sep 10, 2021
@mergify mergify bot removed the has conflicts label Sep 10, 2021
Copy link
Member

@justusschock justusschock left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

pytorch_lightning/loops/fit_loop.py Show resolved Hide resolved
pytorch_lightning/loops/epoch/training_epoch_loop.py Outdated Show resolved Hide resolved
Co-authored-by: Justus Schock <12886177+justusschock@users.noreply.github.com>
@awaelchli awaelchli enabled auto-merge (squash) September 10, 2021 16:57
@codecov
Copy link

codecov bot commented Sep 10, 2021

Codecov Report

Merging #9371 (8045fd5) into master (81687aa) will decrease coverage by 0%.
The diff coverage is 100%.

@@          Coverage Diff           @@
##           master   #9371   +/-   ##
======================================
- Coverage      93%     93%   -0%     
======================================
  Files         180     180           
  Lines       14965   15046   +81     
======================================
+ Hits        13904   13971   +67     
- Misses       1061    1075   +14     

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working checkpointing Related to checkpointing ready PRs ready to be merged
Projects
None yet
Development

Successfully merging this pull request may close these issues.

resume_from_checkpoint broken when fault-tolerant feature enabled
4 participants