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

Skip reconciliate_processes if used within a cluster environment that creates processes externally #9389

Merged

Conversation

ananthsub
Copy link
Contributor

@ananthsub ananthsub commented Sep 9, 2021

What does this PR do?

Fixes #9388

Does your PR introduce any breaking changes? If yes, please list them.

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 list all the breaking changes introduced by this pull request?
  • Did you update the CHANGELOG? (not for typos, docs, test updates, or internal minor changes/refactorings)

PR review

Anyone in the community is welcome to review the PR.
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?

Make sure you had fun coding 🙃

@ananthsub ananthsub added bug Something isn't working distributed Generic distributed-related topic labels Sep 9, 2021
@ananthsub ananthsub changed the title [RFC] Skip reconciliate_processes if used within a cluster environment that creates processes externally Skip reconciliate_processes if used within a cluster environment that creates processes externally Sep 9, 2021
@ananthsub ananthsub marked this pull request as ready for review September 9, 2021 21:19
@ananthsub ananthsub added this to the v1.4.x milestone Sep 9, 2021
awaelchli
awaelchli previously approved these changes Sep 10, 2021
Copy link
Contributor

@awaelchli awaelchli left a comment

Choose a reason for hiding this comment

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

req. review from @tchaton

CHANGELOG.md Outdated Show resolved Hide resolved
@mergify mergify bot added the ready PRs ready to be merged label Sep 10, 2021
@codecov
Copy link

codecov bot commented Sep 10, 2021

Codecov Report

Merging #9389 (d1804bc) into master (81687aa) will decrease coverage by 4%.
The diff coverage is 0%.

❗ Current head d1804bc differs from pull request most recent head 93b389a. Consider uploading reports for the commit 93b389a to get more accurate results

@@           Coverage Diff           @@
##           master   #9389    +/-   ##
=======================================
- Coverage      93%     89%    -4%     
=======================================
  Files         180     180            
  Lines       14965   15065   +100     
=======================================
- Hits        13904   13370   -534     
- Misses       1061    1695   +634     

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 !

@ananthsub ananthsub enabled auto-merge (squash) September 10, 2021 15:39
@tchaton
Copy link
Contributor

tchaton commented Sep 11, 2021

Hey @ananthsub. Interesting. Mind taking CustomException out of the test ? The test should run as special one, so without TorchElastic.

@ananthsub ananthsub disabled auto-merge September 11, 2021 18:34
@ananthsub
Copy link
Contributor Author

ah @tchaton @awaelchli - I believe it's due to the check in the LightningEnvironment here: https://github.com/PyTorchLightning/pytorch-lightning/blob/b294c5760eee30a995fcd400127be209b12c4d7c/pytorch_lightning/plugins/environments/lightning_environment.py#L43-L49

LOCAL_RANK is added to the environment here: https://github.com/PyTorchLightning/pytorch-lightning/blob/b294c5760eee30a995fcd400127be209b12c4d7c/pytorch_lightning/plugins/training_type/ddp.py#L198

So while cluster_environment.creates_children() is False at the beginning of the script, it is True at the point of deadlock detection. This leads to the deadlock detection being disabled, causing the test to fail.

This was added in #7480

@awaelchli
Copy link
Contributor

So while cluster_environment.creates_children() is False at the beginning of the script, it is True at the point of deadlock detection. This leads to the deadlock detection being disabled, causing the test to fail.

This was added in #7480

You are right, I should have captured the value like you do in this PR

@mergify mergify bot removed the has conflicts label Sep 15, 2021
@tchaton tchaton requested a review from awaelchli September 15, 2021 08:06
@tchaton
Copy link
Contributor

tchaton commented Sep 15, 2021

Hey @ananthsub,

Do you see blockers to introduce an env variable to enable Lightning to kill the processes even with a cluster env.

Something like PL_PREVENT_DEADLOCK_MECHANISM='1'

I believe this would be useful for Grid.ai.

Best,
T.C

pytorch_lightning/plugins/training_type/ddp.py Outdated Show resolved Hide resolved
pytorch_lightning/plugins/training_type/ddp.py Outdated Show resolved Hide resolved
@mergify mergify bot added the ready PRs ready to be merged label Sep 15, 2021
@ananthsub
Copy link
Contributor Author

Hey @ananthsub,

Do you see blockers to introduce an env variable to enable Lightning to kill the processes even with a cluster env.

Something like PL_PREVENT_DEADLOCK_MECHANISM='1'

I believe this would be useful for Grid.ai.

Best,
T.C

@tchaton @awaelchli could you take another look to confirm the opt-in deadlock detection looks reasonable?

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 !

CHANGELOG.md Show resolved Hide resolved
CHANGELOG.md Show resolved Hide resolved
@ananthsub ananthsub merged commit 08b591f into Lightning-AI:master Sep 15, 2021
tchaton pushed a commit that referenced this pull request Sep 21, 2021
… creates processes externally (#9389)

* [RFC] Skip reconciliate_processes if used within a cluster environment that creates processes externally
carmocca pushed a commit that referenced this pull request Sep 21, 2021
… creates processes externally (#9389)

* [RFC] Skip reconciliate_processes if used within a cluster environment that creates processes externally
lexierule pushed a commit that referenced this pull request Sep 22, 2021
… creates processes externally (#9389)

* [RFC] Skip reconciliate_processes if used within a cluster environment that creates processes externally
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working distributed Generic distributed-related topic ready PRs ready to be merged
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[DDP] Process that runs pytorch lightning trainer SIGKILLs its peers
4 participants