code: def __init__(
      self, num_global_experts, capacity, model_dim, dispatch_dtype
  ):
      self.num_global_experts = int(num_global_experts)
      self.capacity = int(capacity)
      self.model_dim = int(model_dim)
      self.dtype = dispatch_dtype
      if IS_HIP_EXTENSION or dispatch_dtype != torch.float16:
          self.dtype = torch.float32
      self.original_dtype = dispatch_dtype
      self.aligned_dim = model_dim // (
          2 if self.dtype == torch.float16 else 1
      )
      self.is_cuda = None
  
imports: from typing import TYPE_CHECKING, Any, Optional, Tuple, Union, cast
  import logging
  import torch
  from torch import Tensor
  from .jit_compiler import IS_HIP_EXTENSION
  from ..jit_kernels import sparse
  from ..jit_kernels.gating import fast_cumsum_sub_one
  from .communicate import get_world_rank, simple_all_reduce
  from .None import losses
label_desc: Use image node_id 1 to create a new TutelMoeFastDispatcher object  with example: obj = TutelMoeFastDispatcher(num_global_experts, capacity, model_dim, dispatch_dtype)