Training with a custom service account needs a new field named service account
trainingInput:
  serviceAccount: CUSTOM_SERVICE_ACCOUNT

https://cloud.google.com/ai-platform/training/docs/custom-service-account


airflow/providers/google/cloud/operators/mlengine.py
job_id = _normalize_mlengine_job_id(self._job_id)
        training_request = {
            'jobId': job_id,
            'trainingInput': {
                'scaleTier': self._scale_tier,
                'packageUris': self._package_uris,
                'pythonModule': self._training_python_module,
                'region': self._region,
                'args': self._training_args,
            },
        }
        if self._labels:
            training_request['labels'] = self._labels
        if self._runtime_version:
            training_request['trainingInput']['runtimeVersion'] = self._runtime_version
        if self._python_version:
            training_request['trainingInput']['pythonVersion'] = self._python_version
        if self._job_dir:
            training_request['trainingInput']['jobDir'] = self._job_dir
        if self._scale_tier is not None and self._scale_tier.upper() == "CUSTOM":
            training_request['trainingInput']['masterType'] = self._master_type
            if self._master_config:
                training_request['trainingInput']['masterConfig'] = self._master_config
        if self._mode == 'DRY_RUN':
            self.log.info('In dry_run mode.')
            self.log.info('MLEngine Training job request is: %s', training_request)