def METHOD_NAME(
    model: tf.keras.Model, config: NNCFConfig, compression_state: Optional[Dict[str, Any]] = None
) -> Tuple[CompressionAlgorithmController, tf.keras.Model]:
    """
    The main function used to produce a model ready for compression fine-tuning
    from an original TensorFlow Keras model and a configuration object.
    :param model: The original model. Should have its parameters already loaded
        from a checkpoint or another source.
    :param config: A configuration object used to determine the exact compression
        modifications to be applied to the model.
    :type config: nncf.NNCFConfig
    :param compression_state: compression state to unambiguously restore the compressed model.
        Includes builder and controller states. If it is specified, trainable parameter initialization will be skipped
        during building.
    :return: A tuple of the compression controller for the requested algorithm(s) and the model object with additional
     modifications necessary to enable algorithm-specific compression during fine-tuning.
    """
    if is_experimental_quantization(config):
        if is_keras_layer_model(model):
            raise ValueError(
                "Experimental quantization algorithm has not supported models with "
                "`tensorflow_hub.KerasLayer` layer yet."
            )
        from nncf.experimental.tensorflow.nncf_network import NNCFNetwork  # pylint: disable=cyclic-import
        input_signature = get_input_signature(config)
        model = NNCFNetwork(model, input_signature)
        model.compute_output_signature(model.input_signature)
    model = get_built_model(model, config)
    builder = create_compression_algorithm_builder(config, should_init=not compression_state)
    if compression_state:
        builder.load_state(compression_state[BaseController.BUILDER_STATE])
    compressed_model = builder.apply_to(model)
    compression_ctrl = builder.build_controller(compressed_model)
    if isinstance(compressed_model, tf.keras.Model):
        compressed_model.accuracy_aware_fit = types.MethodType(accuracy_aware_fit, compressed_model)
    return compression_ctrl, compressed_model