Kernels
dongseokmotif commited on
Commit
39c42e0
·
1 Parent(s): 35894d1

consider multi node

Browse files
Files changed (1) hide show
  1. torch-ext/optimizer/muon.py +4 -1
torch-ext/optimizer/muon.py CHANGED
@@ -112,6 +112,7 @@ def _all2all_gather(params, param_to_state, rank, comm_stream, none_grad,
112
  for p in params:
113
  state = param_to_state[id(p)]
114
  dst = state.worker_rank
 
115
  shard_elems = split_elems_for_src(p, state, rank, num_ranks)
116
  g = p.grad
117
  g = g.to_local().to(COMM_DTYPE).contiguous().view(-1)
@@ -601,11 +602,13 @@ class Muon(torch.optim.Optimizer):
601
  if mesh is None:
602
  mesh = p.device_mesh
603
  shard_mesh, process_group = self.get_shard_mesh(p, self.rank)
 
604
  elif mesh != p.device_mesh:
605
  raise ValueError("All parameters must be on the same mesh.")
606
 
 
607
  param_to_state[id(p)] = _muon_state()
608
- param_to_state[id(p)].worker_rank = shard_mesh[round_robin].item()
609
  param_to_state[id(p)].process_group = process_group
610
  qk_clip_state = self.get_qk_clip_info(n, qk_logits)
611
  param_to_state[id(p)].qk_clip_state = qk_clip_state
 
112
  for p in params:
113
  state = param_to_state[id(p)]
114
  dst = state.worker_rank
115
+ assert dst < num_ranks
116
  shard_elems = split_elems_for_src(p, state, rank, num_ranks)
117
  g = p.grad
118
  g = g.to_local().to(COMM_DTYPE).contiguous().view(-1)
 
602
  if mesh is None:
603
  mesh = p.device_mesh
604
  shard_mesh, process_group = self.get_shard_mesh(p, self.rank)
605
+ self.rank = dist.get_rank(group=process_group)
606
  elif mesh != p.device_mesh:
607
  raise ValueError("All parameters must be on the same mesh.")
608
 
609
+ num_ranks = dist.get_world_size(group=process_group)
610
  param_to_state[id(p)] = _muon_state()
611
+ param_to_state[id(p)].worker_rank = shard_mesh[round_robin].item() % num_ranks
612
  param_to_state[id(p)].process_group = process_group
613
  qk_clip_state = self.get_qk_clip_info(n, qk_logits)
614
  param_to_state[id(p)].qk_clip_state = qk_clip_state