diff --git a/rl_games/torch_runner.py b/rl_games/torch_runner.py index e697b1ed..3241fa0d 100644 --- a/rl_games/torch_runner.py +++ b/rl_games/torch_runner.py @@ -1,3 +1,4 @@ +import time import numpy as np import random import copy @@ -55,20 +56,34 @@ def reset(self): def load_config(self, params): self.seed = params.get('seed', None) + if self.seed is None: + self.seed = int(time.time()) + + print("params['config'].get('multi_gpu', False)", params['config'].get('multi_gpu', False)) + if params["config"].get('multi_gpu', False): + import horovod.torch as hvd + + hvd.init() + self.seed += hvd.rank() + print(f"self.seed = {self.seed}") self.algo_params = params['algo'] self.algo_name = self.algo_params['name'] self.exp_config = None - if self.seed: torch.manual_seed(self.seed) torch.cuda.manual_seed_all(self.seed) np.random.seed(self.seed) random.seed(self.seed) + + # deal with environment specific seed if applicable if 'env_config' in params['config']: if not 'seed' in params['config']['env_config']: params['config']['env_config']['seed'] = self.seed + else: + if params["config"].get('multi_gpu', False): + params['config']['env_config']['seed'] += hvd.rank() config = params['config'] config['reward_shaper'] = tr_helpers.DefaultRewardsShaper(**config['reward_shaper'])