MCPcopy
hub / github.com/InternLM/InternLM / set_seed

Method set_seed

internlm/core/context/parallel_context.py:504–538  ·  view source on GitHub ↗

Sets seeds for all random libraries. Args: seed (int): seed for random states

(self, seed: int, dpseed_with_tpoffset: bool = False)

Source from the content-addressed store, hash-verified

502 logger.info(f"process rank {global_rank} is bound to host:{socket.gethostname()} device: {device_ordinal}")
503
504 def set_seed(self, seed: int, dpseed_with_tpoffset: bool = False):
505 """Sets seeds for all random libraries.
506
507 Args:
508 seed (int): seed for random states
509 """
510 pipeline_offset = self._local_ranks.get(ParallelMode.PIPELINE, 0)
511 global_rank = self.get_global_rank()
512
513 random.seed(seed)
514 np.random.seed(seed)
515 torch.manual_seed(seed)
516 assert torch.cuda.is_available()
517
518 # data parallel seed are kept the same in the same pipeline stage
519 dp_seed = seed
520 if dpseed_with_tpoffset:
521 dp_seed = seed + pipeline_offset * 1024
522 add_seed(ParallelMode.DATA, dp_seed)
523
524 # model parallel seeds are different across ranks
525 if self.is_initialized(ParallelMode.TENSOR):
526 tp_rank = self.get_local_rank(ParallelMode.TENSOR)
527 tp_seed = seed + tp_rank + pipeline_offset * 1024
528 add_seed(ParallelMode.TENSOR, tp_seed)
529
530 set_mode(ParallelMode.DATA)
531
532 seeds = get_seeds()
533 seed_str = ", ".join([f"{k}: {v}" for k, v in seeds.items()])
534 logger.info(
535 f"initialized seed on rank {global_rank}, "
536 f"numpy: {seed}, python random: {seed}, {seed_str},"
537 f"the default parallel seed is {ParallelMode.DATA}."
538 )
539
540 def set_virtual_pipeline_parallel_size(self, size):
541 self.virtual_pipeline_parallel_size = size

Callers 1

launchFunction · 0.80

Calls 6

get_global_rankMethod · 0.95
is_initializedMethod · 0.95
get_local_rankMethod · 0.95
add_seedFunction · 0.85
set_modeFunction · 0.85
get_seedsFunction · 0.85

Tested by

no test coverage detected