class_docstr: Generates a random noisy mask for logits tensor.
  
  All noise is generated from a normal distribution :math:`(0, 1 / E^2)`, where
  `E = the number of experts`.
  
  Args:
      num_experts (int): The number of experts.
class_docstr_tok: ["Generates","a","random","noisy","mask","for","logits","tensor",".","All","noise","is","generated","from","a","normal","distribution",":","math",":","`","(","0",",","1","\/","E^2",")","`",",","where","`","E","=","the","number","of","experts","`",".","Args",":","num_experts","(","int",")",":","The","number","of","experts","."]
code: def __call__(self, inputs: torch.Tensor):
      noisy = self.normal(inputs.shape)
      return inputs + noisy
  
imports: import contextlib
  import os
  from typing import Any, Callable, Dict, List, Optional, Tuple
  import torch
  import torch.distributed
  import torch.nn
  import torch.nn.functional
  from colossalai.moe.manager import MOE_MANAGER
  from colossalai.tensor.moe_tensor.api import get_dp_group, get_dp_group_ranks, get_ep_size, is_moe_tensor
  from colossalai.utils import get_current_device
label_desc: Use image node_id 2 for calling the NormalNoiseGenerator obj's underlying member method code with example usage: obj.__call__(inputs) and returns: unknown