class_docstr: Fused operation: scaling + mask + softmax
  
  Arguments:
      input_in_fp16: Flag to indicate if input in fp16 data format.
      input_in_bf16: Flag to indicate if input in bf16 data format.
      attn_mask_type: Attention mask type (pad or causal)
      scaled_masked_softmax_fusion: Flag to indicate user want to use softmax fusion
      mask_func: Mask function to be applied.
      softmax_in_fp32: If True, softmax in performed at fp32 precision.
      scale: Scaling factor used in input tensor scaling.
code: def forward_torch_softmax(self, input, mask):
      if self.input_in_float16 and self.softmax_in_fp32:
          input = input.float()
  
      if self.scale is not None:
          input = input * self.scale
      mask_output = (
          self.mask_func(input, mask) if mask is not None else input
      )
      probs = torch.nn.Softmax(dim=-1)(mask_output)
  
      if self.input_in_float16 and self.softmax_in_fp32:
          if self.input_in_fp16:
              probs = probs.half()
          else:
              probs = probs.bfloat16()
  
      return probs
  
imports: import enum
  import torch
  import torch.nn
  from colossalai.kernel.op_builder.scaled_masked_softmax import ScaledMaskedSoftmaxBuilder
  from colossalai.kernel.op_builder.scaled_upper_triangle_masked_softmax import ScaledUpperTrainglemaskedSoftmaxBuilder
label_desc: Use image node_id 5 for calling the FusedScaleMaskSoftmax obj's underlying member method code with example usage: obj.forward_torch_softmax(input, mask) and returns: probs