예제 #1
0
    def _convert_to_poptorch_loader(
            self,
            dataloader: DataLoader,
            sampler,
            mode: Optional[RunningStage] = None) -> "poptorch.DataLoader":
        dl_kwargs = _get_dataloader_init_kwargs(dataloader, sampler)
        # Override to drop last uneven batch, as IPUs does not support uneven inputs.
        dl_kwargs["drop_last"] = True

        opts = self.training_opts if mode == RunningStage.TRAINING else self.inference_opts
        dataloader = poptorch.DataLoader(**dl_kwargs, options=opts)
        return dataloader
예제 #2
0
def test_dataloader_kwargs_replacement_with_iterable_dataset(mode):
    """Test that DataLoader kwargs are not replaced when using Iterable Dataset."""
    dataset = RandomIterableDataset(7, 100)
    dataloader = DataLoader(dataset, batch_size=32)
    dl_kwargs = _get_dataloader_init_kwargs(dataloader,
                                            dataloader.sampler,
                                            mode=mode)
    assert dl_kwargs["sampler"] is None
    assert dl_kwargs["batch_sampler"] is None
    assert dl_kwargs["batch_size"] is dataloader.batch_size
    assert dl_kwargs["dataset"] is dataloader.dataset
    assert dl_kwargs["collate_fn"] is dataloader.collate_fn
예제 #3
0
    def _convert_to_poptorch_loader(
            self,
            dataloader: DataLoader,
            sampler,
            mode: Optional[RunningStage] = None) -> "poptorch.DataLoader":
        if isinstance(dataloader, poptorch.DataLoader):
            # the user is returning the `poptorch.DataLoader` directly, don't change anything.
            return dataloader

        dl_kwargs = _get_dataloader_init_kwargs(dataloader, sampler)
        opts = self.training_opts if mode == RunningStage.TRAINING else self.inference_opts
        dataloader = poptorch.DataLoader(opts, **dl_kwargs)
        return dataloader