Start a hyperparameter tuning job.

        Args:
            inputs: Information about the training data. Please refer to the ``fit()`` method of
                the associated estimator, as this can take any of the following forms:

                * (str) - The S3 location where training data is saved.
                * (dict[str, str] or dict[str, sagemaker.session.s3_input]) - If using multiple channels for
                    training data, you can specify a dict mapping channel names
                    to strings or :func:`~sagemaker.session.s3_input` objects.
                * (sagemaker.session.s3_input) - Channel configuration for S3 data sources that can provide
                    additional information about the training dataset. See :func:`sagemaker.session.s3_input`
                    for full details.
                * (sagemaker.amazon.amazon_estimator.RecordSet) - A collection of
                    Amazon :class:~`Record` objects serialized and stored in S3.
                    For use with an estimator for an Amazon algorithm.
                * (list[sagemaker.amazon.amazon_estimator.RecordSet]) - A list of
                    :class:~`sagemaker.amazon.amazon_estimator.RecordSet` objects, where each instance is
                    a different channel of training data.

            job_name (str): Tuning job name. If not specified, the tuner generates a default job name,
                based on the training image name and current timestamp.
            include_cls_metadata (bool): Whether or not the hyperparameter tuning job should include
                information about the estimator class (default: False). This information is passed
                as a hyperparameter, so if the algorithm you are using cannot handle
                unknown hyperparameters (e.g. an Amazon SageMaker built-in algorithm that
                does not have a custom estimator in the Python SDK), then set
                ``include_cls_metadata`` to ``False``.
            **kwargs: Other arguments needed for training. Please refer to the ``fit()`` method of the associated
                estimator to see what other arguments are needed.

def fit(self, inputs=None, job_name=None, include_cls_metadata=False, **kwargs):
        """Start a hyperparameter tuning job.

        Args:
            inputs: Information about the training data. Please refer to the ``fit()`` method of
                the associated estimator, as this can take any of the following forms:

                * (str) - The S3 location where training data is saved.
                * (dict[str, str] or dict[str, sagemaker.session.s3_input]) - If using multiple channels for
                    training data, you can specify a dict mapping channel names
                    to strings or :func:`~sagemaker.session.s3_input` objects.
                * (sagemaker.session.s3_input) - Channel configuration for S3 data sources that can provide
                    additional information about the training dataset. See :func:`sagemaker.session.s3_input`
                    for full details.
                * (sagemaker.amazon.amazon_estimator.RecordSet) - A collection of
                    Amazon :class:~`Record` objects serialized and stored in S3.
                    For use with an estimator for an Amazon algorithm.
                * (list[sagemaker.amazon.amazon_estimator.RecordSet]) - A list of
                    :class:~`sagemaker.amazon.amazon_estimator.RecordSet` objects, where each instance is
                    a different channel of training data.

            job_name (str): Tuning job name. If not specified, the tuner generates a default job name,
                based on the training image name and current timestamp.
            include_cls_metadata (bool): Whether or not the hyperparameter tuning job should include
                information about the estimator class (default: False). This information is passed
                as a hyperparameter, so if the algorithm you are using cannot handle
                unknown hyperparameters (e.g. an Amazon SageMaker built-in algorithm that
                does not have a custom estimator in the Python SDK), then set
                ``include_cls_metadata`` to ``False``.
            **kwargs: Other arguments needed for training. Please refer to the ``fit()`` method of the associated
                estimator to see what other arguments are needed.
        """
        if isinstance(inputs, list) or isinstance(inputs, RecordSet):
            self.estimator._prepare_for_training(inputs, **kwargs)
        else:
            self.estimator._prepare_for_training(job_name)

        self._prepare_for_training(job_name=job_name, include_cls_metadata=include_cls_metadata)
        self.latest_tuning_job = _TuningJob.start_new(self, inputs)