class_docstr: ProcessGroup
  Process Group indicates how processes are organized in groups for parallel execution using Tensor Parallelism and Data Parallelism.
  
  NOTE, the ProcessGroup must be used after `torch.distributed.initialize()`
  
  
  Args:
      rank: the global rank of the current process.
      ranks: List[int], a list of rank id belongings to this process group.
      backend: str, the backend of the process group.
      tp_degree: Optional[int], tensor parallelism degree. How many processes are inside a tp process group. default None means 1.
      dp_degree: Optional[int], data parallelism degree. How many processes are inside a dp process group. . default None means len(ranks).
code: def __eq__(self, obj: "ProcessGroup") -> bool:
      if not isinstance(obj, ProcessGroup):
          return False
      if self._rank != obj._rank:
          return False
      if self._rank_list != obj._rank_list:
          return False
      if self._tp_rank_list != obj._tp_rank_list:
          return False
      if self._dp_rank_list != obj._dp_rank_list:
          return False
      if self._tp_degree != obj._tp_degree:
          return False
      if self._dp_degree != obj._dp_degree:
          return False
      return True
  
imports: from typing import List, Optional
  import torch
  from colossalai.context.singleton_meta import SingletonMeta
  from colossalai.logging import get_dist_logger
label_desc: Use image node_id 5 for calling the ProcessGroup obj's underlying member method code with example usage: obj.__eq__(obj) and returns: True, False, False, False, False, False, False, False