{
  "pipelineSpec": {
    "components": {
      "comp-automl-tabular-builtin-algorithm-hyperparameter-tuning-job": {
        "executorLabel": "exec-automl-tabular-builtin-algorithm-hyperparameter-tuning-job",
        "inputDefinitions": {
          "artifacts": {
            "instance_baseline": {
              "artifactType": {
                "schemaTitle": "system.Artifact",
                "schemaVersion": "0.0.1"
              }
            },
            "materialized_eval_split": {
              "artifactType": {
                "schemaTitle": "system.Artifact",
                "schemaVersion": "0.0.1"
              }
            },
            "materialized_test_split": {
              "artifactType": {
                "schemaTitle": "system.Artifact",
                "schemaVersion": "0.0.1"
              }
            },
            "materialized_train_split": {
              "artifactType": {
                "schemaTitle": "system.Artifact",
                "schemaVersion": "0.0.1"
              }
            },
            "metadata": {
              "artifactType": {
                "schemaTitle": "system.Artifact",
                "schemaVersion": "0.0.1"
              }
            },
            "training_schema_uri": {
              "artifactType": {
                "schemaTitle": "system.Artifact",
                "schemaVersion": "0.0.1"
              }
            },
            "transform_output": {
              "artifactType": {
                "schemaTitle": "system.Artifact",
                "schemaVersion": "0.0.1"
              }
            }
          },
          "parameters": {
            "enable_profiler": {
              "type": "STRING"
            },
            "encryption_spec_key_name": {
              "type": "STRING"
            },
            "eval_frequency_secs": {
              "type": "INT"
            },
            "eval_steps": {
              "type": "INT"
            },
            "location": {
              "type": "STRING"
            },
            "machine_spec": {
              "type": "STRING"
            },
            "max_failed_trial_count": {
              "type": "INT"
            },
            "max_trial_count": {
              "type": "INT"
            },
            "parallel_trial_count": {
              "type": "INT"
            },
            "prediction_type": {
              "type": "STRING"
            },
            "project": {
              "type": "STRING"
            },
            "replica_count": {
              "type": "INT"
            },
            "root_dir": {
              "type": "STRING"
            },
            "seed": {
              "type": "INT"
            },
            "study_spec_algorithm": {
              "type": "STRING"
            },
            "study_spec_measurement_selection_type": {
              "type": "STRING"
            },
            "study_spec_metrics": {
              "type": "STRING"
            },
            "study_spec_parameters_override": {
              "type": "STRING"
            },
            "tabnet": {
              "type": "STRING"
            },
            "target_column": {
              "type": "STRING"
            },
            "weight_column": {
              "type": "STRING"
            }
          }
        },
        "outputDefinitions": {
          "parameters": {
            "gcp_resources": {
              "type": "STRING"
            },
            "instance_schema_uri": {
              "type": "STRING"
            },
            "prediction_docker_uri_output": {
              "type": "STRING"
            },
            "prediction_schema_uri": {
              "type": "STRING"
            },
            "trials": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-automl-tabular-finalizer": {
        "executorLabel": "exec-automl-tabular-finalizer",
        "inputDefinitions": {
          "parameters": {
            "encryption_spec_key_name": {
              "type": "STRING"
            },
            "location": {
              "type": "STRING"
            },
            "project": {
              "type": "STRING"
            },
            "root_dir": {
              "type": "STRING"
            }
          }
        },
        "outputDefinitions": {
          "parameters": {
            "gcp_resources": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-automl-tabular-infra-validator": {
        "executorLabel": "exec-automl-tabular-infra-validator",
        "inputDefinitions": {
          "artifacts": {
            "unmanaged_container_model": {
              "artifactType": {
                "schemaTitle": "google.UnmanagedContainerModel",
                "schemaVersion": "0.0.1"
              }
            }
          }
        }
      },
      "comp-bool-identity": {
        "executorLabel": "exec-bool-identity",
        "inputDefinitions": {
          "parameters": {
            "value": {
              "type": "STRING"
            }
          }
        },
        "outputDefinitions": {
          "parameters": {
            "Output": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-condition-run-evaluation-2": {
        "dag": {
          "outputs": {
            "artifacts": {
              "model-evaluation-evaluation_metrics": {
                "artifactSelectors": [
                  {
                    "outputArtifactKey": "evaluation_metrics",
                    "producerSubtask": "model-evaluation"
                  }
                ]
              }
            }
          },
          "tasks": {
            "model-batch-predict": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-model-batch-predict"
              },
              "inputs": {
                "artifacts": {
                  "unmanaged_container_model": {
                    "componentInputArtifact": "pipelineparam--get-best-hyperparameter-tuning-job-trial-unmanaged_container_model"
                  }
                },
                "parameters": {
                  "accelerator_count": {
                    "runtimeValue": {
                      "constantValue": {
                        "intValue": "0"
                      }
                    }
                  },
                  "accelerator_type": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": ""
                      }
                    }
                  },
                  "bigquery_destination_output_uri": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": ""
                      }
                    }
                  },
                  "bigquery_source_input_uri": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": ""
                      }
                    }
                  },
                  "encryption_spec_key_name": {
                    "componentInputParameter": "pipelineparam--encryption_spec_key_name"
                  },
                  "explanation_metadata": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "{}"
                      }
                    }
                  },
                  "explanation_parameters": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "{}"
                      }
                    }
                  },
                  "gcs_destination_output_uri_prefix": {
                    "componentInputParameter": "pipelineparam--root_dir"
                  },
                  "gcs_source_uris": {
                    "componentInputParameter": "pipelineparam--tabular-stats-and-example-gen-test_split_json"
                  },
                  "generate_explanation": {
                    "runtimeValue": {
                      "constantValue": {
                        "intValue": "0"
                      }
                    }
                  },
                  "instances_format": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "tf-record"
                      }
                    }
                  },
                  "job_display_name": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "batch-predict-evaluation-{{$.pipeline_job_uuid}}-{{$.pipeline_task_uuid}}"
                      }
                    }
                  },
                  "labels": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "{}"
                      }
                    }
                  },
                  "location": {
                    "componentInputParameter": "pipelineparam--location"
                  },
                  "machine_type": {
                    "componentInputParameter": "pipelineparam--evaluation_batch_predict_machine_type"
                  },
                  "manual_batch_tuning_parameters_batch_size": {
                    "runtimeValue": {
                      "constantValue": {
                        "intValue": "0"
                      }
                    }
                  },
                  "max_replica_count": {
                    "componentInputParameter": "pipelineparam--evaluation_batch_predict_max_replica_count"
                  },
                  "model_parameters": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "{}"
                      }
                    }
                  },
                  "predictions_format": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "jsonl"
                      }
                    }
                  },
                  "project": {
                    "componentInputParameter": "pipelineparam--project"
                  },
                  "starting_replica_count": {
                    "componentInputParameter": "pipelineparam--evaluation_batch_predict_starting_replica_count"
                  }
                }
              },
              "taskInfo": {
                "name": "model-batch-predict"
              }
            },
            "model-evaluation": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-model-evaluation"
              },
              "dependentTasks": [
                "model-batch-predict"
              ],
              "inputs": {
                "artifacts": {
                  "batch_prediction_job": {
                    "taskOutputArtifact": {
                      "outputArtifactKey": "batchpredictionjob",
                      "producerTask": "model-batch-predict"
                    }
                  }
                },
                "parameters": {
                  "class_names": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "{}"
                      }
                    }
                  },
                  "classification_type": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": ""
                      }
                    }
                  },
                  "dataflow_disk_size": {
                    "componentInputParameter": "pipelineparam--evaluation_dataflow_disk_size_gb"
                  },
                  "dataflow_machine_type": {
                    "componentInputParameter": "pipelineparam--evaluation_dataflow_machine_type"
                  },
                  "dataflow_max_workers_num": {
                    "componentInputParameter": "pipelineparam--evaluation_dataflow_max_num_workers"
                  },
                  "dataflow_service_account": {
                    "componentInputParameter": "pipelineparam--dataflow_service_account"
                  },
                  "dataflow_subnetwork": {
                    "componentInputParameter": "pipelineparam--dataflow_subnetwork"
                  },
                  "dataflow_use_public_ips": {
                    "componentInputParameter": "pipelineparam--dataflow_use_public_ips"
                  },
                  "dataflow_workers_num": {
                    "runtimeValue": {
                      "constantValue": {
                        "intValue": "1"
                      }
                    }
                  },
                  "encryption_spec_key_name": {
                    "componentInputParameter": "pipelineparam--encryption_spec_key_name"
                  },
                  "example_weight_column": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": ""
                      }
                    }
                  },
                  "generate_feature_attribution": {
                    "runtimeValue": {
                      "constantValue": {
                        "intValue": "0"
                      }
                    }
                  },
                  "ground_truth_column": {
                    "componentInputParameter": "pipelineparam--target_column"
                  },
                  "ground_truth_format": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "jsonl"
                      }
                    }
                  },
                  "ground_truth_gcs_source": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "{}"
                      }
                    }
                  },
                  "key_columns": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "{}"
                      }
                    }
                  },
                  "location": {
                    "componentInputParameter": "pipelineparam--location"
                  },
                  "positive_classes": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "{}"
                      }
                    }
                  },
                  "prediction_id_column": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": ""
                      }
                    }
                  },
                  "prediction_label_column": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": ""
                      }
                    }
                  },
                  "prediction_score_column": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": ""
                      }
                    }
                  },
                  "predictions_format": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "jsonl"
                      }
                    }
                  },
                  "problem_type": {
                    "componentInputParameter": "pipelineparam--prediction_type"
                  },
                  "project": {
                    "componentInputParameter": "pipelineparam--project"
                  },
                  "root_dir": {
                    "componentInputParameter": "pipelineparam--root_dir"
                  }
                }
              },
              "taskInfo": {
                "name": "model-evaluation"
              }
            }
          }
        },
        "inputDefinitions": {
          "artifacts": {
            "pipelineparam--get-best-hyperparameter-tuning-job-trial-unmanaged_container_model": {
              "artifactType": {
                "schemaTitle": "system.Artifact",
                "schemaVersion": "0.0.1"
              }
            }
          },
          "parameters": {
            "pipelineparam--bool-identity-Output": {
              "type": "STRING"
            },
            "pipelineparam--dataflow_service_account": {
              "type": "STRING"
            },
            "pipelineparam--dataflow_subnetwork": {
              "type": "STRING"
            },
            "pipelineparam--dataflow_use_public_ips": {
              "type": "STRING"
            },
            "pipelineparam--encryption_spec_key_name": {
              "type": "STRING"
            },
            "pipelineparam--evaluation_batch_predict_machine_type": {
              "type": "STRING"
            },
            "pipelineparam--evaluation_batch_predict_max_replica_count": {
              "type": "INT"
            },
            "pipelineparam--evaluation_batch_predict_starting_replica_count": {
              "type": "INT"
            },
            "pipelineparam--evaluation_dataflow_disk_size_gb": {
              "type": "INT"
            },
            "pipelineparam--evaluation_dataflow_machine_type": {
              "type": "STRING"
            },
            "pipelineparam--evaluation_dataflow_max_num_workers": {
              "type": "INT"
            },
            "pipelineparam--location": {
              "type": "STRING"
            },
            "pipelineparam--prediction_type": {
              "type": "STRING"
            },
            "pipelineparam--project": {
              "type": "STRING"
            },
            "pipelineparam--root_dir": {
              "type": "STRING"
            },
            "pipelineparam--tabular-stats-and-example-gen-test_split_json": {
              "type": "STRING"
            },
            "pipelineparam--target_column": {
              "type": "STRING"
            }
          }
        },
        "outputDefinitions": {
          "artifacts": {
            "model-evaluation-evaluation_metrics": {
              "artifactType": {
                "schemaTitle": "system.Metrics",
                "schemaVersion": "0.0.1"
              }
            }
          }
        }
      },
      "comp-exit-handler-1": {
        "dag": {
          "outputs": {
            "artifacts": {
              "model-evaluation-evaluation_metrics": {
                "artifactSelectors": [
                  {
                    "outputArtifactKey": "model-evaluation-evaluation_metrics",
                    "producerSubtask": "condition-run-evaluation-2"
                  }
                ]
              }
            }
          },
          "tasks": {
            "automl-tabular-builtin-algorithm-hyperparameter-tuning-job": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-automl-tabular-builtin-algorithm-hyperparameter-tuning-job"
              },
              "dependentTasks": [
                "feature-transform-engine",
                "get-tabnet-study-spec-parameters",
                "split-materialized-data",
                "tabular-stats-and-example-gen",
                "transform-configuration-planner"
              ],
              "inputs": {
                "artifacts": {
                  "instance_baseline": {
                    "taskOutputArtifact": {
                      "outputArtifactKey": "instance_baseline",
                      "producerTask": "transform-configuration-planner"
                    }
                  },
                  "materialized_eval_split": {
                    "taskOutputArtifact": {
                      "outputArtifactKey": "materialized_eval_split",
                      "producerTask": "split-materialized-data"
                    }
                  },
                  "materialized_test_split": {
                    "taskOutputArtifact": {
                      "outputArtifactKey": "materialized_test_split",
                      "producerTask": "split-materialized-data"
                    }
                  },
                  "materialized_train_split": {
                    "taskOutputArtifact": {
                      "outputArtifactKey": "materialized_train_split",
                      "producerTask": "split-materialized-data"
                    }
                  },
                  "metadata": {
                    "taskOutputArtifact": {
                      "outputArtifactKey": "metadata",
                      "producerTask": "tabular-stats-and-example-gen"
                    }
                  },
                  "training_schema_uri": {
                    "taskOutputArtifact": {
                      "outputArtifactKey": "training_schema",
                      "producerTask": "transform-configuration-planner"
                    }
                  },
                  "transform_output": {
                    "taskOutputArtifact": {
                      "outputArtifactKey": "transform_output",
                      "producerTask": "feature-transform-engine"
                    }
                  }
                },
                "parameters": {
                  "enable_profiler": {
                    "componentInputParameter": "pipelineparam--enable_profiler"
                  },
                  "encryption_spec_key_name": {
                    "componentInputParameter": "pipelineparam--encryption_spec_key_name"
                  },
                  "eval_frequency_secs": {
                    "componentInputParameter": "pipelineparam--eval_frequency_secs"
                  },
                  "eval_steps": {
                    "componentInputParameter": "pipelineparam--eval_steps"
                  },
                  "location": {
                    "componentInputParameter": "pipelineparam--location"
                  },
                  "machine_spec": {
                    "componentInputParameter": "pipelineparam--training_machine_spec"
                  },
                  "max_failed_trial_count": {
                    "componentInputParameter": "pipelineparam--max_failed_trial_count"
                  },
                  "max_trial_count": {
                    "componentInputParameter": "pipelineparam--max_trial_count"
                  },
                  "parallel_trial_count": {
                    "componentInputParameter": "pipelineparam--parallel_trial_count"
                  },
                  "prediction_type": {
                    "componentInputParameter": "pipelineparam--prediction_type"
                  },
                  "project": {
                    "componentInputParameter": "pipelineparam--project"
                  },
                  "replica_count": {
                    "componentInputParameter": "pipelineparam--training_replica_count"
                  },
                  "root_dir": {
                    "componentInputParameter": "pipelineparam--root_dir"
                  },
                  "seed": {
                    "componentInputParameter": "pipelineparam--seed"
                  },
                  "study_spec_algorithm": {
                    "componentInputParameter": "pipelineparam--study_spec_algorithm"
                  },
                  "study_spec_measurement_selection_type": {
                    "componentInputParameter": "pipelineparam--study_spec_measurement_selection_type"
                  },
                  "study_spec_metrics": {
                    "componentInputParameter": "pipelineparam--study_spec_metrics"
                  },
                  "study_spec_parameters_override": {
                    "taskOutputParameter": {
                      "outputParameterKey": "Output",
                      "producerTask": "get-tabnet-study-spec-parameters"
                    }
                  },
                  "tabnet": {
                    "componentInputParameter": "pipelineparam--tabnet"
                  },
                  "target_column": {
                    "componentInputParameter": "pipelineparam--target_column"
                  },
                  "weight_column": {
                    "componentInputParameter": "pipelineparam--weight_column"
                  }
                }
              },
              "taskInfo": {
                "name": "automl-tabular-builtin-algorithm-hyperparameter-tuning-job"
              }
            },
            "automl-tabular-infra-validator": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-automl-tabular-infra-validator"
              },
              "dependentTasks": [
                "get-best-hyperparameter-tuning-job-trial"
              ],
              "inputs": {
                "artifacts": {
                  "unmanaged_container_model": {
                    "taskOutputArtifact": {
                      "outputArtifactKey": "unmanaged_container_model",
                      "producerTask": "get-best-hyperparameter-tuning-job-trial"
                    }
                  }
                }
              },
              "taskInfo": {
                "name": "automl-tabular-infra-validator"
              }
            },
            "bool-identity": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-bool-identity"
              },
              "inputs": {
                "parameters": {
                  "value": {
                    "componentInputParameter": "pipelineparam--run_evaluation"
                  }
                }
              },
              "taskInfo": {
                "name": "bool-identity"
              }
            },
            "condition-run-evaluation-2": {
              "componentRef": {
                "name": "comp-condition-run-evaluation-2"
              },
              "dependentTasks": [
                "bool-identity",
                "get-best-hyperparameter-tuning-job-trial",
                "tabular-stats-and-example-gen"
              ],
              "inputs": {
                "artifacts": {
                  "pipelineparam--get-best-hyperparameter-tuning-job-trial-unmanaged_container_model": {
                    "taskOutputArtifact": {
                      "outputArtifactKey": "unmanaged_container_model",
                      "producerTask": "get-best-hyperparameter-tuning-job-trial"
                    }
                  }
                },
                "parameters": {
                  "pipelineparam--bool-identity-Output": {
                    "taskOutputParameter": {
                      "outputParameterKey": "Output",
                      "producerTask": "bool-identity"
                    }
                  },
                  "pipelineparam--dataflow_service_account": {
                    "componentInputParameter": "pipelineparam--dataflow_service_account"
                  },
                  "pipelineparam--dataflow_subnetwork": {
                    "componentInputParameter": "pipelineparam--dataflow_subnetwork"
                  },
                  "pipelineparam--dataflow_use_public_ips": {
                    "componentInputParameter": "pipelineparam--dataflow_use_public_ips"
                  },
                  "pipelineparam--encryption_spec_key_name": {
                    "componentInputParameter": "pipelineparam--encryption_spec_key_name"
                  },
                  "pipelineparam--evaluation_batch_predict_machine_type": {
                    "componentInputParameter": "pipelineparam--evaluation_batch_predict_machine_type"
                  },
                  "pipelineparam--evaluation_batch_predict_max_replica_count": {
                    "componentInputParameter": "pipelineparam--evaluation_batch_predict_max_replica_count"
                  },
                  "pipelineparam--evaluation_batch_predict_starting_replica_count": {
                    "componentInputParameter": "pipelineparam--evaluation_batch_predict_starting_replica_count"
                  },
                  "pipelineparam--evaluation_dataflow_disk_size_gb": {
                    "componentInputParameter": "pipelineparam--evaluation_dataflow_disk_size_gb"
                  },
                  "pipelineparam--evaluation_dataflow_machine_type": {
                    "componentInputParameter": "pipelineparam--evaluation_dataflow_machine_type"
                  },
                  "pipelineparam--evaluation_dataflow_max_num_workers": {
                    "componentInputParameter": "pipelineparam--evaluation_dataflow_max_num_workers"
                  },
                  "pipelineparam--location": {
                    "componentInputParameter": "pipelineparam--location"
                  },
                  "pipelineparam--prediction_type": {
                    "componentInputParameter": "pipelineparam--prediction_type"
                  },
                  "pipelineparam--project": {
                    "componentInputParameter": "pipelineparam--project"
                  },
                  "pipelineparam--root_dir": {
                    "componentInputParameter": "pipelineparam--root_dir"
                  },
                  "pipelineparam--tabular-stats-and-example-gen-test_split_json": {
                    "taskOutputParameter": {
                      "outputParameterKey": "test_split_json",
                      "producerTask": "tabular-stats-and-example-gen"
                    }
                  },
                  "pipelineparam--target_column": {
                    "componentInputParameter": "pipelineparam--target_column"
                  }
                }
              },
              "taskInfo": {
                "name": "condition-run-evaluation-2"
              },
              "triggerPolicy": {
                "condition": "inputs.parameters['pipelineparam--bool-identity-Output'].string_value == 'true'"
              }
            },
            "feature-transform-engine": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-feature-transform-engine"
              },
              "dependentTasks": [
                "generate-analyze-and-transform-data",
                "transform-configuration-planner"
              ],
              "inputs": {
                "artifacts": {
                  "analyze_data": {
                    "taskOutputArtifact": {
                      "outputArtifactKey": "analyze_data",
                      "producerTask": "generate-analyze-and-transform-data"
                    }
                  },
                  "transform_data": {
                    "taskOutputArtifact": {
                      "outputArtifactKey": "transform_data",
                      "producerTask": "generate-analyze-and-transform-data"
                    }
                  }
                },
                "parameters": {
                  "dataflow_disk_size_gb": {
                    "componentInputParameter": "pipelineparam--transform_dataflow_disk_size_gb"
                  },
                  "dataflow_machine_type": {
                    "componentInputParameter": "pipelineparam--transform_dataflow_machine_type"
                  },
                  "dataflow_max_num_workers": {
                    "componentInputParameter": "pipelineparam--transform_dataflow_max_num_workers"
                  },
                  "dataflow_subnetwork": {
                    "componentInputParameter": "pipelineparam--dataflow_subnetwork"
                  },
                  "dataflow_use_public_ips": {
                    "componentInputParameter": "pipelineparam--dataflow_use_public_ips"
                  },
                  "encryption_spec_key_name": {
                    "componentInputParameter": "pipelineparam--encryption_spec_key_name"
                  },
                  "location": {
                    "componentInputParameter": "pipelineparam--location"
                  },
                  "project": {
                    "componentInputParameter": "pipelineparam--project"
                  },
                  "root_dir": {
                    "componentInputParameter": "pipelineparam--root_dir"
                  },
                  "transform_config": {
                    "taskOutputParameter": {
                      "outputParameterKey": "fte_transform_configuration_path",
                      "producerTask": "transform-configuration-planner"
                    }
                  }
                }
              },
              "taskInfo": {
                "name": "feature-transform-engine"
              }
            },
            "generate-analyze-and-transform-data": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-generate-analyze-and-transform-data"
              },
              "dependentTasks": [
                "tabular-stats-and-example-gen"
              ],
              "inputs": {
                "artifacts": {
                  "eval_split": {
                    "taskOutputArtifact": {
                      "outputArtifactKey": "eval_split",
                      "producerTask": "tabular-stats-and-example-gen"
                    }
                  },
                  "test_split": {
                    "taskOutputArtifact": {
                      "outputArtifactKey": "test_split",
                      "producerTask": "tabular-stats-and-example-gen"
                    }
                  },
                  "train_split": {
                    "taskOutputArtifact": {
                      "outputArtifactKey": "train_split",
                      "producerTask": "tabular-stats-and-example-gen"
                    }
                  }
                }
              },
              "taskInfo": {
                "name": "generate-analyze-and-transform-data"
              }
            },
            "get-best-hyperparameter-tuning-job-trial": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-get-best-hyperparameter-tuning-job-trial"
              },
              "dependentTasks": [
                "automl-tabular-builtin-algorithm-hyperparameter-tuning-job"
              ],
              "inputs": {
                "parameters": {
                  "gcp_resources": {
                    "taskOutputParameter": {
                      "outputParameterKey": "gcp_resources",
                      "producerTask": "automl-tabular-builtin-algorithm-hyperparameter-tuning-job"
                    }
                  },
                  "instance_schema_uri": {
                    "taskOutputParameter": {
                      "outputParameterKey": "instance_schema_uri",
                      "producerTask": "automl-tabular-builtin-algorithm-hyperparameter-tuning-job"
                    }
                  },
                  "prediction_docker_uri": {
                    "taskOutputParameter": {
                      "outputParameterKey": "prediction_docker_uri_output",
                      "producerTask": "automl-tabular-builtin-algorithm-hyperparameter-tuning-job"
                    }
                  },
                  "prediction_schema_uri": {
                    "taskOutputParameter": {
                      "outputParameterKey": "prediction_schema_uri",
                      "producerTask": "automl-tabular-builtin-algorithm-hyperparameter-tuning-job"
                    }
                  },
                  "study_spec_metrics": {
                    "componentInputParameter": "pipelineparam--study_spec_metrics"
                  },
                  "trials_dir": {
                    "taskOutputParameter": {
                      "outputParameterKey": "trials",
                      "producerTask": "automl-tabular-builtin-algorithm-hyperparameter-tuning-job"
                    }
                  }
                }
              },
              "taskInfo": {
                "name": "get-best-hyperparameter-tuning-job-trial"
              }
            },
            "get-tabnet-study-spec-parameters": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-get-tabnet-study-spec-parameters"
              },
              "dependentTasks": [
                "tabular-stats-and-example-gen"
              ],
              "inputs": {
                "artifacts": {
                  "metadata": {
                    "taskOutputArtifact": {
                      "outputArtifactKey": "metadata",
                      "producerTask": "tabular-stats-and-example-gen"
                    }
                  }
                },
                "parameters": {
                  "max_trial_count": {
                    "componentInputParameter": "pipelineparam--max_trial_count"
                  },
                  "prediction_type": {
                    "componentInputParameter": "pipelineparam--prediction_type"
                  },
                  "study_spec_parameters_override": {
                    "componentInputParameter": "pipelineparam--study_spec_parameters_override"
                  }
                }
              },
              "taskInfo": {
                "name": "get-tabnet-study-spec-parameters"
              }
            },
            "model-upload": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-model-upload"
              },
              "dependentTasks": [
                "automl-tabular-infra-validator",
                "get-best-hyperparameter-tuning-job-trial"
              ],
              "inputs": {
                "artifacts": {
                  "unmanaged_container_model": {
                    "taskOutputArtifact": {
                      "outputArtifactKey": "unmanaged_container_model",
                      "producerTask": "get-best-hyperparameter-tuning-job-trial"
                    }
                  }
                },
                "parameters": {
                  "description": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": ""
                      }
                    }
                  },
                  "display_name": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "automl-tabular-model-upload-{{$.pipeline_job_uuid}}-{{$.pipeline_task_uuid}}"
                      }
                    }
                  },
                  "encryption_spec_key_name": {
                    "componentInputParameter": "pipelineparam--encryption_spec_key_name"
                  },
                  "explanation_metadata": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "{}"
                      }
                    }
                  },
                  "explanation_parameters": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "{}"
                      }
                    }
                  },
                  "labels": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "{}"
                      }
                    }
                  },
                  "location": {
                    "componentInputParameter": "pipelineparam--location"
                  },
                  "project": {
                    "componentInputParameter": "pipelineparam--project"
                  }
                }
              },
              "taskInfo": {
                "name": "model-upload"
              }
            },
            "split-materialized-data": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-split-materialized-data"
              },
              "dependentTasks": [
                "feature-transform-engine"
              ],
              "inputs": {
                "artifacts": {
                  "materialized_data": {
                    "taskOutputArtifact": {
                      "outputArtifactKey": "materialized_data",
                      "producerTask": "feature-transform-engine"
                    }
                  }
                }
              },
              "taskInfo": {
                "name": "split-materialized-data"
              }
            },
            "tabular-stats-and-example-gen": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-tabular-stats-and-example-gen"
              },
              "inputs": {
                "parameters": {
                  "additional_experiments": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": ""
                      }
                    }
                  },
                  "additional_experiments_json": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "{}"
                      }
                    }
                  },
                  "data_source_bigquery_table_path": {
                    "componentInputParameter": "pipelineparam--data_source_bigquery_table_path"
                  },
                  "data_source_csv_filenames": {
                    "componentInputParameter": "pipelineparam--data_source_csv_filenames"
                  },
                  "dataflow_disk_size_gb": {
                    "componentInputParameter": "pipelineparam--stats_and_example_gen_dataflow_disk_size_gb"
                  },
                  "dataflow_machine_type": {
                    "componentInputParameter": "pipelineparam--stats_and_example_gen_dataflow_machine_type"
                  },
                  "dataflow_max_num_workers": {
                    "componentInputParameter": "pipelineparam--stats_and_example_gen_dataflow_max_num_workers"
                  },
                  "dataflow_service_account": {
                    "componentInputParameter": "pipelineparam--dataflow_service_account"
                  },
                  "dataflow_subnetwork": {
                    "componentInputParameter": "pipelineparam--dataflow_subnetwork"
                  },
                  "dataflow_use_public_ips": {
                    "componentInputParameter": "pipelineparam--dataflow_use_public_ips"
                  },
                  "encryption_spec_key_name": {
                    "componentInputParameter": "pipelineparam--encryption_spec_key_name"
                  },
                  "location": {
                    "componentInputParameter": "pipelineparam--location"
                  },
                  "optimization_objective": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": ""
                      }
                    }
                  },
                  "optimization_objective_precision_value": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "-1"
                      }
                    }
                  },
                  "optimization_objective_recall_value": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "-1"
                      }
                    }
                  },
                  "predefined_split_key": {
                    "componentInputParameter": "pipelineparam--predefined_split_key"
                  },
                  "prediction_type": {
                    "componentInputParameter": "pipelineparam--prediction_type"
                  },
                  "project": {
                    "componentInputParameter": "pipelineparam--project"
                  },
                  "request_type": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "COLUMN_STATS_ONLY_NO_TRANSFORM"
                      }
                    }
                  },
                  "root_dir": {
                    "componentInputParameter": "pipelineparam--root_dir"
                  },
                  "run_distillation": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "false"
                      }
                    }
                  },
                  "stratified_split_key": {
                    "componentInputParameter": "pipelineparam--stratified_split_key"
                  },
                  "target_column_name": {
                    "componentInputParameter": "pipelineparam--target_column"
                  },
                  "test_fraction": {
                    "componentInputParameter": "pipelineparam--test_fraction"
                  },
                  "timestamp_split_key": {
                    "componentInputParameter": "pipelineparam--timestamp_split_key"
                  },
                  "training_fraction": {
                    "componentInputParameter": "pipelineparam--training_fraction"
                  },
                  "transformations": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "[]"
                      }
                    }
                  },
                  "transformations_path": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": ""
                      }
                    }
                  },
                  "validation_fraction": {
                    "componentInputParameter": "pipelineparam--validation_fraction"
                  },
                  "weight_column_name": {
                    "componentInputParameter": "pipelineparam--weight_column"
                  }
                }
              },
              "taskInfo": {
                "name": "tabular-stats-and-example-gen"
              }
            },
            "transform-configuration-planner": {
              "cachingOptions": {
                "enableCache": true
              },
              "componentRef": {
                "name": "comp-transform-configuration-planner"
              },
              "dependentTasks": [
                "generate-analyze-and-transform-data",
                "tabular-stats-and-example-gen"
              ],
              "inputs": {
                "artifacts": {
                  "analyze_data": {
                    "taskOutputArtifact": {
                      "outputArtifactKey": "analyze_data",
                      "producerTask": "generate-analyze-and-transform-data"
                    }
                  },
                  "dataset_stats": {
                    "taskOutputArtifact": {
                      "outputArtifactKey": "dataset_stats",
                      "producerTask": "tabular-stats-and-example-gen"
                    }
                  }
                },
                "parameters": {
                  "encryption_spec_key_name": {
                    "componentInputParameter": "pipelineparam--encryption_spec_key_name"
                  },
                  "is_distillation": {
                    "runtimeValue": {
                      "constantValue": {
                        "stringValue": "false"
                      }
                    }
                  },
                  "location": {
                    "componentInputParameter": "pipelineparam--location"
                  },
                  "prediction_type": {
                    "componentInputParameter": "pipelineparam--prediction_type"
                  },
                  "project": {
                    "componentInputParameter": "pipelineparam--project"
                  },
                  "root_dir": {
                    "componentInputParameter": "pipelineparam--root_dir"
                  },
                  "target_column": {
                    "componentInputParameter": "pipelineparam--target_column"
                  },
                  "transform_config": {
                    "componentInputParameter": "pipelineparam--transform_config"
                  },
                  "weight_column": {
                    "componentInputParameter": "pipelineparam--weight_column"
                  }
                }
              },
              "taskInfo": {
                "name": "transform-configuration-planner"
              }
            }
          }
        },
        "inputDefinitions": {
          "parameters": {
            "pipelineparam--data_source_bigquery_table_path": {
              "type": "STRING"
            },
            "pipelineparam--data_source_csv_filenames": {
              "type": "STRING"
            },
            "pipelineparam--dataflow_service_account": {
              "type": "STRING"
            },
            "pipelineparam--dataflow_subnetwork": {
              "type": "STRING"
            },
            "pipelineparam--dataflow_use_public_ips": {
              "type": "STRING"
            },
            "pipelineparam--enable_profiler": {
              "type": "STRING"
            },
            "pipelineparam--encryption_spec_key_name": {
              "type": "STRING"
            },
            "pipelineparam--eval_frequency_secs": {
              "type": "INT"
            },
            "pipelineparam--eval_steps": {
              "type": "INT"
            },
            "pipelineparam--evaluation_batch_predict_machine_type": {
              "type": "STRING"
            },
            "pipelineparam--evaluation_batch_predict_max_replica_count": {
              "type": "INT"
            },
            "pipelineparam--evaluation_batch_predict_starting_replica_count": {
              "type": "INT"
            },
            "pipelineparam--evaluation_dataflow_disk_size_gb": {
              "type": "INT"
            },
            "pipelineparam--evaluation_dataflow_machine_type": {
              "type": "STRING"
            },
            "pipelineparam--evaluation_dataflow_max_num_workers": {
              "type": "INT"
            },
            "pipelineparam--location": {
              "type": "STRING"
            },
            "pipelineparam--max_failed_trial_count": {
              "type": "INT"
            },
            "pipelineparam--max_trial_count": {
              "type": "INT"
            },
            "pipelineparam--parallel_trial_count": {
              "type": "INT"
            },
            "pipelineparam--predefined_split_key": {
              "type": "STRING"
            },
            "pipelineparam--prediction_type": {
              "type": "STRING"
            },
            "pipelineparam--project": {
              "type": "STRING"
            },
            "pipelineparam--root_dir": {
              "type": "STRING"
            },
            "pipelineparam--run_evaluation": {
              "type": "STRING"
            },
            "pipelineparam--seed": {
              "type": "INT"
            },
            "pipelineparam--stats_and_example_gen_dataflow_disk_size_gb": {
              "type": "INT"
            },
            "pipelineparam--stats_and_example_gen_dataflow_machine_type": {
              "type": "STRING"
            },
            "pipelineparam--stats_and_example_gen_dataflow_max_num_workers": {
              "type": "INT"
            },
            "pipelineparam--stratified_split_key": {
              "type": "STRING"
            },
            "pipelineparam--study_spec_algorithm": {
              "type": "STRING"
            },
            "pipelineparam--study_spec_measurement_selection_type": {
              "type": "STRING"
            },
            "pipelineparam--study_spec_metrics": {
              "type": "STRING"
            },
            "pipelineparam--study_spec_parameters_override": {
              "type": "STRING"
            },
            "pipelineparam--tabnet": {
              "type": "STRING"
            },
            "pipelineparam--target_column": {
              "type": "STRING"
            },
            "pipelineparam--test_fraction": {
              "type": "DOUBLE"
            },
            "pipelineparam--timestamp_split_key": {
              "type": "STRING"
            },
            "pipelineparam--training_fraction": {
              "type": "DOUBLE"
            },
            "pipelineparam--training_machine_spec": {
              "type": "STRING"
            },
            "pipelineparam--training_replica_count": {
              "type": "INT"
            },
            "pipelineparam--transform_config": {
              "type": "STRING"
            },
            "pipelineparam--transform_dataflow_disk_size_gb": {
              "type": "INT"
            },
            "pipelineparam--transform_dataflow_machine_type": {
              "type": "STRING"
            },
            "pipelineparam--transform_dataflow_max_num_workers": {
              "type": "INT"
            },
            "pipelineparam--validation_fraction": {
              "type": "DOUBLE"
            },
            "pipelineparam--weight_column": {
              "type": "STRING"
            }
          }
        },
        "outputDefinitions": {
          "artifacts": {
            "model-evaluation-evaluation_metrics": {
              "artifactType": {
                "schemaTitle": "system.Metrics",
                "schemaVersion": "0.0.1"
              }
            }
          }
        }
      },
      "comp-feature-transform-engine": {
        "executorLabel": "exec-feature-transform-engine",
        "inputDefinitions": {
          "artifacts": {
            "analyze_data": {
              "artifactType": {
                "schemaTitle": "system.Dataset",
                "schemaVersion": "0.0.1"
              }
            },
            "transform_data": {
              "artifactType": {
                "schemaTitle": "system.Dataset",
                "schemaVersion": "0.0.1"
              }
            }
          },
          "parameters": {
            "dataflow_disk_size_gb": {
              "type": "INT"
            },
            "dataflow_machine_type": {
              "type": "STRING"
            },
            "dataflow_max_num_workers": {
              "type": "INT"
            },
            "dataflow_subnetwork": {
              "type": "STRING"
            },
            "dataflow_use_public_ips": {
              "type": "STRING"
            },
            "encryption_spec_key_name": {
              "type": "STRING"
            },
            "location": {
              "type": "STRING"
            },
            "project": {
              "type": "STRING"
            },
            "root_dir": {
              "type": "STRING"
            },
            "transform_config": {
              "type": "STRING"
            }
          }
        },
        "outputDefinitions": {
          "artifacts": {
            "materialized_data": {
              "artifactType": {
                "schemaTitle": "system.Dataset",
                "schemaVersion": "0.0.1"
              }
            },
            "transform_output": {
              "artifactType": {
                "schemaTitle": "system.Artifact",
                "schemaVersion": "0.0.1"
              }
            }
          },
          "parameters": {
            "gcp_resources": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-generate-analyze-and-transform-data": {
        "executorLabel": "exec-generate-analyze-and-transform-data",
        "inputDefinitions": {
          "artifacts": {
            "eval_split": {
              "artifactType": {
                "schemaTitle": "system.Dataset",
                "schemaVersion": "0.0.1"
              }
            },
            "test_split": {
              "artifactType": {
                "schemaTitle": "system.Dataset",
                "schemaVersion": "0.0.1"
              }
            },
            "train_split": {
              "artifactType": {
                "schemaTitle": "system.Dataset",
                "schemaVersion": "0.0.1"
              }
            }
          }
        },
        "outputDefinitions": {
          "artifacts": {
            "analyze_data": {
              "artifactType": {
                "schemaTitle": "system.Dataset",
                "schemaVersion": "0.0.1"
              }
            },
            "transform_data": {
              "artifactType": {
                "schemaTitle": "system.Dataset",
                "schemaVersion": "0.0.1"
              }
            }
          }
        }
      },
      "comp-get-best-hyperparameter-tuning-job-trial": {
        "executorLabel": "exec-get-best-hyperparameter-tuning-job-trial",
        "inputDefinitions": {
          "parameters": {
            "gcp_resources": {
              "type": "STRING"
            },
            "instance_schema_uri": {
              "type": "STRING"
            },
            "prediction_docker_uri": {
              "type": "STRING"
            },
            "prediction_schema_uri": {
              "type": "STRING"
            },
            "study_spec_metrics": {
              "type": "STRING"
            },
            "trials_dir": {
              "type": "STRING"
            }
          }
        },
        "outputDefinitions": {
          "artifacts": {
            "unmanaged_container_model": {
              "artifactType": {
                "schemaTitle": "system.Artifact",
                "schemaVersion": "0.0.1"
              }
            }
          }
        }
      },
      "comp-get-tabnet-study-spec-parameters": {
        "executorLabel": "exec-get-tabnet-study-spec-parameters",
        "inputDefinitions": {
          "artifacts": {
            "metadata": {
              "artifactType": {
                "schemaTitle": "system.Artifact",
                "schemaVersion": "0.0.1"
              }
            }
          },
          "parameters": {
            "max_trial_count": {
              "type": "INT"
            },
            "prediction_type": {
              "type": "STRING"
            },
            "study_spec_parameters_override": {
              "type": "STRING"
            }
          }
        },
        "outputDefinitions": {
          "parameters": {
            "Output": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-model-batch-predict": {
        "executorLabel": "exec-model-batch-predict",
        "inputDefinitions": {
          "artifacts": {
            "unmanaged_container_model": {
              "artifactType": {
                "schemaTitle": "google.UnmanagedContainerModel",
                "schemaVersion": "0.0.1"
              }
            }
          },
          "parameters": {
            "accelerator_count": {
              "type": "INT"
            },
            "accelerator_type": {
              "type": "STRING"
            },
            "bigquery_destination_output_uri": {
              "type": "STRING"
            },
            "bigquery_source_input_uri": {
              "type": "STRING"
            },
            "encryption_spec_key_name": {
              "type": "STRING"
            },
            "explanation_metadata": {
              "type": "STRING"
            },
            "explanation_parameters": {
              "type": "STRING"
            },
            "gcs_destination_output_uri_prefix": {
              "type": "STRING"
            },
            "gcs_source_uris": {
              "type": "STRING"
            },
            "generate_explanation": {
              "type": "STRING"
            },
            "instances_format": {
              "type": "STRING"
            },
            "job_display_name": {
              "type": "STRING"
            },
            "labels": {
              "type": "STRING"
            },
            "location": {
              "type": "STRING"
            },
            "machine_type": {
              "type": "STRING"
            },
            "manual_batch_tuning_parameters_batch_size": {
              "type": "INT"
            },
            "max_replica_count": {
              "type": "INT"
            },
            "model_parameters": {
              "type": "STRING"
            },
            "predictions_format": {
              "type": "STRING"
            },
            "project": {
              "type": "STRING"
            },
            "starting_replica_count": {
              "type": "INT"
            }
          }
        },
        "outputDefinitions": {
          "artifacts": {
            "batchpredictionjob": {
              "artifactType": {
                "schemaTitle": "google.VertexBatchPredictionJob",
                "schemaVersion": "0.0.1"
              }
            },
            "bigquery_output_table": {
              "artifactType": {
                "schemaTitle": "google.BQTable",
                "schemaVersion": "0.0.1"
              }
            },
            "gcs_output_directory": {
              "artifactType": {
                "schemaTitle": "system.Artifact",
                "schemaVersion": "0.0.1"
              }
            }
          },
          "parameters": {
            "gcp_resources": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-model-evaluation": {
        "executorLabel": "exec-model-evaluation",
        "inputDefinitions": {
          "artifacts": {
            "batch_prediction_job": {
              "artifactType": {
                "schemaTitle": "google.VertexBatchPredictionJob",
                "schemaVersion": "0.0.1"
              }
            }
          },
          "parameters": {
            "class_names": {
              "type": "STRING"
            },
            "classification_type": {
              "type": "STRING"
            },
            "dataflow_disk_size": {
              "type": "INT"
            },
            "dataflow_machine_type": {
              "type": "STRING"
            },
            "dataflow_max_workers_num": {
              "type": "INT"
            },
            "dataflow_service_account": {
              "type": "STRING"
            },
            "dataflow_subnetwork": {
              "type": "STRING"
            },
            "dataflow_use_public_ips": {
              "type": "STRING"
            },
            "dataflow_workers_num": {
              "type": "INT"
            },
            "encryption_spec_key_name": {
              "type": "STRING"
            },
            "example_weight_column": {
              "type": "STRING"
            },
            "generate_feature_attribution": {
              "type": "STRING"
            },
            "ground_truth_column": {
              "type": "STRING"
            },
            "ground_truth_format": {
              "type": "STRING"
            },
            "ground_truth_gcs_source": {
              "type": "STRING"
            },
            "key_columns": {
              "type": "STRING"
            },
            "location": {
              "type": "STRING"
            },
            "positive_classes": {
              "type": "STRING"
            },
            "prediction_id_column": {
              "type": "STRING"
            },
            "prediction_label_column": {
              "type": "STRING"
            },
            "prediction_score_column": {
              "type": "STRING"
            },
            "predictions_format": {
              "type": "STRING"
            },
            "problem_type": {
              "type": "STRING"
            },
            "project": {
              "type": "STRING"
            },
            "root_dir": {
              "type": "STRING"
            }
          }
        },
        "outputDefinitions": {
          "artifacts": {
            "evaluation_metrics": {
              "artifactType": {
                "schemaTitle": "system.Metrics",
                "schemaVersion": "0.0.1"
              }
            }
          },
          "parameters": {
            "gcp_resources": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-model-upload": {
        "executorLabel": "exec-model-upload",
        "inputDefinitions": {
          "artifacts": {
            "unmanaged_container_model": {
              "artifactType": {
                "schemaTitle": "google.UnmanagedContainerModel",
                "schemaVersion": "0.0.1"
              }
            }
          },
          "parameters": {
            "description": {
              "type": "STRING"
            },
            "display_name": {
              "type": "STRING"
            },
            "encryption_spec_key_name": {
              "type": "STRING"
            },
            "explanation_metadata": {
              "type": "STRING"
            },
            "explanation_parameters": {
              "type": "STRING"
            },
            "labels": {
              "type": "STRING"
            },
            "location": {
              "type": "STRING"
            },
            "project": {
              "type": "STRING"
            }
          }
        },
        "outputDefinitions": {
          "artifacts": {
            "model": {
              "artifactType": {
                "schemaTitle": "google.VertexModel",
                "schemaVersion": "0.0.1"
              }
            }
          },
          "parameters": {
            "gcp_resources": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-split-materialized-data": {
        "executorLabel": "exec-split-materialized-data",
        "inputDefinitions": {
          "artifacts": {
            "materialized_data": {
              "artifactType": {
                "schemaTitle": "system.Dataset",
                "schemaVersion": "0.0.1"
              }
            }
          }
        },
        "outputDefinitions": {
          "artifacts": {
            "materialized_eval_split": {
              "artifactType": {
                "schemaTitle": "system.Artifact",
                "schemaVersion": "0.0.1"
              }
            },
            "materialized_test_split": {
              "artifactType": {
                "schemaTitle": "system.Artifact",
                "schemaVersion": "0.0.1"
              }
            },
            "materialized_train_split": {
              "artifactType": {
                "schemaTitle": "system.Artifact",
                "schemaVersion": "0.0.1"
              }
            }
          }
        }
      },
      "comp-tabular-stats-and-example-gen": {
        "executorLabel": "exec-tabular-stats-and-example-gen",
        "inputDefinitions": {
          "parameters": {
            "additional_experiments": {
              "type": "STRING"
            },
            "additional_experiments_json": {
              "type": "STRING"
            },
            "data_source_bigquery_table_path": {
              "type": "STRING"
            },
            "data_source_csv_filenames": {
              "type": "STRING"
            },
            "dataflow_disk_size_gb": {
              "type": "INT"
            },
            "dataflow_machine_type": {
              "type": "STRING"
            },
            "dataflow_max_num_workers": {
              "type": "INT"
            },
            "dataflow_service_account": {
              "type": "STRING"
            },
            "dataflow_subnetwork": {
              "type": "STRING"
            },
            "dataflow_use_public_ips": {
              "type": "STRING"
            },
            "encryption_spec_key_name": {
              "type": "STRING"
            },
            "location": {
              "type": "STRING"
            },
            "optimization_objective": {
              "type": "STRING"
            },
            "optimization_objective_precision_value": {
              "type": "DOUBLE"
            },
            "optimization_objective_recall_value": {
              "type": "DOUBLE"
            },
            "predefined_split_key": {
              "type": "STRING"
            },
            "prediction_type": {
              "type": "STRING"
            },
            "project": {
              "type": "STRING"
            },
            "request_type": {
              "type": "STRING"
            },
            "root_dir": {
              "type": "STRING"
            },
            "run_distillation": {
              "type": "STRING"
            },
            "stratified_split_key": {
              "type": "STRING"
            },
            "target_column_name": {
              "type": "STRING"
            },
            "test_fraction": {
              "type": "DOUBLE"
            },
            "timestamp_split_key": {
              "type": "STRING"
            },
            "training_fraction": {
              "type": "DOUBLE"
            },
            "transformations": {
              "type": "STRING"
            },
            "transformations_path": {
              "type": "STRING"
            },
            "validation_fraction": {
              "type": "DOUBLE"
            },
            "weight_column_name": {
              "type": "STRING"
            }
          }
        },
        "outputDefinitions": {
          "artifacts": {
            "dataset_schema": {
              "artifactType": {
                "schemaTitle": "system.Artifact",
                "schemaVersion": "0.0.1"
              }
            },
            "dataset_stats": {
              "artifactType": {
                "schemaTitle": "system.Artifact",
                "schemaVersion": "0.0.1"
              }
            },
            "eval_split": {
              "artifactType": {
                "schemaTitle": "system.Dataset",
                "schemaVersion": "0.0.1"
              }
            },
            "instance_baseline": {
              "artifactType": {
                "schemaTitle": "system.Artifact",
                "schemaVersion": "0.0.1"
              }
            },
            "metadata": {
              "artifactType": {
                "schemaTitle": "system.Artifact",
                "schemaVersion": "0.0.1"
              }
            },
            "test_split": {
              "artifactType": {
                "schemaTitle": "system.Dataset",
                "schemaVersion": "0.0.1"
              }
            },
            "train_split": {
              "artifactType": {
                "schemaTitle": "system.Dataset",
                "schemaVersion": "0.0.1"
              }
            }
          },
          "parameters": {
            "downsampled_test_split_json": {
              "type": "STRING"
            },
            "gcp_resources": {
              "type": "STRING"
            },
            "test_split_json": {
              "type": "STRING"
            }
          }
        }
      },
      "comp-transform-configuration-planner": {
        "executorLabel": "exec-transform-configuration-planner",
        "inputDefinitions": {
          "artifacts": {
            "analyze_data": {
              "artifactType": {
                "schemaTitle": "system.Dataset",
                "schemaVersion": "0.0.1"
              }
            },
            "dataset_stats": {
              "artifactType": {
                "schemaTitle": "system.Artifact",
                "schemaVersion": "0.0.1"
              }
            }
          },
          "parameters": {
            "encryption_spec_key_name": {
              "type": "STRING"
            },
            "is_distillation": {
              "type": "STRING"
            },
            "location": {
              "type": "STRING"
            },
            "prediction_type": {
              "type": "STRING"
            },
            "project": {
              "type": "STRING"
            },
            "root_dir": {
              "type": "STRING"
            },
            "target_column": {
              "type": "STRING"
            },
            "transform_config": {
              "type": "STRING"
            },
            "weight_column": {
              "type": "STRING"
            }
          }
        },
        "outputDefinitions": {
          "artifacts": {
            "instance_baseline": {
              "artifactType": {
                "schemaTitle": "system.Artifact",
                "schemaVersion": "0.0.1"
              }
            },
            "training_schema": {
              "artifactType": {
                "schemaTitle": "system.Artifact",
                "schemaVersion": "0.0.1"
              }
            }
          },
          "parameters": {
            "fte_transform_configuration_path": {
              "type": "STRING"
            },
            "gcp_resources": {
              "type": "STRING"
            }
          }
        }
      }
    },
    "deploymentSpec": {
      "executors": {
        "exec-automl-tabular-builtin-algorithm-hyperparameter-tuning-job": {
          "container": {
            "args": [
              "--type",
              "HyperparameterTuningJob",
              "--project",
              "{{$.inputs.parameters['project']}}",
              "--location",
              "{{$.inputs.parameters['location']}}",
              "--gcp_resources",
              "{{$.outputs.parameters['gcp_resources'].output_file}}",
              "--payload",
              "{\"display_name\": \"automl-tabular-builtin-algorithm-hyperparameter-tuning-job-{{$.pipeline_job_uuid}}-{{$.pipeline_task_uuid}}\", \"encryption_spec\": {\"kms_key_name\":\"{{$.inputs.parameters['encryption_spec_key_name']}}\"}, \"study_spec\": {\"metrics\": {{$.inputs.parameters['study_spec_metrics']}}, \"parameters\": {{$.inputs.parameters['study_spec_parameters_override']}}, \"algorithm\": \"{{$.inputs.parameters['study_spec_algorithm']}}\", \"measurement_selection_type\": \"{{$.inputs.parameters['study_spec_measurement_selection_type']}}\"}, \"max_trial_count\": {{$.inputs.parameters['max_trial_count']}}, \"parallel_trial_count\": {{$.inputs.parameters['parallel_trial_count']}}, \"max_failed_trial_count\": {{$.inputs.parameters['max_failed_trial_count']}}, \"trial_job_spec\": {\"worker_pool_specs\": [{\"replica_count\":\"{{$.inputs.parameters['replica_count']}}\", \"machine_spec\": {{$.inputs.parameters['machine_spec']}}, \"container_spec\": {\"image_uri\":\"us-docker.pkg.dev/vertex-ai-restricted/automl-tabular/tabnet-training:20220629_0725_RC00\", \"args\": [\"--target_column={{$.inputs.parameters['target_column']}}\", \"--weight_column={{$.inputs.parameters['weight_column']}}\", \"--model_type={{$.inputs.parameters['prediction_type']}}\", \"--prediction_docker_uri=us-docker.pkg.dev/vertex-ai/automl-tabular/prediction-server:20220629_0725_RC00\", \"--prediction_docker_uri_artifact_path={{$.outputs.parameters['prediction_docker_uri_output'].output_file}}\", \"--baseline_path={{$.inputs.artifacts['instance_baseline'].uri}}\", \"--metadata_path={{$.inputs.artifacts['metadata'].uri}}\", \"--transform_output_path={{$.inputs.artifacts['transform_output'].uri}}\", \"--training_schema_path={{$.inputs.artifacts['training_schema_uri'].uri}}\", \"--instance_schema_path={{$.outputs.parameters['instance_schema_uri'].output_file}}\", \"--prediction_schema_path={{$.outputs.parameters['prediction_schema_uri'].output_file}}\", \"--trials_path={{$.outputs.parameters['trials'].output_file}}\", \"--job_dir={{$.inputs.parameters['root_dir']}}/{{$.pipeline_job_uuid}}/{{$.pipeline_task_uuid}}/train\", \"--training_data_path={{$.inputs.artifacts['materialized_train_split'].uri}}\", \"--validation_data_path={{$.inputs.artifacts['materialized_eval_split'].uri}}\", \"--test_data_path={{$.inputs.artifacts['materialized_test_split'].uri}}\", \"--enable_profiler={{$.inputs.parameters['enable_profiler']}}\", \"--seed={{$.inputs.parameters['seed']}}\", \"--eval_steps={{$.inputs.parameters['eval_steps']}}\", \"--eval_frequency_secs={{$.inputs.parameters['eval_frequency_secs']}}\"]}}]}}"
            ],
            "command": [
              "python3",
              "-u",
              "-m",
              "google_cloud_pipeline_components.container.v1.gcp_launcher.launcher"
            ],
            "image": "gcr.io/ml-pipeline/google-cloud-pipeline-components:1.0.10"
          }
        },
        "exec-automl-tabular-finalizer": {
          "container": {
            "args": [
              "--type",
              "CustomJob",
              "--project",
              "{{$.inputs.parameters['project']}}",
              "--location",
              "{{$.inputs.parameters['location']}}",
              "--gcp_resources",
              "{{$.outputs.parameters['gcp_resources'].output_file}}",
              "--payload",
              "{\"display_name\": \"automl-tabular-finalizer-{{$.pipeline_job_uuid}}-{{$.pipeline_task_uuid}}\", \"encryption_spec\": {\"kms_key_name\":\"{{$.inputs.parameters['encryption_spec_key_name']}}\"}, \"job_spec\": {\"worker_pool_specs\": [{\"replica_count\": 1, \"machine_spec\": {\"machine_type\": \"n1-standard-8\"}, \"container_spec\": {\"image_uri\":\"us-docker.pkg.dev/vertex-ai-restricted/automl-tabular/training:20220629_0725_RC00\", \"args\": [\"cancel_l2l_tuner\", \"--error_file_path={{$.inputs.parameters['root_dir']}}/{{$.pipeline_job_uuid}}/{{$.pipeline_task_uuid}}/error.pb\", \"--cleanup_lro_job_infos={{$.inputs.parameters['root_dir']}}/{{$.pipeline_job_uuid}}/lro\"]}}]}}"
            ],
            "command": [
              "python3",
              "-u",
              "-m",
              "google_cloud_pipeline_components.container.v1.gcp_launcher.launcher"
            ],
            "image": "gcr.io/ml-pipeline/google-cloud-pipeline-components:1.0.10"
          }
        },
        "exec-automl-tabular-infra-validator": {
          "container": {
            "args": [
              "--executor_input",
              "{{$}}"
            ],
            "image": "us-docker.pkg.dev/vertex-ai/automl-tabular/prediction-server:20220629_0725_RC00",
            "resources": {
              "cpuLimit": 8.0,
              "memoryLimit": 52.0
            }
          }
        },
        "exec-bool-identity": {
          "container": {
            "args": [
              "--value",
              "{{$.inputs.parameters['value']}}",
              "----output-paths",
              "{{$.outputs.parameters['Output'].output_file}}"
            ],
            "command": [
              "sh",
              "-ec",
              "program_path=$(mktemp)\nprintf \"%s\" \"$0\" > \"$program_path\"\npython3 -u \"$program_path\" \"$@\"\n",
              "def _bool_identity(value):\n    \"\"\"Returns boolean value.\n\n    Args:\n      value: Boolean value to return\n\n    Returns:\n      Boolean value.\n    \"\"\"\n    return \"true\" if value else \"false\"\n\ndef _deserialize_bool(s) -> bool:\n    from distutils.util import strtobool\n    return strtobool(s) == 1\n\ndef _serialize_str(str_value: str) -> str:\n    if not isinstance(str_value, str):\n        raise TypeError('Value \"{}\" has type \"{}\" instead of str.'.format(\n            str(str_value), str(type(str_value))))\n    return str_value\n\nimport argparse\n_parser = argparse.ArgumentParser(prog='Bool identity', description='Returns boolean value.')\n_parser.add_argument(\"--value\", dest=\"value\", type=_deserialize_bool, required=True, default=argparse.SUPPRESS)\n_parser.add_argument(\"----output-paths\", dest=\"_output_paths\", type=str, nargs=1)\n_parsed_args = vars(_parser.parse_args())\n_output_files = _parsed_args.pop(\"_output_paths\", [])\n\n_outputs = _bool_identity(**_parsed_args)\n\n_outputs = [_outputs]\n\n_output_serializers = [\n    _serialize_str,\n\n]\n\nimport os\nfor idx, output_file in enumerate(_output_files):\n    try:\n        os.makedirs(os.path.dirname(output_file))\n    except OSError:\n        pass\n    with open(output_file, 'w') as f:\n        f.write(_output_serializers[idx](_outputs[idx]))\n"
            ],
            "image": "python:3.7-slim"
          }
        },
        "exec-feature-transform-engine": {
          "container": {
            "args": [
              "feature_transform_engine",
              "--transform_output_artifact_path",
              "{{$.outputs.artifacts['transform_output'].uri}}",
              "--transform_output_path",
              "{{$.inputs.parameters['root_dir']}}/{{$.pipeline_job_uuid}}/{{$.pipeline_task_uuid}}/transform",
              "--materialized_data_path",
              "{{$.inputs.parameters['root_dir']}}/{{$.pipeline_job_uuid}}/{{$.pipeline_task_uuid}}/materialized_data",
              "--materialized_data_artifact_path",
              "{{$.outputs.artifacts['materialized_data'].uri}}",
              "--transform_config_path",
              "{{$.inputs.parameters['transform_config']}}",
              "--analyze_data_path",
              "{{$.inputs.artifacts['analyze_data'].uri}}",
              "--transform_data_path",
              "{{$.inputs.artifacts['transform_data'].uri}}",
              "--job_name",
              "feature-transform-engine-{{$.pipeline_job_uuid}}-{{$.pipeline_task_uuid}}",
              "--dataflow_project",
              "{{$.inputs.parameters['project']}}",
              "--dataflow_staging_dir",
              "{{$.inputs.parameters['root_dir']}}/{{$.pipeline_job_uuid}}/{{$.pipeline_task_uuid}}/dataflow_staging",
              "--dataflow_tmp_dir",
              "{{$.inputs.parameters['root_dir']}}/{{$.pipeline_job_uuid}}/{{$.pipeline_task_uuid}}/dataflow_tmp",
              "--dataflow_max_num_workers",
              "{{$.inputs.parameters['dataflow_max_num_workers']}}",
              "--dataflow_machine_type",
              "{{$.inputs.parameters['dataflow_machine_type']}}",
              "--dataflow_worker_container_image",
              "us-docker.pkg.dev/vertex-ai/automl-tabular/dataflow-worker:20220629_0725_RC00",
              "--dataflow_disk_size_gb",
              "{{$.inputs.parameters['dataflow_disk_size_gb']}}",
              "--dataflow_subnetwork_fully_qualified",
              "{{$.inputs.parameters['dataflow_subnetwork']}}",
              "--dataflow_use_public_ips",
              "{{$.inputs.parameters['dataflow_use_public_ips']}}",
              "--dataflow_kms_key",
              "{{$.inputs.parameters['encryption_spec_key_name']}}"
            ],
            "image": "us-docker.pkg.dev/vertex-ai/automl-tabular/feature-transform-engine:20220629_0725_RC00",
            "resources": {
              "cpuLimit": 8.0,
              "memoryLimit": 30.0
            }
          }
        },
        "exec-generate-analyze-and-transform-data": {
          "container": {
            "args": [
              "--executor_input",
              "{{$}}",
              "--function_to_execute",
              "_generate_analyze_and_transform_data"
            ],
            "command": [
              "sh",
              "-ec",
              "program_path=$(mktemp -d)\nprintf \"%s\" \"$0\" > \"$program_path/ephemeral_component.py\"\npython3 -m kfp.v2.components.executor_main                         --component_module_path                         \"$program_path/ephemeral_component.py\"                         \"$@\"\n",
              "\nimport kfp\nfrom kfp.v2 import dsl\nfrom kfp.v2.dsl import *\nfrom typing import *\n\ndef _generate_analyze_and_transform_data(\n    train_split: Input[Dataset],\n    eval_split: Input[Dataset],\n    test_split: Input[Dataset],\n    analyze_data: Output[Dataset],\n    transform_data: Output[Dataset],\n):\n  \"\"\"Generate anayze_data and transform_data for FTE.\n\n  Necessary adapter between stats gen and FTE pipeline.\n\n  Args:\n    train_split: Train split dataset output by stats gen component.\n    eval_split: Eval split dataset output by stats gen component.\n    test_split: Test split dataset output by stats gen component.\n    analyze_data: Analyze data for FTE.\n    transform_data: Transform data for FTE.\n  \"\"\"\n  # pylint: disable=g-import-not-at-top,import-outside-toplevel,redefined-outer-name,reimported\n  import json\n  # pylint: enable=g-import-not-at-top,import-outside-toplevel,redefined-outer-name,reimported\n\n  with open(train_split.path, 'r') as f:\n    train_datasource_json = json.load(f)\n\n  with open(eval_split.path, 'r') as f:\n    eval_datasource_json = json.load(f)\n\n  with open(test_split.path, 'r') as f:\n    test_datasource_json = json.load(f)\n\n  dataset_schema_str = train_datasource_json['tf_record_data_source']['schema']\n  coder = train_datasource_json['tf_record_data_source']['coder']\n\n  analyze_data_file_patterns = []\n  analyze_data_file_patterns.extend(\n      train_datasource_json['tf_record_data_source']['file_patterns'])\n\n  analyze_data_json = {\n      'tf_record_data_source': {\n          'file_patterns': analyze_data_file_patterns,\n          'coder': coder,\n          'schema': dataset_schema_str\n      }\n  }\n\n  transform_data_file_patterns = []\n  transform_data_file_patterns.extend(\n      train_datasource_json['tf_record_data_source']['file_patterns'])\n  transform_data_file_patterns.extend(\n      eval_datasource_json['tf_record_data_source']['file_patterns'])\n  transform_data_file_patterns.extend(\n      test_datasource_json['tf_record_data_source']['file_patterns'])\n\n  transform_data_json = {\n      'tf_record_data_source': {\n          'file_patterns': transform_data_file_patterns,\n          'coder': coder,\n          'schema': dataset_schema_str\n      }\n  }\n\n  with open(analyze_data.path, 'w') as f:\n    json.dump(analyze_data_json, f)\n\n  with open(transform_data.path, 'w') as f:\n    json.dump(transform_data_json, f)\n\n"
            ],
            "image": "us-docker.pkg.dev/vertex-ai/automl-tabular/dataflow-worker:20220629_0725_RC00"
          }
        },
        "exec-get-best-hyperparameter-tuning-job-trial": {
          "container": {
            "args": [
              "--executor_input",
              "{{$}}",
              "--function_to_execute",
              "_get_best_hyperparameter_tuning_job_trial"
            ],
            "command": [
              "sh",
              "-ec",
              "program_path=$(mktemp -d)\nprintf \"%s\" \"$0\" > \"$program_path/ephemeral_component.py\"\npython3 -m kfp.v2.components.executor_main                         --component_module_path                         \"$program_path/ephemeral_component.py\"                         \"$@\"\n",
              "\nimport kfp\nfrom kfp.v2 import dsl\nfrom kfp.v2.dsl import *\nfrom typing import *\n\ndef _get_best_hyperparameter_tuning_job_trial(\n    gcp_resources: str,\n    study_spec_metrics: list,\n    trials_dir: str,\n    instance_schema_uri: str,\n    prediction_schema_uri: str,\n    prediction_docker_uri: str,\n    unmanaged_container_model: dsl.Output[dsl.Artifact],\n):\n    \"\"\"Gets best HyperparameterTuningJob trial.\n\n    Args:\n      gcp_resources: Proto tracking the hyperparameter tuning job.\n      study_spec_metrics: List of dictionaries representing metrics to optimize.\n        The dictionary contains the metric_id, which is reported by the training\n        job, ands the optimization goal of the metric. One of \"minimize\" or\n        \"maximize\".\n      trials_dir: The path to the hyperparameter tuning trials.\n      instance_schema_uri: The instance schema uri.\n      prediction_schema_uri: The prediction schema_uri.\n      prediction_docker_uri: The prediction docker container uri\n      unmanaged_container_model: The unmanaged model.\n\n    Raises:\n      RuntimeError: If there are multiple metrics.\n    \"\"\"\n\n    import os\n    from google.api_core.retry import Retry\n    from google.cloud import aiplatform_v1beta1 as aip\n    from google_cloud_pipeline_components.proto.gcp_resources_pb2 import GcpResources\n    from google.protobuf import json_format\n\n    if len(study_spec_metrics) > 1:\n        raise RuntimeError(\n            \"Unable to determine best trial for multi-objective\"\n            \" hyperparameter tuning.\"\n        )\n\n    api_endpoint_suffix = \"-aiplatform.googleapis.com\"\n    gcp_resources_proto = json_format.Parse(gcp_resources, GcpResources())\n    gcp_resources_split = gcp_resources_proto.resources[0].resource_uri.partition(\n        \"projects\"\n    )\n    resource_name = gcp_resources_split[1] + gcp_resources_split[2]\n    prefix_str = gcp_resources_split[0]\n    prefix_str = prefix_str[: prefix_str.find(api_endpoint_suffix)]\n    api_endpoint = prefix_str[(prefix_str.rfind(\"//\") + 2) :] + api_endpoint_suffix\n\n    job_client = aip.JobServiceClient(client_options={\"api_endpoint\": api_endpoint})\n    response = job_client.get_hyperparameter_tuning_job(\n        name=resource_name,\n        retry=Retry(initial=10.0, maximum=60.0, deadline=10.0 * 60.0),\n    )\n\n    # Get best trial\n    trials_list = []\n    for trial in response.trials:\n        trials_list.append(\n            {\n                \"id\": trial.id,\n                \"objective_value\": trial.final_measurement.metrics[0].value,\n            }\n        )\n\n    best_trial = None\n    goal = study_spec_metrics[0][\"goal\"]\n    best_fn = None\n    if goal == \"MAXIMIZE\":\n        best_fn = max\n    elif goal == \"MINIMIZE\":\n        best_fn = min\n    best_trial = best_fn(trials_list, key=lambda trial: trial[\"objective_value\"])\n\n    # Build unmanaged_container_model\n    unmanaged_container_model.metadata[\"containerSpec\"] = {\n        \"imageUri\": prediction_docker_uri\n    }\n    unmanaged_container_model.metadata[\"predictSchemata\"] = {\n        \"instanceSchemaUri\": instance_schema_uri,\n        \"predictionSchemaUri\": prediction_schema_uri,\n    }\n    unmanaged_container_model.uri = os.path.join(\n        trials_dir, \"trial_{}\".format(best_trial[\"id\"]), \"model\"\n    )\n\n"
            ],
            "image": "us-docker.pkg.dev/vertex-ai/automl-tabular/dataflow-worker:20220629_0725_RC00"
          }
        },
        "exec-get-tabnet-study-spec-parameters": {
          "container": {
            "args": [
              "--metadata",
              "{{$.inputs.artifacts['metadata'].path}}",
              "--max-trial-count",
              "{{$.inputs.parameters['max_trial_count']}}",
              "--prediction-type",
              "{{$.inputs.parameters['prediction_type']}}",
              "--study-spec-parameters-override",
              "{{$.inputs.parameters['study_spec_parameters_override']}}",
              "----output-paths",
              "{{$.outputs.parameters['Output'].output_file}}"
            ],
            "command": [
              "sh",
              "-ec",
              "program_path=$(mktemp)\nprintf \"%s\" \"$0\" > \"$program_path\"\npython3 -u \"$program_path\" \"$@\"\n",
              "def get_tabnet_study_spec_parameters(\n    metadata,\n    max_trial_count,\n    prediction_type,\n    study_spec_parameters_override,  # Required for KFP validation; pylint:disable=g-bare-generic\n):\n  \"\"\"Get study_spec_parameters for a TabNet hyperparameter tuning job.\n\n  Args:\n    metadata: Metadata generated by example gen.\n    max_trial_count: The desired total number of trials.\n    prediction_type: The type of prediction the model is to produce.\n      'classification' or 'regression'.\n    study_spec_parameters_override: List of dictionaries representing parameters\n      to optimize. The dictionary key is the parameter_id, which is passed to\n      training job as a command line argument, and the dictionary value is the\n      parameter specification of the metric.\n\n  Returns:\n    List of final study_spec_parameters.\n  \"\"\"\n  # Define different search space constants\n  tabnet_params_small_data_small_search_space = [{\n      'parameter_id': 'max_steps',\n      'discrete_value_spec': {\n          'values': [5000, 10000, 15000, 20000, 25000, 30000]\n      }\n  }, {\n      'parameter_id': 'max_train_secs',\n      'discrete_value_spec': {\n          'values': [-1]\n      }\n  }, {\n      'parameter_id': 'batch_size',\n      'discrete_value_spec': {\n          'values': [512, 1024, 2048, 4096]\n      }\n  }, {\n      'parameter_id': 'learning_rate',\n      'double_value_spec': {\n          'min_value': 0.0001,\n          'max_value': 0.02\n      },\n      'scale_type': 'UNIT_LOG_SCALE'\n  }, {\n      'parameter_id': 'large_category_dim',\n      'discrete_value_spec': {\n          'values': [5]\n      }\n  }, {\n      'parameter_id': 'large_category_thresh',\n      'discrete_value_spec': {\n          'values': [10]\n      }\n  }, {\n      'parameter_id': 'feature_dim',\n      'integer_value_spec': {\n          'min_value': 50,\n          'max_value': 200\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'feature_dim_ratio',\n      'double_value_spec': {\n          'min_value': 0.3,\n          'max_value': 0.7\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'num_decision_steps',\n      'integer_value_spec': {\n          'min_value': 2,\n          'max_value': 6\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'relaxation_factor',\n      'double_value_spec': {\n          'min_value': 1.2,\n          'max_value': 2.5\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'decay_rate',\n      'double_value_spec': {\n          'min_value': 0.5,\n          'max_value': 0.999\n      },\n      'scale_type': 'UNIT_LOG_SCALE'\n  }, {\n      'parameter_id': 'decay_every',\n      'integer_value_spec': {\n          'min_value': 1000,\n          'max_value': 5000\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'sparsity_loss_weight',\n      'double_value_spec': {\n          'min_value': 0.000001,\n          'max_value': 0.001\n      },\n      'scale_type': 'UNIT_LOG_SCALE'\n  }, {\n      'parameter_id': 'batch_momentum',\n      'double_value_spec': {\n          'min_value': 0.5,\n          'max_value': 0.95\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'batch_size_ratio',\n      'discrete_value_spec': {\n          'values': [0.125, 0.25, 0.5]\n      }\n  }, {\n      'parameter_id': 'num_transformer_layers',\n      'integer_value_spec': {\n          'min_value': 2,\n          'max_value': 4\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'num_transformer_layers_ratio',\n      'double_value_spec': {\n          'min_value': 0.3,\n          'max_value': 0.7\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'class_weight',\n      'double_value_spec': {\n          'min_value': 1.0,\n          'max_value': 100.0\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'loss_function_type',\n      'categorical_value_spec': {\n          'values': ['weighted_cross_entropy']\n      }\n  }]\n  tabnet_params_small_data_medium_search_space = [{\n      'parameter_id': 'max_steps',\n      'discrete_value_spec': {\n          'values': [5000, 10000, 20000, 30000, 40000, 50000]\n      }\n  }, {\n      'parameter_id': 'max_train_secs',\n      'discrete_value_spec': {\n          'values': [-1]\n      }\n  }, {\n      'parameter_id': 'batch_size',\n      'discrete_value_spec': {\n          'values': [512, 1024, 2048, 4096]\n      }\n  }, {\n      'parameter_id': 'learning_rate',\n      'double_value_spec': {\n          'min_value': 0.0001,\n          'max_value': 0.03\n      },\n      'scale_type': 'UNIT_LOG_SCALE'\n  }, {\n      'parameter_id': 'large_category_dim',\n      'discrete_value_spec': {\n          'values': [5]\n      }\n  }, {\n      'parameter_id': 'large_category_thresh',\n      'discrete_value_spec': {\n          'values': [10]\n      }\n  }, {\n      'parameter_id': 'feature_dim',\n      'integer_value_spec': {\n          'min_value': 50,\n          'max_value': 200\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'feature_dim_ratio',\n      'double_value_spec': {\n          'min_value': 0.2,\n          'max_value': 0.8\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'num_decision_steps',\n      'integer_value_spec': {\n          'min_value': 2,\n          'max_value': 6\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'relaxation_factor',\n      'double_value_spec': {\n          'min_value': 1.2,\n          'max_value': 2.7\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'decay_rate',\n      'double_value_spec': {\n          'min_value': 0.5,\n          'max_value': 0.999\n      },\n      'scale_type': 'UNIT_LOG_SCALE'\n  }, {\n      'parameter_id': 'decay_every',\n      'integer_value_spec': {\n          'min_value': 1000,\n          'max_value': 10000\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'sparsity_loss_weight',\n      'double_value_spec': {\n          'min_value': 0.000001,\n          'max_value': 0.001\n      },\n      'scale_type': 'UNIT_LOG_SCALE'\n  }, {\n      'parameter_id': 'batch_momentum',\n      'double_value_spec': {\n          'min_value': 0.5,\n          'max_value': 0.95\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'batch_size_ratio',\n      'discrete_value_spec': {\n          'values': [0.0625, 0.125, 0.25, 0.5]\n      }\n  }, {\n      'parameter_id': 'num_transformer_layers',\n      'integer_value_spec': {\n          'min_value': 2,\n          'max_value': 6\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'num_transformer_layers_ratio',\n      'double_value_spec': {\n          'min_value': 0.2,\n          'max_value': 0.8\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'class_weight',\n      'double_value_spec': {\n          'min_value': 1.0,\n          'max_value': 100.0\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'loss_function_type',\n      'categorical_value_spec': {\n          'values': ['weighted_cross_entropy', 'focal_loss']\n      }\n  }, {\n      'parameter_id': 'alpha_focal_loss',\n      'discrete_value_spec': {\n          'values': [0.1, 0.25, 0.5, 0.75, 0.9, 0.99]\n      }\n  }, {\n      'parameter_id': 'gamma_focal_loss',\n      'discrete_value_spec': {\n          'values': [0.0, 0.5, 1.0, 2.0, 3.0, 4.0]\n      }\n  }]\n  tabnet_params_small_data_large_search_space = [{\n      'parameter_id': 'max_steps',\n      'discrete_value_spec': {\n          'values': [10000, 20000, 30000, 40000, 50000]\n      }\n  }, {\n      'parameter_id': 'max_train_secs',\n      'discrete_value_spec': {\n          'values': [-1]\n      }\n  }, {\n      'parameter_id': 'batch_size',\n      'discrete_value_spec': {\n          'values': [512, 1024, 2048, 4096]\n      }\n  }, {\n      'parameter_id': 'learning_rate',\n      'double_value_spec': {\n          'min_value': 0.00007,\n          'max_value': 0.03\n      },\n      'scale_type': 'UNIT_LOG_SCALE'\n  }, {\n      'parameter_id': 'large_category_dim',\n      'discrete_value_spec': {\n          'values': [3, 5, 10]\n      }\n  }, {\n      'parameter_id': 'large_category_thresh',\n      'discrete_value_spec': {\n          'values': [5, 10]\n      }\n  }, {\n      'parameter_id': 'feature_dim',\n      'integer_value_spec': {\n          'min_value': 50,\n          'max_value': 300\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'feature_dim_ratio',\n      'double_value_spec': {\n          'min_value': 0.2,\n          'max_value': 0.8\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'num_decision_steps',\n      'integer_value_spec': {\n          'min_value': 2,\n          'max_value': 7\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'relaxation_factor',\n      'double_value_spec': {\n          'min_value': 1.05,\n          'max_value': 3.2\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'decay_rate',\n      'double_value_spec': {\n          'min_value': 0.5,\n          'max_value': 0.999\n      },\n      'scale_type': 'UNIT_LOG_SCALE'\n  }, {\n      'parameter_id': 'decay_every',\n      'integer_value_spec': {\n          'min_value': 1000,\n          'max_value': 10000\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'sparsity_loss_weight',\n      'double_value_spec': {\n          'min_value': 0.0000001,\n          'max_value': 0.001\n      },\n      'scale_type': 'UNIT_LOG_SCALE'\n  }, {\n      'parameter_id': 'batch_momentum',\n      'double_value_spec': {\n          'min_value': 0.5,\n          'max_value': 0.95\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'batch_size_ratio',\n      'discrete_value_spec': {\n          'values': [0.0625, 0.125, 0.25, 0.5]\n      }\n  }, {\n      'parameter_id': 'num_transformer_layers',\n      'integer_value_spec': {\n          'min_value': 2,\n          'max_value': 6\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'num_transformer_layers_ratio',\n      'double_value_spec': {\n          'min_value': 0.2,\n          'max_value': 0.8\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'class_weight',\n      'double_value_spec': {\n          'min_value': 1.0,\n          'max_value': 100.0\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'loss_function_type',\n      'categorical_value_spec': {\n          'values': ['weighted_cross_entropy', 'focal_loss']\n      }\n  }, {\n      'parameter_id': 'alpha_focal_loss',\n      'discrete_value_spec': {\n          'values': [0.1, 0.25, 0.5, 0.75, 0.9, 0.99]\n      }\n  }, {\n      'parameter_id': 'gamma_focal_loss',\n      'discrete_value_spec': {\n          'values': [0.0, 0.5, 1.0, 2.0, 3.0, 4.0]\n      }\n  }]\n  tabnet_params_medium_data_small_search_space = [{\n      'parameter_id': 'max_steps',\n      'discrete_value_spec': {\n          'values': [10000, 20000, 30000, 40000, 50000]\n      }\n  }, {\n      'parameter_id': 'max_train_secs',\n      'discrete_value_spec': {\n          'values': [-1]\n      }\n  }, {\n      'parameter_id': 'batch_size',\n      'discrete_value_spec': {\n          'values': [1024, 4096, 8192, 16384]\n      }\n  }, {\n      'parameter_id': 'learning_rate',\n      'double_value_spec': {\n          'min_value': 0.0001,\n          'max_value': 0.02\n      },\n      'scale_type': 'UNIT_LOG_SCALE'\n  }, {\n      'parameter_id': 'large_category_dim',\n      'discrete_value_spec': {\n          'values': [5]\n      }\n  }, {\n      'parameter_id': 'large_category_thresh',\n      'discrete_value_spec': {\n          'values': [10]\n      }\n  }, {\n      'parameter_id': 'feature_dim',\n      'integer_value_spec': {\n          'min_value': 100,\n          'max_value': 300\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'feature_dim_ratio',\n      'double_value_spec': {\n          'min_value': 0.3,\n          'max_value': 0.7\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'num_decision_steps',\n      'integer_value_spec': {\n          'min_value': 2,\n          'max_value': 6\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'relaxation_factor',\n      'double_value_spec': {\n          'min_value': 1.2,\n          'max_value': 2.5\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'decay_rate',\n      'double_value_spec': {\n          'min_value': 0.5,\n          'max_value': 0.999\n      },\n      'scale_type': 'UNIT_LOG_SCALE'\n  }, {\n      'parameter_id': 'decay_every',\n      'integer_value_spec': {\n          'min_value': 10000,\n          'max_value': 50000\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'sparsity_loss_weight',\n      'double_value_spec': {\n          'min_value': 0.0000001,\n          'max_value': 0.001\n      },\n      'scale_type': 'UNIT_LOG_SCALE'\n  }, {\n      'parameter_id': 'batch_momentum',\n      'double_value_spec': {\n          'min_value': 0.5,\n          'max_value': 0.95\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'batch_size_ratio',\n      'discrete_value_spec': {\n          'values': [0.0625, 0.125, 0.25, 0.5]\n      }\n  }, {\n      'parameter_id': 'num_transformer_layers',\n      'integer_value_spec': {\n          'min_value': 2,\n          'max_value': 6\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'num_transformer_layers_ratio',\n      'double_value_spec': {\n          'min_value': 0.3,\n          'max_value': 0.7\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'class_weight',\n      'double_value_spec': {\n          'min_value': 1.0,\n          'max_value': 100.0\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'loss_function_type',\n      'categorical_value_spec': {\n          'values': ['weighted_cross_entropy']\n      }\n  }]\n  tabnet_params_medium_data_medium_search_space = [{\n      'parameter_id': 'max_steps',\n      'discrete_value_spec': {\n          'values': [5000, 10000, 20000, 30000, 40000, 50000]\n      }\n  }, {\n      'parameter_id': 'max_train_secs',\n      'discrete_value_spec': {\n          'values': [-1]\n      }\n  }, {\n      'parameter_id': 'batch_size',\n      'discrete_value_spec': {\n          'values': [1024, 2048, 4096, 8192, 16384]\n      }\n  }, {\n      'parameter_id': 'learning_rate',\n      'double_value_spec': {\n          'min_value': 0.00007,\n          'max_value': 0.02\n      },\n      'scale_type': 'UNIT_LOG_SCALE'\n  }, {\n      'parameter_id': 'large_category_dim',\n      'discrete_value_spec': {\n          'values': [5]\n      }\n  }, {\n      'parameter_id': 'large_category_thresh',\n      'discrete_value_spec': {\n          'values': [10]\n      }\n  }, {\n      'parameter_id': 'feature_dim',\n      'integer_value_spec': {\n          'min_value': 50,\n          'max_value': 400\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'feature_dim_ratio',\n      'double_value_spec': {\n          'min_value': 0.2,\n          'max_value': 0.8\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'num_decision_steps',\n      'integer_value_spec': {\n          'min_value': 2,\n          'max_value': 6\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'relaxation_factor',\n      'double_value_spec': {\n          'min_value': 1.2,\n          'max_value': 2.5\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'decay_rate',\n      'double_value_spec': {\n          'min_value': 0.5,\n          'max_value': 0.999\n      },\n      'scale_type': 'UNIT_LOG_SCALE'\n  }, {\n      'parameter_id': 'decay_every',\n      'integer_value_spec': {\n          'min_value': 10000,\n          'max_value': 50000\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'sparsity_loss_weight',\n      'double_value_spec': {\n          'min_value': 0.0000001,\n          'max_value': 0.001\n      },\n      'scale_type': 'UNIT_LOG_SCALE'\n  }, {\n      'parameter_id': 'batch_momentum',\n      'double_value_spec': {\n          'min_value': 0.5,\n          'max_value': 0.95\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'batch_size_ratio',\n      'discrete_value_spec': {\n          'values': [0.0625, 0.125, 0.25, 0.5]\n      }\n  }, {\n      'parameter_id': 'num_transformer_layers',\n      'integer_value_spec': {\n          'min_value': 4,\n          'max_value': 10\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'num_transformer_layers_ratio',\n      'double_value_spec': {\n          'min_value': 0.2,\n          'max_value': 0.8\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'class_weight',\n      'double_value_spec': {\n          'min_value': 1.0,\n          'max_value': 100.0\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'loss_function_type',\n      'categorical_value_spec': {\n          'values': ['weighted_cross_entropy', 'focal_loss']\n      }\n  }, {\n      'parameter_id': 'alpha_focal_loss',\n      'discrete_value_spec': {\n          'values': [0.1, 0.25, 0.5, 0.75, 0.9, 0.99]\n      }\n  }, {\n      'parameter_id': 'gamma_focal_loss',\n      'discrete_value_spec': {\n          'values': [0.0, 0.5, 1.0, 2.0, 3.0, 4.0]\n      }\n  }]\n  tabnet_params_medium_data_large_search_space = [{\n      'parameter_id': 'max_steps',\n      'discrete_value_spec': {\n          'values': [50000, 60000, 70000, 80000, 90000, 100000]\n      }\n  }, {\n      'parameter_id': 'max_train_secs',\n      'discrete_value_spec': {\n          'values': [-1]\n      }\n  }, {\n      'parameter_id': 'batch_size',\n      'discrete_value_spec': {\n          'values': [1024, 2048, 4096, 8192, 16384]\n      }\n  }, {\n      'parameter_id': 'learning_rate',\n      'double_value_spec': {\n          'min_value': 0.00007,\n          'max_value': 0.03\n      },\n      'scale_type': 'UNIT_LOG_SCALE'\n  }, {\n      'parameter_id': 'large_category_dim',\n      'discrete_value_spec': {\n          'values': [3, 5, 10]\n      }\n  }, {\n      'parameter_id': 'large_category_thresh',\n      'discrete_value_spec': {\n          'values': [5, 10]\n      }\n  }, {\n      'parameter_id': 'feature_dim',\n      'integer_value_spec': {\n          'min_value': 50,\n          'max_value': 500\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'feature_dim_ratio',\n      'double_value_spec': {\n          'min_value': 0.2,\n          'max_value': 0.8\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'num_decision_steps',\n      'integer_value_spec': {\n          'min_value': 2,\n          'max_value': 8\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'relaxation_factor',\n      'double_value_spec': {\n          'min_value': 1.05,\n          'max_value': 3.2\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'decay_rate',\n      'double_value_spec': {\n          'min_value': 0.5,\n          'max_value': 0.999\n      },\n      'scale_type': 'UNIT_LOG_SCALE'\n  }, {\n      'parameter_id': 'decay_every',\n      'integer_value_spec': {\n          'min_value': 10000,\n          'max_value': 50000\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'sparsity_loss_weight',\n      'double_value_spec': {\n          'min_value': 0.0000001,\n          'max_value': 0.001\n      },\n      'scale_type': 'UNIT_LOG_SCALE'\n  }, {\n      'parameter_id': 'batch_momentum',\n      'double_value_spec': {\n          'min_value': 0.5,\n          'max_value': 0.95\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'batch_size_ratio',\n      'discrete_value_spec': {\n          'values': [0.0625, 0.125, 0.25, 0.5]\n      }\n  }, {\n      'parameter_id': 'num_transformer_layers',\n      'integer_value_spec': {\n          'min_value': 4,\n          'max_value': 10\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'num_transformer_layers_ratio',\n      'double_value_spec': {\n          'min_value': 0.2,\n          'max_value': 0.8\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'class_weight',\n      'double_value_spec': {\n          'min_value': 1.0,\n          'max_value': 100.0\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'loss_function_type',\n      'categorical_value_spec': {\n          'values': ['weighted_cross_entropy', 'focal_loss']\n      }\n  }, {\n      'parameter_id': 'alpha_focal_loss',\n      'discrete_value_spec': {\n          'values': [0.1, 0.25, 0.5, 0.75, 0.9, 0.99]\n      }\n  }, {\n      'parameter_id': 'gamma_focal_loss',\n      'discrete_value_spec': {\n          'values': [0.0, 0.5, 1.0, 2.0, 3.0, 4.0]\n      }\n  }]\n  tabnet_params_large_data_small_search_space = [{\n      'parameter_id': 'max_steps',\n      'discrete_value_spec': {\n          'values': [50000, 60000, 70000, 80000, 90000, 100000]\n      }\n  }, {\n      'parameter_id': 'max_train_secs',\n      'discrete_value_spec': {\n          'values': [-1]\n      }\n  }, {\n      'parameter_id': 'batch_size',\n      'discrete_value_spec': {\n          'values': [8192, 16384, 32768]\n      }\n  }, {\n      'parameter_id': 'learning_rate',\n      'double_value_spec': {\n          'min_value': 0.0002,\n          'max_value': 0.02\n      },\n      'scale_type': 'UNIT_LOG_SCALE'\n  }, {\n      'parameter_id': 'large_category_dim',\n      'discrete_value_spec': {\n          'values': [5]\n      }\n  }, {\n      'parameter_id': 'large_category_thresh',\n      'discrete_value_spec': {\n          'values': [10]\n      }\n  }, {\n      'parameter_id': 'feature_dim',\n      'integer_value_spec': {\n          'min_value': 100,\n          'max_value': 400\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'feature_dim_ratio',\n      'double_value_spec': {\n          'min_value': 0.2,\n          'max_value': 0.8\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'num_decision_steps',\n      'integer_value_spec': {\n          'min_value': 3,\n          'max_value': 6\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'relaxation_factor',\n      'double_value_spec': {\n          'min_value': 1.2,\n          'max_value': 2.5\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'decay_rate',\n      'double_value_spec': {\n          'min_value': 0.5,\n          'max_value': 0.999\n      },\n      'scale_type': 'UNIT_LOG_SCALE'\n  }, {\n      'parameter_id': 'decay_every',\n      'integer_value_spec': {\n          'min_value': 10000,\n          'max_value': 50000\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'sparsity_loss_weight',\n      'double_value_spec': {\n          'min_value': 0.000001,\n          'max_value': 0.001\n      },\n      'scale_type': 'UNIT_LOG_SCALE'\n  }, {\n      'parameter_id': 'batch_momentum',\n      'double_value_spec': {\n          'min_value': 0.5,\n          'max_value': 0.95\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'batch_size_ratio',\n      'discrete_value_spec': {\n          'values': [0.0625, 0.125, 0.25, 0.5]\n      }\n  }, {\n      'parameter_id': 'num_transformer_layers',\n      'integer_value_spec': {\n          'min_value': 2,\n          'max_value': 6\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'num_transformer_layers_ratio',\n      'double_value_spec': {\n          'min_value': 0.3,\n          'max_value': 0.7\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'class_weight',\n      'double_value_spec': {\n          'min_value': 1.0,\n          'max_value': 10.0\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'loss_function_type',\n      'categorical_value_spec': {\n          'values': ['weighted_cross_entropy']\n      }\n  }]\n  tabnet_params_large_data_medium_search_space = [{\n      'parameter_id': 'max_steps',\n      'discrete_value_spec': {\n          'values': [50000, 60000, 70000, 80000, 90000, 100000]\n      }\n  }, {\n      'parameter_id': 'max_train_secs',\n      'discrete_value_spec': {\n          'values': [-1]\n      }\n  }, {\n      'parameter_id': 'batch_size',\n      'discrete_value_spec': {\n          'values': [4096, 8192, 16384, 32768]\n      }\n  }, {\n      'parameter_id': 'learning_rate',\n      'double_value_spec': {\n          'min_value': 0.0001,\n          'max_value': 0.03\n      },\n      'scale_type': 'UNIT_LOG_SCALE'\n  }, {\n      'parameter_id': 'large_category_dim',\n      'discrete_value_spec': {\n          'values': [5]\n      }\n  }, {\n      'parameter_id': 'large_category_thresh',\n      'discrete_value_spec': {\n          'values': [10]\n      }\n  }, {\n      'parameter_id': 'feature_dim',\n      'integer_value_spec': {\n          'min_value': 200,\n          'max_value': 500\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'feature_dim_ratio',\n      'double_value_spec': {\n          'min_value': 0.2,\n          'max_value': 0.8\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'num_decision_steps',\n      'integer_value_spec': {\n          'min_value': 3,\n          'max_value': 7\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'relaxation_factor',\n      'double_value_spec': {\n          'min_value': 1.2,\n          'max_value': 2.5\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'decay_rate',\n      'double_value_spec': {\n          'min_value': 0.5,\n          'max_value': 0.999\n      },\n      'scale_type': 'UNIT_LOG_SCALE'\n  }, {\n      'parameter_id': 'decay_every',\n      'integer_value_spec': {\n          'min_value': 10000,\n          'max_value': 50000\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'sparsity_loss_weight',\n      'double_value_spec': {\n          'min_value': 0.000001,\n          'max_value': 0.001\n      },\n      'scale_type': 'UNIT_LOG_SCALE'\n  }, {\n      'parameter_id': 'batch_momentum',\n      'double_value_spec': {\n          'min_value': 0.5,\n          'max_value': 0.95\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'batch_size_ratio',\n      'discrete_value_spec': {\n          'values': [0.0625, 0.125, 0.25, 0.5]\n      }\n  }, {\n      'parameter_id': 'num_transformer_layers',\n      'integer_value_spec': {\n          'min_value': 4,\n          'max_value': 8\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'num_transformer_layers_ratio',\n      'double_value_spec': {\n          'min_value': 0.2,\n          'max_value': 0.8\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'class_weight',\n      'double_value_spec': {\n          'min_value': 1.0,\n          'max_value': 100.0\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'loss_function_type',\n      'categorical_value_spec': {\n          'values': ['weighted_cross_entropy', 'focal_loss']\n      }\n  }, {\n      'parameter_id': 'alpha_focal_loss',\n      'discrete_value_spec': {\n          'values': [0.1, 0.25, 0.5, 0.75, 0.9, 0.99]\n      }\n  }, {\n      'parameter_id': 'gamma_focal_loss',\n      'discrete_value_spec': {\n          'values': [0.0, 0.5, 1.0, 2.0, 3.0, 4.0]\n      }\n  }]\n  tabnet_params_large_data_large_search_space = [{\n      'parameter_id': 'max_steps',\n      'discrete_value_spec': {\n          'values': [50000, 70000, 90000, 110000, 130000, 150000]\n      }\n  }, {\n      'parameter_id': 'max_train_secs',\n      'discrete_value_spec': {\n          'values': [-1]\n      }\n  }, {\n      'parameter_id': 'batch_size',\n      'discrete_value_spec': {\n          'values': [4096, 8192, 16384, 32768, 65536]\n      }\n  }, {\n      'parameter_id': 'learning_rate',\n      'double_value_spec': {\n          'min_value': 0.00007,\n          'max_value': 0.03\n      },\n      'scale_type': 'UNIT_LOG_SCALE'\n  }, {\n      'parameter_id': 'large_category_dim',\n      'discrete_value_spec': {\n          'values': [3, 5, 10]\n      }\n  }, {\n      'parameter_id': 'large_category_thresh',\n      'discrete_value_spec': {\n          'values': [5, 10]\n      }\n  }, {\n      'parameter_id': 'feature_dim',\n      'integer_value_spec': {\n          'min_value': 100,\n          'max_value': 700\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'feature_dim_ratio',\n      'double_value_spec': {\n          'min_value': 0.2,\n          'max_value': 0.8\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'num_decision_steps',\n      'integer_value_spec': {\n          'min_value': 3,\n          'max_value': 8\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'relaxation_factor',\n      'double_value_spec': {\n          'min_value': 1.05,\n          'max_value': 3.2\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'decay_rate',\n      'double_value_spec': {\n          'min_value': 0.5,\n          'max_value': 0.999\n      },\n      'scale_type': 'UNIT_LOG_SCALE'\n  }, {\n      'parameter_id': 'decay_every',\n      'integer_value_spec': {\n          'min_value': 10000,\n          'max_value': 50000\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'sparsity_loss_weight',\n      'double_value_spec': {\n          'min_value': 0.0000001,\n          'max_value': 0.001\n      },\n      'scale_type': 'UNIT_LOG_SCALE'\n  }, {\n      'parameter_id': 'batch_momentum',\n      'double_value_spec': {\n          'min_value': 0.5,\n          'max_value': 0.95\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'batch_size_ratio',\n      'discrete_value_spec': {\n          'values': [0.0625, 0.125, 0.25, 0.5]\n      }\n  }, {\n      'parameter_id': 'num_transformer_layers',\n      'integer_value_spec': {\n          'min_value': 4,\n          'max_value': 10\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'num_transformer_layers_ratio',\n      'double_value_spec': {\n          'min_value': 0.2,\n          'max_value': 0.8\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'class_weight',\n      'double_value_spec': {\n          'min_value': 1.0,\n          'max_value': 100.0\n      },\n      'scale_type': 'UNIT_LINEAR_SCALE'\n  }, {\n      'parameter_id': 'loss_function_type',\n      'categorical_value_spec': {\n          'values': ['weighted_cross_entropy', 'focal_loss']\n      }\n  }, {\n      'parameter_id': 'alpha_focal_loss',\n      'discrete_value_spec': {\n          'values': [0.1, 0.25, 0.5, 0.75, 0.9, 0.99]\n      }\n  }, {\n      'parameter_id': 'gamma_focal_loss',\n      'discrete_value_spec': {\n          'values': [0.0, 0.5, 1.0, 2.0, 3.0, 4.0]\n      }\n  }]\n  search_spaces = {\n      'tabnet_params_small_data_small_search_space':\n          tabnet_params_small_data_small_search_space,\n      'tabnet_params_small_data_medium_search_space':\n          tabnet_params_small_data_medium_search_space,\n      'tabnet_params_small_data_large_search_space':\n          tabnet_params_small_data_large_search_space,\n      'tabnet_params_medium_data_small_search_space':\n          tabnet_params_medium_data_small_search_space,\n      'tabnet_params_medium_data_medium_search_space':\n          tabnet_params_medium_data_medium_search_space,\n      'tabnet_params_medium_data_large_search_space':\n          tabnet_params_medium_data_large_search_space,\n      'tabnet_params_large_data_small_search_space':\n          tabnet_params_large_data_small_search_space,\n      'tabnet_params_large_data_medium_search_space':\n          tabnet_params_large_data_medium_search_space,\n      'tabnet_params_large_data_large_search_space':\n          tabnet_params_large_data_large_search_space,\n  }\n\n  # pylint: disable=g-import-not-at-top,import-outside-toplevel\n  import json\n  # pylint: enable=g-import-not-at-top,import-outside-toplevel\n  with open(metadata, 'r') as f:\n    metadata_path = f.read()\n    metadata = json.loads(metadata_path)\n  # Calculate dataset size bucket. One of 'small' (< 1M rows),\n  # 'medium' (1M - 100M rows), or 'large' (> 100M rows)\n  num_rows = metadata['num_examples']['train'] + metadata['num_examples'][\n      'valid'] + metadata['num_examples']['test']\n  dataset_size_bucket = 'medium'\n  if num_rows < 10000000:\n    dataset_size_bucket = 'small'\n  elif num_rows > 100000000:\n    dataset_size_bucket = 'large'\n\n  # Calculate search space bucket using max_trial_count.\n  # One of 'small' (< 10), medium (1 - 100), and large (> 100).\n  search_space = 'medium'\n  if max_trial_count < 10:\n    search_space = 'small'\n  elif max_trial_count > 100:\n    search_space = 'large'\n\n  # Get params for classification.\n  params = search_spaces[\n      f'tabnet_params_{dataset_size_bucket}_data_{search_space}_search_space']\n\n  # Format for regression. To get regression study_spec_parameters, we need\n  # to set `loss_function_type` to \u2018mae\u2019 (\u2018mae\u2019 and \u2018mse\u2019 for 'large'\n  # search space), remove the `alpha_focal_loss`, `gamma_focal_loss`\n  # and `class_weight` parameters and increase the max for\n  # `sparsity_loss_weight` to 100.\n  if prediction_type == 'regression':\n    formatted_params = []\n    for param in params:\n      if param['parameter_id'] in [\n          'alpha_focal_loss', 'gamma_focal_loss', 'class_weight'\n      ]:\n        continue\n      elif param['parameter_id'] == 'sparsity_loss_weight':\n        param['double_value_spec']['max_value'] = 100\n      elif param['parameter_id'] == 'loss_function_type':\n        if search_space == 'large':\n          param['categorical_value_spec']['values'] = ['mae', 'mse']\n        else:\n          param['categorical_value_spec']['values'] = ['mae']\n      formatted_params.append(param)\n  else:\n    formatted_params = params\n\n  # Create parameter_id -> parameter_config dictionary for params to override\n  # and override parameters.\n  override_params = {}\n  for param in study_spec_parameters_override:\n    override_params[param['parameter_id']] = param\n\n  study_spec_parameters = []\n  for param in formatted_params:\n    study_spec_parameters.append(\n        override_params.get(param['parameter_id'], param))\n\n  return study_spec_parameters\n\ndef _serialize_json(obj) -> str:\n    if isinstance(obj, str):\n        return obj\n    import json\n\n    def default_serializer(obj):\n        if hasattr(obj, 'to_struct'):\n            return obj.to_struct()\n        else:\n            raise TypeError(\n                \"Object of type '%s' is not JSON serializable and does not have .to_struct() method.\"\n                % obj.__class__.__name__)\n\n    return json.dumps(obj, default=default_serializer, sort_keys=True)\n\nimport json\nimport argparse\n_parser = argparse.ArgumentParser(prog='Get tabnet study spec parameters', description='Get study_spec_parameters for a TabNet hyperparameter tuning job.')\n_parser.add_argument(\"--metadata\", dest=\"metadata\", type=str, required=True, default=argparse.SUPPRESS)\n_parser.add_argument(\"--max-trial-count\", dest=\"max_trial_count\", type=int, required=True, default=argparse.SUPPRESS)\n_parser.add_argument(\"--prediction-type\", dest=\"prediction_type\", type=str, required=True, default=argparse.SUPPRESS)\n_parser.add_argument(\"--study-spec-parameters-override\", dest=\"study_spec_parameters_override\", type=json.loads, required=True, default=argparse.SUPPRESS)\n_parser.add_argument(\"----output-paths\", dest=\"_output_paths\", type=str, nargs=1)\n_parsed_args = vars(_parser.parse_args())\n_output_files = _parsed_args.pop(\"_output_paths\", [])\n\n_outputs = get_tabnet_study_spec_parameters(**_parsed_args)\n\n_outputs = [_outputs]\n\n_output_serializers = [\n    _serialize_json,\n\n]\n\nimport os\nfor idx, output_file in enumerate(_output_files):\n    try:\n        os.makedirs(os.path.dirname(output_file))\n    except OSError:\n        pass\n    with open(output_file, 'w') as f:\n        f.write(_output_serializers[idx](_outputs[idx]))\n"
            ],
            "image": "python:3.7-slim"
          }
        },
        "exec-model-batch-predict": {
          "container": {
            "args": [
              "--type",
              "BatchPredictionJob",
              "--payload",
              "{\"display_name\": \"{{$.inputs.parameters['job_display_name']}}\",  \"input_config\": {\"instances_format\": \"{{$.inputs.parameters['instances_format']}}\", \"gcs_source\": {\"uris\":{{$.inputs.parameters['gcs_source_uris']}}}, \"bigquery_source\": {\"input_uri\": \"{{$.inputs.parameters['bigquery_source_input_uri']}}\"}}, \"model_parameters\": {{$.inputs.parameters['model_parameters']}}, \"output_config\": {\"predictions_format\": \"{{$.inputs.parameters['predictions_format']}}\", \"gcs_destination\": {\"output_uri_prefix\": \"{{$.inputs.parameters['gcs_destination_output_uri_prefix']}}\"}, \"bigquery_destination\": {\"output_uri\": \"{{$.inputs.parameters['bigquery_destination_output_uri']}}\"}}, \"dedicated_resources\": {\"machine_spec\": {\"machine_type\": \"{{$.inputs.parameters['machine_type']}}\", \"accelerator_type\": \"{{$.inputs.parameters['accelerator_type']}}\", \"accelerator_count\": {{$.inputs.parameters['accelerator_count']}}}, \"starting_replica_count\": {{$.inputs.parameters['starting_replica_count']}}, \"max_replica_count\": {{$.inputs.parameters['max_replica_count']}}}, \"manual_batch_tuning_parameters\": {\"batch_size\": {{$.inputs.parameters['manual_batch_tuning_parameters_batch_size']}}}, \"generate_explanation\": {{$.inputs.parameters['generate_explanation']}}, \"explanation_spec\": {\"parameters\": {{$.inputs.parameters['explanation_parameters']}}, \"metadata\": {{$.inputs.parameters['explanation_metadata']}}}, \"labels\": {{$.inputs.parameters['labels']}}, \"encryption_spec\": {\"kms_key_name\":\"{{$.inputs.parameters['encryption_spec_key_name']}}\"}}",
              "--project",
              "{{$.inputs.parameters['project']}}",
              "--location",
              "{{$.inputs.parameters['location']}}",
              "--gcp_resources",
              "{{$.outputs.parameters['gcp_resources'].output_file}}",
              "--executor_input",
              "{{$}}"
            ],
            "command": [
              "python3",
              "-u",
              "-m",
              "google_cloud_pipeline_components.container.v1.gcp_launcher.launcher"
            ],
            "image": "gcr.io/ml-pipeline/google-cloud-pipeline-components:1.0.10"
          }
        },
        "exec-model-evaluation": {
          "container": {
            "args": [
              "--setup_file",
              "/setup.py",
              "--json_mode",
              "true",
              "--project_id",
              "{{$.inputs.parameters['project']}}",
              "--location",
              "{{$.inputs.parameters['location']}}",
              "--problem_type",
              "{{$.inputs.parameters['problem_type']}}",
              "--batch_prediction_format",
              "{{$.inputs.parameters['predictions_format']}}",
              "--batch_prediction_gcs_source",
              "{{$.inputs.artifacts['batch_prediction_job'].metadata['gcsOutputDirectory']}}",
              "--ground_truth_format",
              "{{$.inputs.parameters['ground_truth_format']}}",
              "--ground_truth_gcs_source",
              "{{$.inputs.parameters['ground_truth_gcs_source']}}",
              "--key_prefix_in_prediction_dataset",
              "instance",
              "--key_columns",
              "{{$.inputs.parameters['key_columns']}}",
              "--root_dir",
              "{{$.inputs.parameters['root_dir']}}/{{$.pipeline_job_uuid}}-{{$.pipeline_task_uuid}}",
              "--classification_type",
              "{{$.inputs.parameters['classification_type']}}",
              "--class_names",
              "{{$.inputs.parameters['class_names']}}",
              "--ground_truth_column",
              "instance.{{$.inputs.parameters['ground_truth_column']}}",
              "--prediction_score_column",
              "{{$.inputs.parameters['prediction_score_column']}}",
              "--prediction_label_column",
              "{{$.inputs.parameters['prediction_label_column']}}",
              "--prediction_id_column",
              "{{$.inputs.parameters['prediction_id_column']}}",
              "--example_weight_column",
              "{{$.inputs.parameters['example_weight_column']}}",
              "--positive_classes",
              "{{$.inputs.parameters['positive_classes']}}",
              "--generate_feature_attribution",
              "{{$.inputs.parameters['generate_feature_attribution']}}",
              "--dataflow_job_prefix",
              "evaluation-{{$.pipeline_job_uuid}}-{{$.pipeline_task_uuid}}",
              "--dataflow_service_account",
              "{{$.inputs.parameters['dataflow_service_account']}}",
              "--dataflow_disk_size",
              "{{$.inputs.parameters['dataflow_disk_size']}}",
              "--dataflow_machine_type",
              "{{$.inputs.parameters['dataflow_machine_type']}}",
              "--dataflow_workers_num",
              "{{$.inputs.parameters['dataflow_workers_num']}}",
              "--dataflow_max_workers_num",
              "{{$.inputs.parameters['dataflow_max_workers_num']}}",
              "--dataflow_subnetwork",
              "{{$.inputs.parameters['dataflow_subnetwork']}}",
              "--dataflow_use_public_ips",
              "{{$.inputs.parameters['dataflow_use_public_ips']}}",
              "--kms_key_name",
              "{{$.inputs.parameters['encryption_spec_key_name']}}",
              "--output_metrics_gcs_path",
              "{{$.outputs.artifacts['evaluation_metrics'].uri}}",
              "--gcp_resources",
              "{{$.outputs.parameters['gcp_resources'].output_file}}",
              "--executor_input",
              "{{$}}"
            ],
            "command": [
              "python",
              "/main.py"
            ],
            "image": "gcr.io/ml-pipeline/model-evaluation:v0.3"
          }
        },
        "exec-model-upload": {
          "container": {
            "args": [
              "--type",
              "UploadModel",
              "--payload",
              "{\"display_name\": \"{{$.inputs.parameters['display_name']}}\", \"description\": \"{{$.inputs.parameters['description']}}\", \"explanation_spec\": {\"parameters\": {{$.inputs.parameters['explanation_parameters']}}, \"metadata\": {{$.inputs.parameters['explanation_metadata']}}}, \"encryption_spec\": {\"kms_key_name\":\"{{$.inputs.parameters['encryption_spec_key_name']}}\"}, \"labels\": {{$.inputs.parameters['labels']}}}",
              "--project",
              "{{$.inputs.parameters['project']}}",
              "--location",
              "{{$.inputs.parameters['location']}}",
              "--gcp_resources",
              "{{$.outputs.parameters['gcp_resources'].output_file}}",
              "--executor_input",
              "{{$}}"
            ],
            "command": [
              "python3",
              "-u",
              "-m",
              "launcher"
            ],
            "image": "gcr.io/ml-pipeline/automl-tables-private:1.0.11"
          }
        },
        "exec-split-materialized-data": {
          "container": {
            "args": [
              "--executor_input",
              "{{$}}",
              "--function_to_execute",
              "_split_materialized_data"
            ],
            "command": [
              "sh",
              "-ec",
              "program_path=$(mktemp -d)\nprintf \"%s\" \"$0\" > \"$program_path/ephemeral_component.py\"\npython3 -m kfp.v2.components.executor_main                         --component_module_path                         \"$program_path/ephemeral_component.py\"                         \"$@\"\n",
              "\nimport kfp\nfrom kfp.v2 import dsl\nfrom kfp.v2.dsl import *\nfrom typing import *\n\ndef _split_materialized_data(\n    materialized_data: Input[Dataset],\n    materialized_train_split: OutputPath('MaterializedSplit'),\n    materialized_eval_split: OutputPath('MaterializedSplit'),\n    materialized_test_split: OutputPath('MaterializedSplit')):\n  \"\"\"Splits materialized_data into materialized_data test, train, and eval splits.\n\n  Necessary adapter between FTE pipeline and trainer.\n\n  Args:\n    materialized_data: materialized_data dataset output by FTE.\n    materialized_train_split: Path patern to materialized_train_split.\n    materialized_eval_split: Path patern to materialized_eval_split.\n    materialized_test_split: Path patern to materialized_test_split.\n  \"\"\"\n  # pylint: disable=g-import-not-at-top,import-outside-toplevel,redefined-outer-name,reimported\n  import json\n  import tensorflow as tf\n  # pylint: enable=g-import-not-at-top,import-outside-toplevel,redefined-outer-name,reimported\n\n  with tf.io.gfile.GFile(materialized_data.path, 'r') as f:\n    artifact_path = f.read()\n\n  # needed to import tf because this is a path in gs://\n  with tf.io.gfile.GFile(artifact_path, 'r') as f:\n    materialized_data_json = json.load(f)\n\n  file_patterns = materialized_data_json['tf_record_data_source'][\n      'file_patterns']\n\n  # we map indicies to file patterns based on the ordering of insertion order\n  # in our transform_data (see above in _generate_analyze_and_transform_data)\n  with tf.io.gfile.GFile(materialized_train_split, 'w') as f:\n    f.write(file_patterns[0])\n\n  with tf.io.gfile.GFile(materialized_eval_split, 'w') as f:\n    f.write(file_patterns[1])\n\n  with tf.io.gfile.GFile(materialized_test_split, 'w') as f:\n    f.write(file_patterns[2])\n\n"
            ],
            "image": "us-docker.pkg.dev/vertex-ai/automl-tabular/dataflow-worker:20220629_0725_RC00"
          }
        },
        "exec-tabular-stats-and-example-gen": {
          "container": {
            "args": [
              "--type",
              "CustomJob",
              "--project",
              "{{$.inputs.parameters['project']}}",
              "--location",
              "{{$.inputs.parameters['location']}}",
              "--gcp_resources",
              "{{$.outputs.parameters['gcp_resources'].output_file}}",
              "--payload",
              "{\"display_name\": \"tabular-stats-and-example-gen-{{$.pipeline_job_uuid}}-{{$.pipeline_task_uuid}}\", \"encryption_spec\": {\"kms_key_name\":\"{{$.inputs.parameters['encryption_spec_key_name']}}\"}, \"job_spec\": {\"worker_pool_specs\": [{\"replica_count\": 1, \"machine_spec\": {\"machine_type\": \"n1-standard-8\"}, \"container_spec\": {\"image_uri\":\"us-docker.pkg.dev/vertex-ai-restricted/automl-tabular/training:20220629_0725_RC00\", \"args\": [\"stats_generator\",\"--train_spec={\\\"prediction_type\\\": \\\"{{$.inputs.parameters['prediction_type']}}\\\", \\\"target_column\\\": \\\"{{$.inputs.parameters['target_column_name']}}\\\", \\\"optimization_objective\\\": \\\"{{$.inputs.parameters['optimization_objective']}}\\\", \\\"weight_column_name\\\": \\\"{{$.inputs.parameters['weight_column_name']}}\\\", \\\"transformations\\\": {{$.inputs.parameters['transformations']}}}\", \"--transformations_override_path={{$.inputs.parameters['transformations_path']}}\", \"--split_spec=\", \"--data_source=\", \"--data_source_csv_filenames={{$.inputs.parameters['data_source_csv_filenames']}}\", \"--data_source_bigquery_table_path={{$.inputs.parameters['data_source_bigquery_table_path']}}\", \"--predefined_split_key={{$.inputs.parameters['predefined_split_key']}}\", \"--timestamp_split_key={{$.inputs.parameters['timestamp_split_key']}}\", \"--stratified_split_key={{$.inputs.parameters['stratified_split_key']}}\", \"--training_fraction={{$.inputs.parameters['training_fraction']}}\", \"--validation_fraction={{$.inputs.parameters['validation_fraction']}}\", \"--test_fraction={{$.inputs.parameters['test_fraction']}}\", \"--target_column={{$.inputs.parameters['target_column_name']}}\", \"--request_type={{$.inputs.parameters['request_type']}}\", \"--optimization_objective_recall_value={{$.inputs.parameters['optimization_objective_recall_value']}}\", \"--optimization_objective_precision_value={{$.inputs.parameters['optimization_objective_precision_value']}}\", \"--example_gen_gcs_output_prefix={{$.inputs.parameters['root_dir']}}/{{$.pipeline_job_uuid}}/{{$.pipeline_task_uuid}}/example_gen_output\", \"--dataset_stats_dir={{$.inputs.parameters['root_dir']}}/{{$.pipeline_job_uuid}}/{{$.pipeline_task_uuid}}/stats/\", \"--stats_result_path={{$.outputs.artifacts['dataset_stats'].uri}}\", \"--dataset_schema_path={{$.outputs.artifacts['dataset_schema'].uri}}\", \"--job_name=tabular-stats-and-example-gen-{{$.pipeline_job_uuid}}-{{$.pipeline_task_uuid}}\", \"--dataflow_project={{$.inputs.parameters['project']}}\", \"--error_file_path={{$.inputs.parameters['root_dir']}}/{{$.pipeline_job_uuid}}/{{$.pipeline_task_uuid}}/error.pb\", \"--dataflow_staging_dir={{$.inputs.parameters['root_dir']}}/{{$.pipeline_job_uuid}}/{{$.pipeline_task_uuid}}/dataflow_staging\", \"--dataflow_tmp_dir={{$.inputs.parameters['root_dir']}}/{{$.pipeline_job_uuid}}/{{$.pipeline_task_uuid}}/dataflow_tmp\", \"--dataflow_max_num_workers={{$.inputs.parameters['dataflow_max_num_workers']}}\", \"--dataflow_worker_container_image=us-docker.pkg.dev/vertex-ai/automl-tabular/dataflow-worker:20220629_0725_RC00\", \"--dataflow_machine_type={{$.inputs.parameters['dataflow_machine_type']}}\", \"--dataflow_disk_size_gb={{$.inputs.parameters['dataflow_disk_size_gb']}}\", \"--dataflow_kms_key={{$.inputs.parameters['encryption_spec_key_name']}}\", \"--dataflow_subnetwork_fully_qualified={{$.inputs.parameters['dataflow_subnetwork']}}\", \"--dataflow_use_public_ips={{$.inputs.parameters['dataflow_use_public_ips']}}\", \"--dataflow_service_account={{$.inputs.parameters['dataflow_service_account']}}\", \"--is_distill={{$.inputs.parameters['run_distillation']}}\", \"--additional_experiments={{$.inputs.parameters['additional_experiments']}}\", \"--metadata_path={{$.outputs.artifacts['metadata'].uri}}\", \"--train_split={{$.outputs.artifacts['train_split'].uri}}\", \"--eval_split={{$.outputs.artifacts['eval_split'].uri}}\", \"--test_split={{$.outputs.artifacts['test_split'].uri}}\", \"--test_split_for_batch_prediction_component={{$.outputs.parameters['test_split_json'].output_file}}\", \"--downsampled_test_split_for_batch_prediction_component={{$.outputs.parameters['downsampled_test_split_json'].output_file}}\", \"--instance_baseline_path={{$.outputs.artifacts['instance_baseline'].uri}}\", \"--parse_json=true\", \"--generate_additional_downsample_test_split=true\", \"--executor_input={{$.json_escape[1]}}\"]}}]}}"
            ],
            "command": [
              "python3",
              "-u",
              "-m",
              "google_cloud_pipeline_components.container.v1.gcp_launcher.launcher"
            ],
            "image": "gcr.io/ml-pipeline/google-cloud-pipeline-components:1.0.10"
          }
        },
        "exec-transform-configuration-planner": {
          "container": {
            "args": [
              "--type",
              "CustomJob",
              "--project",
              "{{$.inputs.parameters['project']}}",
              "--location",
              "{{$.inputs.parameters['location']}}",
              "--gcp_resources",
              "{{$.outputs.parameters['gcp_resources'].output_file}}",
              "--payload",
              "{\"display_name\": \"automl-tabular-transform-{{$.pipeline_job_uuid}}-{{$.pipeline_task_uuid}}\", \"encryption_spec\": {\"kms_key_name\":\"{{$.inputs.parameters['encryption_spec_key_name']}}\"}, \"job_spec\": {\"worker_pool_specs\": [{\"replica_count\": 1, \"machine_spec\": {\"machine_type\": \"n1-standard-8\"}, \"container_spec\": {\"image_uri\":\"us-docker.pkg.dev/vertex-ai/automl-tabular/feature-transform-engine:20220629_0725_RC00\", \"args\": [\"transform_configuration_planner\", \"--fte_transform_configuration_path={{$.inputs.parameters['root_dir']}}/{{$.pipeline_job_uuid}}/{{$.pipeline_task_uuid}}/transform_configuration\", \"--fte_transform_configuration_output_path={{$.outputs.parameters['fte_transform_configuration_path'].output_file}}\", \"--transform_config_path={{$.inputs.parameters['transform_config']}}\", \"--target_column={{$.inputs.parameters['target_column']}}\", \"--analyze_data_path={{$.inputs.artifacts['analyze_data'].uri}}\", \"--weight_column={{$.inputs.parameters['weight_column']}}\", \"--prediction_type={{$.inputs.parameters['prediction_type']}}\", \"--is_distill={{$.inputs.parameters['is_distillation']}}\", \"--dataset_stats_path={{$.inputs.artifacts['dataset_stats'].uri}}\", \"--training_schema_path={{$.outputs.artifacts['training_schema'].uri}}\", \"--instance_baseline_path={{$.outputs.artifacts['instance_baseline'].uri}}\"]}}]}}"
            ],
            "command": [
              "python3",
              "-u",
              "-m",
              "google_cloud_pipeline_components.container.v1.gcp_launcher.launcher"
            ],
            "image": "gcr.io/ml-pipeline/google-cloud-pipeline-components:1.0.10"
          }
        }
      }
    },
    "pipelineInfo": {
      "name": "automl-tabular-tabnet-hyperparameter-tuning-job"
    },
    "root": {
      "dag": {
        "outputs": {
          "artifacts": {
            "model-evaluation-evaluation_metrics": {
              "artifactSelectors": [
                {
                  "outputArtifactKey": "model-evaluation-evaluation_metrics",
                  "producerSubtask": "exit-handler-1"
                }
              ]
            }
          }
        },
        "tasks": {
          "automl-tabular-finalizer": {
            "componentRef": {
              "name": "comp-automl-tabular-finalizer"
            },
            "dependentTasks": [
              "exit-handler-1"
            ],
            "inputs": {
              "parameters": {
                "encryption_spec_key_name": {
                  "runtimeValue": {
                    "constantValue": {
                      "stringValue": ""
                    }
                  }
                },
                "location": {
                  "componentInputParameter": "location"
                },
                "project": {
                  "componentInputParameter": "project"
                },
                "root_dir": {
                  "componentInputParameter": "root_dir"
                }
              }
            },
            "taskInfo": {
              "name": "automl-tabular-finalizer"
            },
            "triggerPolicy": {
              "strategy": "ALL_UPSTREAM_TASKS_COMPLETED"
            }
          },
          "exit-handler-1": {
            "componentRef": {
              "name": "comp-exit-handler-1"
            },
            "inputs": {
              "parameters": {
                "pipelineparam--data_source_bigquery_table_path": {
                  "componentInputParameter": "data_source_bigquery_table_path"
                },
                "pipelineparam--data_source_csv_filenames": {
                  "componentInputParameter": "data_source_csv_filenames"
                },
                "pipelineparam--dataflow_service_account": {
                  "componentInputParameter": "dataflow_service_account"
                },
                "pipelineparam--dataflow_subnetwork": {
                  "componentInputParameter": "dataflow_subnetwork"
                },
                "pipelineparam--dataflow_use_public_ips": {
                  "componentInputParameter": "dataflow_use_public_ips"
                },
                "pipelineparam--enable_profiler": {
                  "componentInputParameter": "enable_profiler"
                },
                "pipelineparam--encryption_spec_key_name": {
                  "componentInputParameter": "encryption_spec_key_name"
                },
                "pipelineparam--eval_frequency_secs": {
                  "componentInputParameter": "eval_frequency_secs"
                },
                "pipelineparam--eval_steps": {
                  "componentInputParameter": "eval_steps"
                },
                "pipelineparam--evaluation_batch_predict_machine_type": {
                  "componentInputParameter": "evaluation_batch_predict_machine_type"
                },
                "pipelineparam--evaluation_batch_predict_max_replica_count": {
                  "componentInputParameter": "evaluation_batch_predict_max_replica_count"
                },
                "pipelineparam--evaluation_batch_predict_starting_replica_count": {
                  "componentInputParameter": "evaluation_batch_predict_starting_replica_count"
                },
                "pipelineparam--evaluation_dataflow_disk_size_gb": {
                  "componentInputParameter": "evaluation_dataflow_disk_size_gb"
                },
                "pipelineparam--evaluation_dataflow_machine_type": {
                  "componentInputParameter": "evaluation_dataflow_machine_type"
                },
                "pipelineparam--evaluation_dataflow_max_num_workers": {
                  "componentInputParameter": "evaluation_dataflow_max_num_workers"
                },
                "pipelineparam--location": {
                  "componentInputParameter": "location"
                },
                "pipelineparam--max_failed_trial_count": {
                  "componentInputParameter": "max_failed_trial_count"
                },
                "pipelineparam--max_trial_count": {
                  "componentInputParameter": "max_trial_count"
                },
                "pipelineparam--parallel_trial_count": {
                  "componentInputParameter": "parallel_trial_count"
                },
                "pipelineparam--predefined_split_key": {
                  "componentInputParameter": "predefined_split_key"
                },
                "pipelineparam--prediction_type": {
                  "componentInputParameter": "prediction_type"
                },
                "pipelineparam--project": {
                  "componentInputParameter": "project"
                },
                "pipelineparam--root_dir": {
                  "componentInputParameter": "root_dir"
                },
                "pipelineparam--run_evaluation": {
                  "componentInputParameter": "run_evaluation"
                },
                "pipelineparam--seed": {
                  "componentInputParameter": "seed"
                },
                "pipelineparam--stats_and_example_gen_dataflow_disk_size_gb": {
                  "componentInputParameter": "stats_and_example_gen_dataflow_disk_size_gb"
                },
                "pipelineparam--stats_and_example_gen_dataflow_machine_type": {
                  "componentInputParameter": "stats_and_example_gen_dataflow_machine_type"
                },
                "pipelineparam--stats_and_example_gen_dataflow_max_num_workers": {
                  "componentInputParameter": "stats_and_example_gen_dataflow_max_num_workers"
                },
                "pipelineparam--stratified_split_key": {
                  "componentInputParameter": "stratified_split_key"
                },
                "pipelineparam--study_spec_algorithm": {
                  "componentInputParameter": "study_spec_algorithm"
                },
                "pipelineparam--study_spec_measurement_selection_type": {
                  "componentInputParameter": "study_spec_measurement_selection_type"
                },
                "pipelineparam--study_spec_metrics": {
                  "componentInputParameter": "study_spec_metrics"
                },
                "pipelineparam--study_spec_parameters_override": {
                  "componentInputParameter": "study_spec_parameters_override"
                },
                "pipelineparam--tabnet": {
                  "componentInputParameter": "tabnet"
                },
                "pipelineparam--target_column": {
                  "componentInputParameter": "target_column"
                },
                "pipelineparam--test_fraction": {
                  "componentInputParameter": "test_fraction"
                },
                "pipelineparam--timestamp_split_key": {
                  "componentInputParameter": "timestamp_split_key"
                },
                "pipelineparam--training_fraction": {
                  "componentInputParameter": "training_fraction"
                },
                "pipelineparam--training_machine_spec": {
                  "componentInputParameter": "training_machine_spec"
                },
                "pipelineparam--training_replica_count": {
                  "componentInputParameter": "training_replica_count"
                },
                "pipelineparam--transform_config": {
                  "componentInputParameter": "transform_config"
                },
                "pipelineparam--transform_dataflow_disk_size_gb": {
                  "componentInputParameter": "transform_dataflow_disk_size_gb"
                },
                "pipelineparam--transform_dataflow_machine_type": {
                  "componentInputParameter": "transform_dataflow_machine_type"
                },
                "pipelineparam--transform_dataflow_max_num_workers": {
                  "componentInputParameter": "transform_dataflow_max_num_workers"
                },
                "pipelineparam--validation_fraction": {
                  "componentInputParameter": "validation_fraction"
                },
                "pipelineparam--weight_column": {
                  "componentInputParameter": "weight_column"
                }
              }
            },
            "taskInfo": {
              "name": "exit-handler-1"
            }
          }
        }
      },
      "inputDefinitions": {
        "parameters": {
          "data_source_bigquery_table_path": {
            "type": "STRING"
          },
          "data_source_csv_filenames": {
            "type": "STRING"
          },
          "dataflow_service_account": {
            "type": "STRING"
          },
          "dataflow_subnetwork": {
            "type": "STRING"
          },
          "dataflow_use_public_ips": {
            "type": "STRING"
          },
          "enable_profiler": {
            "type": "STRING"
          },
          "encryption_spec_key_name": {
            "type": "STRING"
          },
          "eval_frequency_secs": {
            "type": "INT"
          },
          "eval_steps": {
            "type": "INT"
          },
          "evaluation_batch_predict_machine_type": {
            "type": "STRING"
          },
          "evaluation_batch_predict_max_replica_count": {
            "type": "INT"
          },
          "evaluation_batch_predict_starting_replica_count": {
            "type": "INT"
          },
          "evaluation_dataflow_disk_size_gb": {
            "type": "INT"
          },
          "evaluation_dataflow_machine_type": {
            "type": "STRING"
          },
          "evaluation_dataflow_max_num_workers": {
            "type": "INT"
          },
          "location": {
            "type": "STRING"
          },
          "max_failed_trial_count": {
            "type": "INT"
          },
          "max_trial_count": {
            "type": "INT"
          },
          "parallel_trial_count": {
            "type": "INT"
          },
          "predefined_split_key": {
            "type": "STRING"
          },
          "prediction_type": {
            "type": "STRING"
          },
          "project": {
            "type": "STRING"
          },
          "root_dir": {
            "type": "STRING"
          },
          "run_evaluation": {
            "type": "STRING"
          },
          "seed": {
            "type": "INT"
          },
          "stats_and_example_gen_dataflow_disk_size_gb": {
            "type": "INT"
          },
          "stats_and_example_gen_dataflow_machine_type": {
            "type": "STRING"
          },
          "stats_and_example_gen_dataflow_max_num_workers": {
            "type": "INT"
          },
          "stratified_split_key": {
            "type": "STRING"
          },
          "study_spec_algorithm": {
            "type": "STRING"
          },
          "study_spec_measurement_selection_type": {
            "type": "STRING"
          },
          "study_spec_metrics": {
            "type": "STRING"
          },
          "study_spec_parameters_override": {
            "type": "STRING"
          },
          "tabnet": {
            "type": "STRING"
          },
          "target_column": {
            "type": "STRING"
          },
          "test_fraction": {
            "type": "DOUBLE"
          },
          "timestamp_split_key": {
            "type": "STRING"
          },
          "training_fraction": {
            "type": "DOUBLE"
          },
          "training_machine_spec": {
            "type": "STRING"
          },
          "training_replica_count": {
            "type": "INT"
          },
          "transform_config": {
            "type": "STRING"
          },
          "transform_dataflow_disk_size_gb": {
            "type": "INT"
          },
          "transform_dataflow_machine_type": {
            "type": "STRING"
          },
          "transform_dataflow_max_num_workers": {
            "type": "INT"
          },
          "validation_fraction": {
            "type": "DOUBLE"
          },
          "weight_column": {
            "type": "STRING"
          }
        }
      },
      "outputDefinitions": {
        "artifacts": {
          "model-evaluation-evaluation_metrics": {
            "artifactType": {
              "schemaTitle": "system.Metrics",
              "schemaVersion": "0.0.1"
            }
          }
        }
      }
    },
    "schemaVersion": "2.0.0",
    "sdkVersion": "kfp-1.8.11"
  },
  "runtimeConfig": {
    "parameters": {
      "data_source_bigquery_table_path": {
        "stringValue": ""
      },
      "data_source_csv_filenames": {
        "stringValue": ""
      },
      "dataflow_service_account": {
        "stringValue": ""
      },
      "dataflow_subnetwork": {
        "stringValue": ""
      },
      "dataflow_use_public_ips": {
        "stringValue": "True"
      },
      "enable_profiler": {
        "stringValue": "False"
      },
      "encryption_spec_key_name": {
        "stringValue": ""
      },
      "eval_frequency_secs": {
        "intValue": "600"
      },
      "eval_steps": {
        "intValue": "0"
      },
      "evaluation_batch_predict_machine_type": {
        "stringValue": "n1-standard-16"
      },
      "evaluation_batch_predict_max_replica_count": {
        "intValue": "25"
      },
      "evaluation_batch_predict_starting_replica_count": {
        "intValue": "25"
      },
      "evaluation_dataflow_disk_size_gb": {
        "intValue": "50"
      },
      "evaluation_dataflow_machine_type": {
        "stringValue": "n1-standard-4"
      },
      "evaluation_dataflow_max_num_workers": {
        "intValue": "25"
      },
      "max_failed_trial_count": {
        "intValue": "0"
      },
      "predefined_split_key": {
        "stringValue": ""
      },
      "run_evaluation": {
        "stringValue": "False"
      },
      "seed": {
        "intValue": "1"
      },
      "stats_and_example_gen_dataflow_disk_size_gb": {
        "intValue": "40"
      },
      "stats_and_example_gen_dataflow_machine_type": {
        "stringValue": "n1-standard-16"
      },
      "stats_and_example_gen_dataflow_max_num_workers": {
        "intValue": "25"
      },
      "stratified_split_key": {
        "stringValue": ""
      },
      "study_spec_algorithm": {
        "stringValue": "ALGORITHM_UNSPECIFIED"
      },
      "study_spec_measurement_selection_type": {
        "stringValue": "BEST_MEASUREMENT"
      },
      "tabnet": {
        "stringValue": "False"
      },
      "test_fraction": {
        "doubleValue": -1.0
      },
      "timestamp_split_key": {
        "stringValue": ""
      },
      "training_fraction": {
        "doubleValue": -1.0
      },
      "training_replica_count": {
        "intValue": "1"
      },
      "transform_dataflow_disk_size_gb": {
        "intValue": "40"
      },
      "transform_dataflow_machine_type": {
        "stringValue": "n1-standard-16"
      },
      "transform_dataflow_max_num_workers": {
        "intValue": "25"
      },
      "validation_fraction": {
        "doubleValue": -1.0
      },
      "weight_column": {
        "stringValue": ""
      }
    }
  }
}