def METHOD_NAME(model: ov.Model, bits: int = 8) -> None:
    """
    Compress weights of Linear and Embedding layers to uint8.
    The result of compression is the same as asymmetric weight quantization.
    :param model: The model to be transformed.
    :param bits: Number of bits for quantization.
    """
    allowed_metatypes_to_const_port = {OVEmbeddingMetatype: [0], OVMatMulMetatype: [0, 1]}
    level_low = 0
    level_high = 2**bits - 1
    for node in model.get_ops():
        metatype = get_node_metatype(node)
        if metatype not in allowed_metatypes_to_const_port:
            continue
        for const_port_id in allowed_metatypes_to_const_port[metatype]:
            weight_node = get_operation_const_op(node, const_port_id)
            if weight_node is None:
                continue
            weight_output = weight_node.output(0)
            weight_name = weight_node.get_friendly_name()
            target_inputs = weight_output.get_target_inputs()
            original_weight_dtype = weight_output.get_element_type().to_dtype()
            if original_weight_dtype not in [np.float32, np.float16, np.float64]:
                continue
            weight = get_const_value(weight_node)
            axes = _get_reduction_axes(metatype, node, const_port_id)
            min_values = np.min(weight, axis=axes, keepdims=True)
            max_values = np.max(weight, axis=axes, keepdims=True)
            scale, zero_point = calculate_scale_zero_point(
                min_values, max_values, level_low, level_high, narrow_range=False
            )
            compressed_weights = np.round(weight / scale + zero_point)
            compressed_weights = np.clip(compressed_weights, level_low, level_high).astype(np.uint8)
            compressed_const = opset.constant(compressed_weights, dtype=np.uint8, name=weight_name)
            convert = opset.convert(compressed_const, original_weight_dtype)
            sub = opset.subtract(convert, zero_point.astype(original_weight_dtype))
            fq_name = f"{node.get_friendly_name()}/fq_weights_{const_port_id}"
            mul = opset.multiply(sub, scale.astype(original_weight_dtype), name=fq_name)
            for target_input in target_inputs:
                target_input.replace_source_output(mul.output(0))