def METHOD_NAME(metatype: Type[OperatorMetatype], node: ov.Node, weight_port_id: int) -> Union[int, Tuple[int]]:
    """
    Determines reduction axes by given metatype and node information.
    :param metatype: The metatype of the operator.
    :param node: The OpenVINO node.
    :param weight_port_id: The weight port ID.
    :return: The reduction axes as an integer or a tuple of integers.
    """
    if metatype is OVMatMulMetatype:
        transpose = node.get_attributes()[f"transpose_{'a' if weight_port_id == 0 else 'b'}"]
        ndims = node.input(weight_port_id).get_partial_shape().rank.get_max_length()
        channel_axes = get_matmul_channel_axes(weight_port_id, ndims, transpose)
        axes = tuple(i for i in range(ndims) if i not in channel_axes)
    elif metatype is OVEmbeddingMetatype:
        axes = (metatype.const_channel_axis[0] + 1) % 2
    else:
        RuntimeError("Unsupported metatype to find reduction axes.")
    return axes