class_docstr: Use this class to manage the collective groups we created so far.
  
  Each process will have an instance of `GroupManager`. Each process
  could belong to multiple collective groups. The membership information
  and other metadata are stored in the global `_group_mgr` object.
class_docstr_tok: ["Use","this","class","to","manage","the","collective","groups","we","created","so","far",".","Each","process","will","have","an","instance","of","`","GroupManager","`",".","Each","process","could","belong","to","multiple","collective","groups",".","The","membership","information","and","other","metadata","are","stored","in","the","global","`","_group_mgr","`","object","."]
docstr: The entry to create new collective groups in the manager.
  
  Put the registration and the group information into the manager
  metadata as well.
docstr_tok: ["The","entry","to","create","new","collective","groups","in","the","manager",".","Put","the","registration","and","the","group","information","into","the","manager","metadata","as","well","."]
code: def create_collective_group(
      self, backend, world_size, rank, group_name
  ):
      """The entry to create new collective groups in the manager.
  
      Put the registration and the group information into the manager
      metadata as well.
      """
      backend = types.Backend(backend)
      if backend == types.Backend.MPI:
          raise RuntimeError("Ray does not support MPI.")
      elif backend == types.Backend.GLOO:
          logger.debug(
              "Creating GLOO group: '{}'...".format(group_name)
          )
          g = GLOOGroup(
              world_size,
              rank,
              group_name,
              store_type="ray_internal_kv",
              device_type="tcp",
          )
          self._name_group_map[group_name] = g
          self._group_name_map[g] = group_name
      elif backend == types.Backend.NCCL:
          logger.debug(
              "Creating NCCL group: '{}'...".format(group_name)
          )
          g = NCCLGroup(world_size, rank, group_name)
          self._name_group_map[group_name] = g
          self._group_name_map[g] = group_name
      return self._name_group_map[group_name]
  
imports: import logging
  import os
  from typing import List
  import numpy
  import ray
  from ray.util.collective import types
label_desc: Use image node_id 2 for calling the GroupManager obj's underlying member method code with example usage: obj.create_collective_group(backend, world_size, rank, group_name) and returns: self