From 284eab6a6b0ba226a787cf8f999276dd2adc7cff Mon Sep 17 00:00:00 2001 From: Codethrill-20 Date: Sun, 17 Jul 2022 01:24:28 +0200 Subject: [PATCH 1/5] Add generator and worker seed --- utils/dataloaders.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/utils/dataloaders.py b/utils/dataloaders.py index 4f1c98fd880d..15421115a8b7 100755 --- a/utils/dataloaders.py +++ b/utils/dataloaders.py @@ -90,6 +90,11 @@ def exif_transpose(image): image.info["exif"] = exif.tobytes() return image +def seed_worker(worker_id): + # https://pytorch.org/docs/stable/notes/randomness.html#dataloader + worker_seed = torch.initial_seed() % 2**32 + np.random.seed(worker_seed) + random.seed(worker_seed) def create_dataloader(path, imgsz, @@ -130,13 +135,18 @@ def create_dataloader(path, nw = min([os.cpu_count() // max(nd, 1), batch_size if batch_size > 1 else 0, workers]) # number of workers sampler = None if rank == -1 else distributed.DistributedSampler(dataset, shuffle=shuffle) loader = DataLoader if image_weights else InfiniteDataLoader # only DataLoader allows for attribute updates + # set torch generator seed + generator = torch.Generator() + generator.manual_seed(0) return loader(dataset, batch_size=batch_size, shuffle=shuffle and sampler is None, num_workers=nw, sampler=sampler, pin_memory=True, - collate_fn=LoadImagesAndLabels.collate_fn4 if quad else LoadImagesAndLabels.collate_fn), dataset + collate_fn=LoadImagesAndLabels.collate_fn4 if quad else LoadImagesAndLabels.collate_fn, + worker_init_fn=seed_worker, + generator=generator), dataset class InfiniteDataLoader(dataloader.DataLoader): From a01894f5c047aab0ac4b58a0104fc8594364001a Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sat, 16 Jul 2022 23:26:43 +0000 Subject: [PATCH 2/5] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- utils/dataloaders.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/utils/dataloaders.py b/utils/dataloaders.py index 15421115a8b7..c44389ea9541 100755 --- a/utils/dataloaders.py +++ b/utils/dataloaders.py @@ -90,12 +90,14 @@ def exif_transpose(image): image.info["exif"] = exif.tobytes() return image + def seed_worker(worker_id): # https://pytorch.org/docs/stable/notes/randomness.html#dataloader - worker_seed = torch.initial_seed() % 2**32 + worker_seed = torch.initial_seed() % 2 ** 32 np.random.seed(worker_seed) random.seed(worker_seed) + def create_dataloader(path, imgsz, batch_size, @@ -135,7 +137,7 @@ def create_dataloader(path, nw = min([os.cpu_count() // max(nd, 1), batch_size if batch_size > 1 else 0, workers]) # number of workers sampler = None if rank == -1 else distributed.DistributedSampler(dataset, shuffle=shuffle) loader = DataLoader if image_weights else InfiniteDataLoader # only DataLoader allows for attribute updates - # set torch generator seed + # set torch generator seed generator = torch.Generator() generator.manual_seed(0) return loader(dataset, From 2660752ebf93980bfbeee5e9dc1e98ae235f380a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 23 Jul 2022 01:17:02 +0200 Subject: [PATCH 3/5] Update dataloaders.py --- utils/dataloaders.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/utils/dataloaders.py b/utils/dataloaders.py index c44389ea9541..d0fb9a8f241e 100755 --- a/utils/dataloaders.py +++ b/utils/dataloaders.py @@ -113,7 +113,8 @@ def create_dataloader(path, image_weights=False, quad=False, prefix='', - shuffle=False): + shuffle=False, + seed=0): if rect and shuffle: LOGGER.warning('WARNING: --rect is incompatible with DataLoader shuffle, setting shuffle=False') shuffle = False @@ -137,9 +138,8 @@ def create_dataloader(path, nw = min([os.cpu_count() // max(nd, 1), batch_size if batch_size > 1 else 0, workers]) # number of workers sampler = None if rank == -1 else distributed.DistributedSampler(dataset, shuffle=shuffle) loader = DataLoader if image_weights else InfiniteDataLoader # only DataLoader allows for attribute updates - # set torch generator seed generator = torch.Generator() - generator.manual_seed(0) + generator.manual_seed(seed) return loader(dataset, batch_size=batch_size, shuffle=shuffle and sampler is None, From 5fc10676dc16e827a9916956635984794d8b660e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 23 Jul 2022 01:17:49 +0200 Subject: [PATCH 4/5] Update dataloaders.py --- utils/dataloaders.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/dataloaders.py b/utils/dataloaders.py index d0fb9a8f241e..452eea21014b 100755 --- a/utils/dataloaders.py +++ b/utils/dataloaders.py @@ -92,7 +92,7 @@ def exif_transpose(image): def seed_worker(worker_id): - # https://pytorch.org/docs/stable/notes/randomness.html#dataloader + # Set dataloader worker seed https://pytorch.org/docs/stable/notes/randomness.html#dataloader worker_seed = torch.initial_seed() % 2 ** 32 np.random.seed(worker_seed) random.seed(worker_seed) From 5992a7f50545084f3e8ecf4694fc6faa9f7bf1c7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 23 Jul 2022 01:22:43 +0200 Subject: [PATCH 5/5] Update dataloaders.py --- utils/dataloaders.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/utils/dataloaders.py b/utils/dataloaders.py index 452eea21014b..85a39ab52f82 100755 --- a/utils/dataloaders.py +++ b/utils/dataloaders.py @@ -113,8 +113,7 @@ def create_dataloader(path, image_weights=False, quad=False, prefix='', - shuffle=False, - seed=0): + shuffle=False): if rect and shuffle: LOGGER.warning('WARNING: --rect is incompatible with DataLoader shuffle, setting shuffle=False') shuffle = False @@ -139,7 +138,7 @@ def create_dataloader(path, sampler = None if rank == -1 else distributed.DistributedSampler(dataset, shuffle=shuffle) loader = DataLoader if image_weights else InfiniteDataLoader # only DataLoader allows for attribute updates generator = torch.Generator() - generator.manual_seed(seed) + generator.manual_seed(0) return loader(dataset, batch_size=batch_size, shuffle=shuffle and sampler is None,