@darshan-majithiya had opened #15429 to add the hyperparameter tuning PR but it's gone stale. I'm adding this issue to see if they want to pick it back up, or if not, if someone wants to pick up where they left off in the spirit of open source 😄 
airflow/providers/google/cloud/operators/mlengine.py
if not self._project_id:
            raise AirflowException('Google Cloud project id is required.')
        if not self._job_id:
            raise AirflowException('An unique job id is required for Google MLEngine training job.')
        if not self._region:
            raise AirflowException('Google Compute Engine region is required.')
        if custom and not self._master_type:
            raise AirflowException('master_type must be set when scale_tier is CUSTOM')
        if self._master_config and not self._master_type:
            raise AirflowException('master_type must be set when master_config is provided')
        if not (package_uris and training_python_module) and not custom_image:
            raise AirflowException(
                'Either a Python package with a Python module or a custom Docker image should be provided.'
            )
        if (package_uris or training_python_module) and custom_image:
            raise AirflowException(
                'Either a Python package with a Python module or '
                'a custom Docker image should be provided but not both.'
            )
    def execute(self, context):
        job_id = _normalize_mlengine_job_id(self._job_id)
        training_request = {
            'jobId': job_id,
            'trainingInput': {
                'scaleTier': self._scale_tier,
                'region': self._region,
            },
        }
        if self._package_uris:
            training_request['trainingInput']['packageUris'] = self._package_uris