From deccda538944fa4bb1342588fe1b795453c644c5 Mon Sep 17 00:00:00 2001 From: shahules786 Date: Mon, 22 Aug 2022 10:32:12 +0530 Subject: [PATCH] utils --- enhancer/utils/__init__.py` | 0 enhancer/utils/random.py | 40 +++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 enhancer/utils/__init__.py` create mode 100644 enhancer/utils/random.py diff --git a/enhancer/utils/__init__.py` b/enhancer/utils/__init__.py` new file mode 100644 index 0000000..e69de29 diff --git a/enhancer/utils/random.py b/enhancer/utils/random.py new file mode 100644 index 0000000..1a68021 --- /dev/null +++ b/enhancer/utils/random.py @@ -0,0 +1,40 @@ +import os +import random +import torch + + + +def create_unique_rnge(epoch:int): + """create unique random number generator for each (worker_id,epoch) combination""" + + rng = random.Random() + + global_seed = int(os.environ.get("PL_GLOBAL_SEED","0")) + global_rank = int(os.environ.get('GLOBAL_RANK',"0")) + local_rank = int(os.environ.get('LOCAL_RANK',"0")) + node_rank = int(os.environ.get('NODE_RANK',"0")) + world_size = int(os.environ.get('WORLD_SIZE',"0")) + + worker_info = torch.utils.data.get_worker_info() + if worker_info is not None: + num_workers = worker_info.num_workers + worker_id = worker_info.worker_id + else: + num_workers = 1 + worker_id = 0 + + seed = ( + global_seed + + worker_id + + local_rank * num_workers + + node_rank * num_workers * global_rank + + epoch * num_workers * world_size + ) + + rng.seed(seed) + + return rng + + + +