code: def make_gelu_pattern(bias_out, out_dtype="float16"):
      mul = is_op("multiply")(bias_out, is_constant() | wildcard())
      if out_dtype == "float16":
          erf = is_op("cast")(is_op("erf")(is_op("cast")(mul)))
      else:
          erf = is_op("erf")(mul)
      mul_half = is_op("multiply")(erf, is_constant() | wildcard())
      add = is_op("add")(mul_half, is_constant() | wildcard())
      return is_op("multiply")(add, bias_out)
  
imports: from functools import partial
  from tvm import relay
  from tvm.ir.transform import PassContext, Sequential
  from tvm.relay import transform
  from tvm.relay.build_module import bind_params_by_name
  from tvm.relay.op.contrib.register import register_pattern_table
  from ...dataflow_pattern import is_constant, is_op, wildcard
label_desc: Use image node_id 1 for calling a global function with example usage: make_gelu_pattern(bias_out, out_dtype) and returns: is_op