-
Notifications
You must be signed in to change notification settings - Fork 3.4k
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
Add custom dataloader support with Lite #10279
Conversation
Build Error! No Linked Issue found. Please link an issue or mention it in the body using #<issue_id> |
Build Error! No Linked Issue found. Please link an issue or mention it in the body using #<issue_id> |
for more information, see https://pre-commit.ci
…/PyTorchLightning/pytorch-lightning into make_lite_dataloader_an_iterator
for more information, see https://pre-commit.ci
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.
LGTM, small comment
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.
LGTM!
for more information, see https://pre-commit.ci
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.
cc @awaelchli
super().__init__(**dl_kwargs) | ||
super().__init__() | ||
self.__dict__.update(getattr(dataloader, "__dict__", {})) | ||
self._dataloader = dataloader | ||
self._device = device | ||
|
||
@property | ||
def device(self) -> Optional[torch.device]: | ||
return self._device | ||
|
||
def __iter__(self) -> Union[Iterator[Any], Generator[Any, None, None]]: |
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.
Won't this get possibly overridden by the __dict__.update
above?
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 __*
methods don't get affected by direct update to __dict__
What does this PR do?
This PR enables the following Custom DataLoader not to crash.
This would work
Would we failed as the value has been captured.
This would enable to remove this ugliness from PyTorch Geometric: https://github.com/pyg-team/pytorch_geometric/blob/master/torch_geometric/loader/dataloader.py#L74 if they use LightningLite.
This would be added to Lightning in another PR.
Does your PR introduce any breaking changes? If yes, please list them.
Before submitting
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:
Did you have fun?
Make sure you had fun coding 🙃