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
if 'name' not in self._version:
            self._version['name'] = self._version_name
        hook = MLEngineHook(
            gcp_conn_id=self._gcp_conn_id,
            delegate_to=self._delegate_to,
            impersonation_chain=self._impersonation_chain,
        )
        if self._operation == 'create':
            if not self._version:
                raise ValueError(
                    "version attribute of {} could not " "be empty".format(self.__class__.__name__)
                )
            return hook.create_version(
                project_id=self._project_id, model_name=self._model_name, version_spec=self._version
            )
        elif self._operation == 'set_default':
            return hook.set_default_version(
                project_id=self._project_id, model_name=self._model_name, version_name=self._version['name']
            )
        elif self._operation == 'list':
            return hook.list_versions(project_id=self._project_id, model_name=self._model_name)
        elif self._operation == 'delete':
            return hook.delete_version(
                project_id=self._project_id, model_name=self._model_name, version_name=self._version['name']
            )
        else:
            raise ValueError('Unknown operation: {}'.format(self._operation))
class MLEngineCreateVersionOperator(BaseOperator):