code: def __init__(self, params, group=None, average_shared=False):
      params = [x for x in params]
      self.params = [
          x for x in params if not hasattr(x, "_tutel_expert")
      ]
      self.expert_params = [
          x for x in params if hasattr(x, "_tutel_expert")
      ]
      self.shapes = [x.shape for x in self.params]
      self.group = group
      self.average_shared = average_shared
  
file_path: tutel/tutel/net.py
imports: import logging
  from .impls.communicate import get_world_size, get_world_rank, create_groups_from_world, barrier
  from .impls.communicate import simple_all_reduce, simple_all_to_all, simple_split, simple_reduce_scatter, simple_all_gather
  from .impls.communicate import all_to_all, all_to_all_single, all_gather, zero_gather, zero_scatter, spatial_split, reduce_scatter, allreduce_forward, allreduce_backward
  from .impls.communicate import batch_all_to_all_v, batch_all_gather_v
label_desc: Use image node_id 1 to create a new TutelDistributedOptimizer object  with example: obj = TutelDistributedOptimizer(params, group, average_shared)