code: def qkv_gemm_func(
      input,
      weight,
      q_scale,
      bias,
      gamma,
      beta,
      epsilon,
      add_bias,
      q_int8,
      transposed_mode=False,
      use_triton_ln=True,
  ):
      assert not transposed_mode
      # residual add and layerNorm after attention
      if use_triton_ln:
          qkv_input = layer_norm(input, gamma, beta, epsilon)
      else:
          global inference_module
          if inference_module is None:
              inference_module = InferenceBuilder().load()
          qkv_input = inference_module.layer_norm(
              input, gamma, beta, epsilon
          )
  
      qkv_out = matmul_ext.matmul(
          qkv_input,
          weight,
          bias=(bias if add_bias else None),
          activation="",
          use_triton=True,
      )
  
      return qkv_out, qkv_input
  
file_path: DeepSpeed/deepspeed/ops/transformer/inference/triton/ops.py
imports: import deepspeed
  from deepspeed.ops.op_builder import InferenceBuilder
  import deepspeed.ops.transformer.inference.triton.matmul_ext
  from deepspeed.ops.transformer.inference.triton.layer_norm import layer_norm, layer_norm_residual
label_desc: Use image node_id 5 for calling a global function with example usage: qkv_gemm_func(input, weight, q_scale, bias, gamma, beta, epsilon, add_bias, q_int8, transposed_mode, use_triton_ln) and returns: qkv_out,  qkv_input