# PIPELINE DEFINITION
# Name: learn-to-learn-forecasting
# Description: The AutoML Forecasting pipeline.
# Inputs:
#    available_at_forecast_columns: str [Default: '']
#    context_window: int [Default: 0.0]
#    data_source_bigquery_table_path: str [Default: '']
#    data_source_csv_filenames: str [Default: '']
#    enable_probabilistic_inference: bool [Default: False]
#    encryption_spec_key_name: str [Default: '']
#    fast_testing: bool [Default: False]
#    feature_transform_engine_bigquery_staging_full_dataset_id: str [Default: '']
#    feature_transform_engine_dataflow_disk_size_gb: int [Default: 40.0]
#    feature_transform_engine_dataflow_machine_type: str [Default: 'n1-standard-16']
#    feature_transform_engine_dataflow_max_num_workers: int [Default: 10.0]
#    feature_transform_engine_dataflow_subnetwork: str [Default: '']
#    feature_transform_engine_dataflow_use_public_ips: bool [Default: True]
#    forecast_horizon: int [Default: 0.0]
#    location: str
#    num_selected_trials: int [Default: 10.0]
#    optimization_objective: str
#    predefined_split_key: str [Default: '']
#    project: str
#    quantiles: str [Default: '']
#    root_dir: str
#    stage_1_num_parallel_trials: int [Default: 35.0]
#    stage_1_tuner_worker_pool_specs_override: list
#    stage_1_tuning_result_artifact_uri: str [Default: '']
#    stage_2_num_parallel_trials: int [Default: 35.0]
#    stage_2_trainer_worker_pool_specs_override: list
#    study_spec_parameters_override: list
#    target_column: str
#    test_fraction: float [Default: -1.0]
#    time_column: str
#    time_series_attribute_columns: str [Default: '']
#    time_series_identifier_column: str
#    timestamp_split_key: str [Default: '']
#    train_budget_milli_node_hours: float
#    training_fraction: float [Default: -1.0]
#    transformations: str
#    unavailable_at_forecast_columns: str [Default: '']
#    validation_fraction: float [Default: -1.0]
#    weight_column: str [Default: '']
#    window_max_count: int [Default: 0.0]
#    window_predefined_column: str [Default: '']
#    window_stride_length: int [Default: 0.0]
components:
  comp-automl-forecasting-ensemble:
    executorLabel: exec-automl-forecasting-ensemble
    inputDefinitions:
      artifacts:
        instance_baseline:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
        instance_schema_path:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
        metadata:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
        transform_output:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
        tuning_result_input:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
      parameters:
        encryption_spec_key_name:
          defaultValue: ''
          isOptional: true
          parameterType: STRING
        location:
          parameterType: STRING
        prediction_image_uri:
          parameterType: STRING
        project:
          parameterType: STRING
        root_dir:
          parameterType: STRING
    outputDefinitions:
      artifacts:
        explanation_metadata_artifact:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
        model_architecture:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
        unmanaged_container_model:
          artifactType:
            schemaTitle: google.UnmanagedContainerModel
            schemaVersion: 0.0.1
      parameters:
        explanation_metadata:
          parameterType: STRUCT
        explanation_parameters:
          parameterType: STRUCT
        gcp_resources:
          parameterType: STRING
  comp-automl-forecasting-ensemble-2:
    executorLabel: exec-automl-forecasting-ensemble-2
    inputDefinitions:
      artifacts:
        instance_baseline:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
        instance_schema_path:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
        metadata:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
        transform_output:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
        tuning_result_input:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
      parameters:
        encryption_spec_key_name:
          defaultValue: ''
          isOptional: true
          parameterType: STRING
        location:
          parameterType: STRING
        prediction_image_uri:
          parameterType: STRING
        project:
          parameterType: STRING
        root_dir:
          parameterType: STRING
    outputDefinitions:
      artifacts:
        explanation_metadata_artifact:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
        model_architecture:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
        unmanaged_container_model:
          artifactType:
            schemaTitle: google.UnmanagedContainerModel
            schemaVersion: 0.0.1
      parameters:
        explanation_metadata:
          parameterType: STRUCT
        explanation_parameters:
          parameterType: STRUCT
        gcp_resources:
          parameterType: STRING
  comp-automl-forecasting-stage-1-tuner:
    executorLabel: exec-automl-forecasting-stage-1-tuner
    inputDefinitions:
      artifacts:
        materialized_eval_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
        transform_output:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
      parameters:
        deadline_hours:
          parameterType: NUMBER_DOUBLE
        encryption_spec_key_name:
          defaultValue: ''
          isOptional: true
          parameterType: STRING
        location:
          parameterType: STRING
        num_parallel_trials:
          parameterType: NUMBER_INTEGER
        num_selected_trials:
          parameterType: NUMBER_INTEGER
        project:
          parameterType: STRING
        reduce_search_space_mode:
          defaultValue: regular
          isOptional: true
          parameterType: STRING
        root_dir:
          parameterType: STRING
        single_run_max_secs:
          parameterType: NUMBER_INTEGER
        study_spec_parameters_override:
          defaultValue: []
          isOptional: true
          parameterType: LIST
        worker_pool_specs_override_json:
          defaultValue: []
          isOptional: true
          parameterType: LIST
    outputDefinitions:
      artifacts:
        tuning_result_output:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
      parameters:
        gcp_resources:
          parameterType: STRING
  comp-automl-forecasting-stage-2-tuner:
    executorLabel: exec-automl-forecasting-stage-2-tuner
    inputDefinitions:
      artifacts:
        materialized_eval_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
        transform_output:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
        tuning_result_input_path:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
      parameters:
        deadline_hours:
          parameterType: NUMBER_DOUBLE
        encryption_spec_key_name:
          defaultValue: ''
          isOptional: true
          parameterType: STRING
        location:
          parameterType: STRING
        num_parallel_trials:
          parameterType: NUMBER_INTEGER
        num_selected_trials:
          parameterType: NUMBER_INTEGER
        project:
          parameterType: STRING
        root_dir:
          parameterType: STRING
        single_run_max_secs:
          parameterType: NUMBER_INTEGER
        worker_pool_specs_override_json:
          defaultValue: []
          isOptional: true
          parameterType: LIST
    outputDefinitions:
      artifacts:
        tuning_result_output:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
      parameters:
        gcp_resources:
          parameterType: STRING
  comp-automl-tabular-finalizer:
    executorLabel: exec-automl-tabular-finalizer
    inputDefinitions:
      parameters:
        encryption_spec_key_name:
          defaultValue: ''
          isOptional: true
          parameterType: STRING
        location:
          parameterType: STRING
        project:
          parameterType: STRING
        root_dir:
          parameterType: STRING
    outputDefinitions:
      parameters:
        gcp_resources:
          parameterType: STRING
  comp-calculate-training-parameters:
    executorLabel: exec-calculate-training-parameters
    inputDefinitions:
      parameters:
        fast_testing:
          defaultValue: false
          isOptional: true
          parameterType: BOOLEAN
        is_skip_architecture_search:
          defaultValue: false
          isOptional: true
          parameterType: BOOLEAN
        selected_trials:
          parameterType: NUMBER_INTEGER
        stage_1_num_parallel_trials:
          parameterType: NUMBER_INTEGER
        stage_2_num_parallel_trials:
          parameterType: NUMBER_INTEGER
        train_budget_milli_node_hours:
          parameterType: NUMBER_DOUBLE
    outputDefinitions:
      parameters:
        stage_1_deadline_hours:
          parameterType: NUMBER_DOUBLE
        stage_1_single_run_max_secs:
          parameterType: NUMBER_INTEGER
        stage_2_deadline_hours:
          parameterType: NUMBER_DOUBLE
        stage_2_single_run_max_secs:
          parameterType: NUMBER_INTEGER
  comp-calculate-training-parameters-2:
    executorLabel: exec-calculate-training-parameters-2
    inputDefinitions:
      parameters:
        fast_testing:
          defaultValue: false
          isOptional: true
          parameterType: BOOLEAN
        is_skip_architecture_search:
          defaultValue: false
          isOptional: true
          parameterType: BOOLEAN
        selected_trials:
          parameterType: NUMBER_INTEGER
        stage_1_num_parallel_trials:
          parameterType: NUMBER_INTEGER
        stage_2_num_parallel_trials:
          parameterType: NUMBER_INTEGER
        train_budget_milli_node_hours:
          parameterType: NUMBER_DOUBLE
    outputDefinitions:
      parameters:
        stage_1_deadline_hours:
          parameterType: NUMBER_DOUBLE
        stage_1_single_run_max_secs:
          parameterType: NUMBER_INTEGER
        stage_2_deadline_hours:
          parameterType: NUMBER_DOUBLE
        stage_2_single_run_max_secs:
          parameterType: NUMBER_INTEGER
  comp-calculate-transformations:
    executorLabel: exec-calculate-transformations
    inputDefinitions:
      parameters:
        predefined_split_key:
          parameterType: STRING
        transformations_path:
          parameterType: STRING
    outputDefinitions:
      parameters:
        tf_auto_transform_features:
          parameterType: LIST
  comp-condition-2:
    dag:
      tasks:
        automl-forecasting-ensemble:
          cachingOptions:
            enableCache: true
          componentRef:
            name: comp-automl-forecasting-ensemble
          dependentTasks:
          - automl-forecasting-stage-2-tuner
          - get-prediction-image-uri
          inputs:
            artifacts:
              instance_baseline:
                componentInputArtifact: pipelinechannel--training-configurator-and-validator-instance_baseline
              instance_schema_path:
                componentInputArtifact: pipelinechannel--feature-transform-engine-instance_schema
              metadata:
                componentInputArtifact: pipelinechannel--training-configurator-and-validator-metadata
              transform_output:
                componentInputArtifact: pipelinechannel--feature-transform-engine-transform_output
              tuning_result_input:
                taskOutputArtifact:
                  outputArtifactKey: tuning_result_output
                  producerTask: automl-forecasting-stage-2-tuner
            parameters:
              encryption_spec_key_name:
                componentInputParameter: pipelinechannel--encryption_spec_key_name
              location:
                componentInputParameter: pipelinechannel--location
              prediction_image_uri:
                taskOutputParameter:
                  outputParameterKey: Output
                  producerTask: get-prediction-image-uri
              project:
                componentInputParameter: pipelinechannel--project
              root_dir:
                componentInputParameter: pipelinechannel--root_dir
          taskInfo:
            name: automl-forecasting-ensemble
        automl-forecasting-stage-2-tuner:
          cachingOptions:
            enableCache: true
          componentRef:
            name: comp-automl-forecasting-stage-2-tuner
          dependentTasks:
          - calculate-training-parameters
          - importer
          inputs:
            artifacts:
              materialized_eval_split:
                componentInputArtifact: pipelinechannel--split-materialized-data-materialized_eval_split
              materialized_train_split:
                componentInputArtifact: pipelinechannel--split-materialized-data-materialized_train_split
              metadata:
                componentInputArtifact: pipelinechannel--training-configurator-and-validator-metadata
              transform_output:
                componentInputArtifact: pipelinechannel--feature-transform-engine-transform_output
              tuning_result_input_path:
                taskOutputArtifact:
                  outputArtifactKey: artifact
                  producerTask: importer
            parameters:
              deadline_hours:
                taskOutputParameter:
                  outputParameterKey: stage_2_deadline_hours
                  producerTask: calculate-training-parameters
              encryption_spec_key_name:
                componentInputParameter: pipelinechannel--encryption_spec_key_name
              location:
                componentInputParameter: pipelinechannel--location
              num_parallel_trials:
                componentInputParameter: pipelinechannel--stage_2_num_parallel_trials
              num_selected_trials:
                componentInputParameter: pipelinechannel--num_selected_trials
              project:
                componentInputParameter: pipelinechannel--project
              root_dir:
                componentInputParameter: pipelinechannel--root_dir
              single_run_max_secs:
                taskOutputParameter:
                  outputParameterKey: stage_2_single_run_max_secs
                  producerTask: calculate-training-parameters
              worker_pool_specs_override_json:
                componentInputParameter: pipelinechannel--stage_2_trainer_worker_pool_specs_override
          taskInfo:
            name: automl-forecasting-stage-2-tuner
        calculate-training-parameters:
          cachingOptions:
            enableCache: true
          componentRef:
            name: comp-calculate-training-parameters
          inputs:
            parameters:
              fast_testing:
                componentInputParameter: pipelinechannel--fast_testing
              is_skip_architecture_search:
                runtimeValue:
                  constant: 1.0
              selected_trials:
                componentInputParameter: pipelinechannel--num_selected_trials
              stage_1_num_parallel_trials:
                componentInputParameter: pipelinechannel--stage_1_num_parallel_trials
              stage_2_num_parallel_trials:
                componentInputParameter: pipelinechannel--stage_2_num_parallel_trials
              train_budget_milli_node_hours:
                componentInputParameter: pipelinechannel--train_budget_milli_node_hours
          taskInfo:
            name: calculate-training-parameters
        get-prediction-image-uri:
          cachingOptions:
            enableCache: true
          componentRef:
            name: comp-get-prediction-image-uri
          inputs:
            parameters:
              model_type:
                runtimeValue:
                  constant: l2l
          taskInfo:
            name: get-prediction-image-uri
        importer:
          cachingOptions:
            enableCache: true
          componentRef:
            name: comp-importer
          inputs:
            parameters:
              uri:
                componentInputParameter: pipelinechannel--stage_1_tuning_result_artifact_uri
          taskInfo:
            name: importer
        model-upload:
          cachingOptions:
            enableCache: true
          componentRef:
            name: comp-model-upload
          dependentTasks:
          - automl-forecasting-ensemble
          inputs:
            artifacts:
              explanation_metadata_artifact:
                taskOutputArtifact:
                  outputArtifactKey: explanation_metadata_artifact
                  producerTask: automl-forecasting-ensemble
              unmanaged_container_model:
                taskOutputArtifact:
                  outputArtifactKey: unmanaged_container_model
                  producerTask: automl-forecasting-ensemble
            parameters:
              display_name:
                componentInputParameter: pipelinechannel--model_display_name
              encryption_spec_key_name:
                componentInputParameter: pipelinechannel--encryption_spec_key_name
              explanation_parameters:
                taskOutputParameter:
                  outputParameterKey: explanation_parameters
                  producerTask: automl-forecasting-ensemble
              location:
                componentInputParameter: pipelinechannel--location
              project:
                componentInputParameter: pipelinechannel--project
              description:
                componentInputParameter: pipelinechannel--model_description
          taskInfo:
            name: model-upload
    inputDefinitions:
      artifacts:
        pipelinechannel--feature-transform-engine-instance_schema:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
        pipelinechannel--feature-transform-engine-transform_output:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
        pipelinechannel--split-materialized-data-materialized_eval_split:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
        pipelinechannel--split-materialized-data-materialized_train_split:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
        pipelinechannel--training-configurator-and-validator-instance_baseline:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
        pipelinechannel--training-configurator-and-validator-metadata:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
      parameters:
        pipelinechannel--encryption_spec_key_name:
          parameterType: STRING
        pipelinechannel--fast_testing:
          parameterType: BOOLEAN
        pipelinechannel--location:
          parameterType: STRING
        pipelinechannel--num_selected_trials:
          parameterType: NUMBER_INTEGER
        pipelinechannel--project:
          parameterType: STRING
        pipelinechannel--root_dir:
          parameterType: STRING
        pipelinechannel--stage_1_num_parallel_trials:
          parameterType: NUMBER_INTEGER
        pipelinechannel--stage_1_tuning_result_artifact_uri:
          parameterType: STRING
        pipelinechannel--stage_2_num_parallel_trials:
          parameterType: NUMBER_INTEGER
        pipelinechannel--stage_2_trainer_worker_pool_specs_override:
          parameterType: LIST
        pipelinechannel--string-not-empty-Output:
          parameterType: STRING
        pipelinechannel--train_budget_milli_node_hours:
          parameterType: NUMBER_DOUBLE
        pipelinechannel--model_display_name:
          parameterType: STRING
        pipelinechannel--model_description:
          parameterType: STRING
  comp-condition-3:
    dag:
      tasks:
        automl-forecasting-ensemble-2:
          cachingOptions:
            enableCache: true
          componentRef:
            name: comp-automl-forecasting-ensemble-2
          dependentTasks:
          - automl-forecasting-stage-1-tuner
          - get-prediction-image-uri-2
          inputs:
            artifacts:
              instance_baseline:
                componentInputArtifact: pipelinechannel--training-configurator-and-validator-instance_baseline
              instance_schema_path:
                componentInputArtifact: pipelinechannel--feature-transform-engine-instance_schema
              metadata:
                componentInputArtifact: pipelinechannel--training-configurator-and-validator-metadata
              transform_output:
                componentInputArtifact: pipelinechannel--feature-transform-engine-transform_output
              tuning_result_input:
                taskOutputArtifact:
                  outputArtifactKey: tuning_result_output
                  producerTask: automl-forecasting-stage-1-tuner
            parameters:
              encryption_spec_key_name:
                componentInputParameter: pipelinechannel--encryption_spec_key_name
              location:
                componentInputParameter: pipelinechannel--location
              prediction_image_uri:
                taskOutputParameter:
                  outputParameterKey: Output
                  producerTask: get-prediction-image-uri-2
              project:
                componentInputParameter: pipelinechannel--project
              root_dir:
                componentInputParameter: pipelinechannel--root_dir
          taskInfo:
            name: automl-forecasting-ensemble-2
        automl-forecasting-stage-1-tuner:
          cachingOptions:
            enableCache: true
          componentRef:
            name: comp-automl-forecasting-stage-1-tuner
          dependentTasks:
          - calculate-training-parameters-2
          inputs:
            artifacts:
              materialized_eval_split:
                componentInputArtifact: pipelinechannel--split-materialized-data-materialized_eval_split
              materialized_train_split:
                componentInputArtifact: pipelinechannel--split-materialized-data-materialized_train_split
              metadata:
                componentInputArtifact: pipelinechannel--training-configurator-and-validator-metadata
              transform_output:
                componentInputArtifact: pipelinechannel--feature-transform-engine-transform_output
            parameters:
              deadline_hours:
                taskOutputParameter:
                  outputParameterKey: stage_1_deadline_hours
                  producerTask: calculate-training-parameters-2
              encryption_spec_key_name:
                componentInputParameter: pipelinechannel--encryption_spec_key_name
              location:
                componentInputParameter: pipelinechannel--location
              num_parallel_trials:
                componentInputParameter: pipelinechannel--stage_1_num_parallel_trials
              num_selected_trials:
                componentInputParameter: pipelinechannel--num_selected_trials
              project:
                componentInputParameter: pipelinechannel--project
              root_dir:
                componentInputParameter: pipelinechannel--root_dir
              single_run_max_secs:
                taskOutputParameter:
                  outputParameterKey: stage_1_single_run_max_secs
                  producerTask: calculate-training-parameters-2
              study_spec_parameters_override:
                componentInputParameter: pipelinechannel--study_spec_parameters_override
              worker_pool_specs_override_json:
                componentInputParameter: pipelinechannel--stage_1_tuner_worker_pool_specs_override
          taskInfo:
            name: automl-forecasting-stage-1-tuner
        calculate-training-parameters-2:
          cachingOptions:
            enableCache: true
          componentRef:
            name: comp-calculate-training-parameters-2
          inputs:
            parameters:
              fast_testing:
                componentInputParameter: pipelinechannel--fast_testing
              is_skip_architecture_search:
                runtimeValue:
                  constant: 0.0
              selected_trials:
                componentInputParameter: pipelinechannel--num_selected_trials
              stage_1_num_parallel_trials:
                componentInputParameter: pipelinechannel--stage_1_num_parallel_trials
              stage_2_num_parallel_trials:
                componentInputParameter: pipelinechannel--stage_2_num_parallel_trials
              train_budget_milli_node_hours:
                componentInputParameter: pipelinechannel--train_budget_milli_node_hours
          taskInfo:
            name: calculate-training-parameters-2
        get-prediction-image-uri-2:
          cachingOptions:
            enableCache: true
          componentRef:
            name: comp-get-prediction-image-uri-2
          inputs:
            parameters:
              model_type:
                runtimeValue:
                  constant: l2l
          taskInfo:
            name: get-prediction-image-uri-2
        model-upload-2:
          cachingOptions:
            enableCache: true
          componentRef:
            name: comp-model-upload-2
          dependentTasks:
          - automl-forecasting-ensemble-2
          inputs:
            artifacts:
              explanation_metadata_artifact:
                taskOutputArtifact:
                  outputArtifactKey: explanation_metadata_artifact
                  producerTask: automl-forecasting-ensemble-2
              unmanaged_container_model:
                taskOutputArtifact:
                  outputArtifactKey: unmanaged_container_model
                  producerTask: automl-forecasting-ensemble-2
            parameters:
              display_name:
                componentInputParameter: pipelinechannel--model_display_name
              encryption_spec_key_name:
                componentInputParameter: pipelinechannel--encryption_spec_key_name
              explanation_parameters:
                taskOutputParameter:
                  outputParameterKey: explanation_parameters
                  producerTask: automl-forecasting-ensemble-2
              location:
                componentInputParameter: pipelinechannel--location
              project:
                componentInputParameter: pipelinechannel--project
              description:
                componentInputParameter: pipelinechannel--model_description
          taskInfo:
            name: model-upload-2
    inputDefinitions:
      artifacts:
        pipelinechannel--feature-transform-engine-instance_schema:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
        pipelinechannel--feature-transform-engine-transform_output:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
        pipelinechannel--split-materialized-data-materialized_eval_split:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
        pipelinechannel--split-materialized-data-materialized_train_split:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
        pipelinechannel--training-configurator-and-validator-instance_baseline:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
        pipelinechannel--training-configurator-and-validator-metadata:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
      parameters:
        pipelinechannel--encryption_spec_key_name:
          parameterType: STRING
        pipelinechannel--fast_testing:
          parameterType: BOOLEAN
        pipelinechannel--location:
          parameterType: STRING
        pipelinechannel--num_selected_trials:
          parameterType: NUMBER_INTEGER
        pipelinechannel--project:
          parameterType: STRING
        pipelinechannel--root_dir:
          parameterType: STRING
        pipelinechannel--stage_1_num_parallel_trials:
          parameterType: NUMBER_INTEGER
        pipelinechannel--stage_1_tuner_worker_pool_specs_override:
          parameterType: LIST
        pipelinechannel--stage_2_num_parallel_trials:
          parameterType: NUMBER_INTEGER
        pipelinechannel--string-not-empty-Output:
          parameterType: STRING
        pipelinechannel--study_spec_parameters_override:
          parameterType: LIST
        pipelinechannel--train_budget_milli_node_hours:
          parameterType: NUMBER_DOUBLE
        pipelinechannel--model_display_name:
          parameterType: STRING
        pipelinechannel--model_description:
          parameterType: STRING
  comp-exit-handler-1:
    dag:
      tasks:
        calculate-transformations:
          cachingOptions:
            enableCache: true
          componentRef:
            name: comp-calculate-transformations
          inputs:
            parameters:
              predefined_split_key:
                componentInputParameter: pipelinechannel--predefined_split_key
              transformations_path:
                componentInputParameter: pipelinechannel--transformations
          taskInfo:
            name: calculate-transformations
        condition-2:
          componentRef:
            name: comp-condition-2
          dependentTasks:
          - feature-transform-engine
          - split-materialized-data
          - string-not-empty
          - training-configurator-and-validator
          inputs:
            artifacts:
              pipelinechannel--feature-transform-engine-instance_schema:
                taskOutputArtifact:
                  outputArtifactKey: instance_schema
                  producerTask: feature-transform-engine
              pipelinechannel--feature-transform-engine-transform_output:
                taskOutputArtifact:
                  outputArtifactKey: transform_output
                  producerTask: feature-transform-engine
              pipelinechannel--split-materialized-data-materialized_eval_split:
                taskOutputArtifact:
                  outputArtifactKey: materialized_eval_split
                  producerTask: split-materialized-data
              pipelinechannel--split-materialized-data-materialized_train_split:
                taskOutputArtifact:
                  outputArtifactKey: materialized_train_split
                  producerTask: split-materialized-data
              pipelinechannel--training-configurator-and-validator-instance_baseline:
                taskOutputArtifact:
                  outputArtifactKey: instance_baseline
                  producerTask: training-configurator-and-validator
              pipelinechannel--training-configurator-and-validator-metadata:
                taskOutputArtifact:
                  outputArtifactKey: metadata
                  producerTask: training-configurator-and-validator
            parameters:
              pipelinechannel--encryption_spec_key_name:
                componentInputParameter: pipelinechannel--encryption_spec_key_name
              pipelinechannel--fast_testing:
                componentInputParameter: pipelinechannel--fast_testing
              pipelinechannel--location:
                componentInputParameter: pipelinechannel--location
              pipelinechannel--num_selected_trials:
                componentInputParameter: pipelinechannel--num_selected_trials
              pipelinechannel--project:
                componentInputParameter: pipelinechannel--project
              pipelinechannel--root_dir:
                componentInputParameter: pipelinechannel--root_dir
              pipelinechannel--stage_1_num_parallel_trials:
                componentInputParameter: pipelinechannel--stage_1_num_parallel_trials
              pipelinechannel--stage_1_tuning_result_artifact_uri:
                componentInputParameter: pipelinechannel--stage_1_tuning_result_artifact_uri
              pipelinechannel--stage_2_num_parallel_trials:
                componentInputParameter: pipelinechannel--stage_2_num_parallel_trials
              pipelinechannel--stage_2_trainer_worker_pool_specs_override:
                componentInputParameter: pipelinechannel--stage_2_trainer_worker_pool_specs_override
              pipelinechannel--string-not-empty-Output:
                taskOutputParameter:
                  outputParameterKey: Output
                  producerTask: string-not-empty
              pipelinechannel--train_budget_milli_node_hours:
                componentInputParameter: pipelinechannel--train_budget_milli_node_hours
              pipelinechannel--model_display_name:
                componentInputParameter: pipelinechannel--model_display_name
              pipelinechannel--model_description:
                componentInputParameter: pipelinechannel--model_description
          taskInfo:
            name: stage_1_tuning_result_artifact_uri_not_empty
          triggerPolicy:
            condition: inputs.parameter_values['pipelinechannel--string-not-empty-Output']
              == 'true'
        condition-3:
          componentRef:
            name: comp-condition-3
          dependentTasks:
          - feature-transform-engine
          - split-materialized-data
          - string-not-empty
          - training-configurator-and-validator
          inputs:
            artifacts:
              pipelinechannel--feature-transform-engine-instance_schema:
                taskOutputArtifact:
                  outputArtifactKey: instance_schema
                  producerTask: feature-transform-engine
              pipelinechannel--feature-transform-engine-transform_output:
                taskOutputArtifact:
                  outputArtifactKey: transform_output
                  producerTask: feature-transform-engine
              pipelinechannel--split-materialized-data-materialized_eval_split:
                taskOutputArtifact:
                  outputArtifactKey: materialized_eval_split
                  producerTask: split-materialized-data
              pipelinechannel--split-materialized-data-materialized_train_split:
                taskOutputArtifact:
                  outputArtifactKey: materialized_train_split
                  producerTask: split-materialized-data
              pipelinechannel--training-configurator-and-validator-instance_baseline:
                taskOutputArtifact:
                  outputArtifactKey: instance_baseline
                  producerTask: training-configurator-and-validator
              pipelinechannel--training-configurator-and-validator-metadata:
                taskOutputArtifact:
                  outputArtifactKey: metadata
                  producerTask: training-configurator-and-validator
            parameters:
              pipelinechannel--encryption_spec_key_name:
                componentInputParameter: pipelinechannel--encryption_spec_key_name
              pipelinechannel--fast_testing:
                componentInputParameter: pipelinechannel--fast_testing
              pipelinechannel--location:
                componentInputParameter: pipelinechannel--location
              pipelinechannel--num_selected_trials:
                componentInputParameter: pipelinechannel--num_selected_trials
              pipelinechannel--project:
                componentInputParameter: pipelinechannel--project
              pipelinechannel--root_dir:
                componentInputParameter: pipelinechannel--root_dir
              pipelinechannel--stage_1_num_parallel_trials:
                componentInputParameter: pipelinechannel--stage_1_num_parallel_trials
              pipelinechannel--stage_1_tuner_worker_pool_specs_override:
                componentInputParameter: pipelinechannel--stage_1_tuner_worker_pool_specs_override
              pipelinechannel--stage_2_num_parallel_trials:
                componentInputParameter: pipelinechannel--stage_2_num_parallel_trials
              pipelinechannel--string-not-empty-Output:
                taskOutputParameter:
                  outputParameterKey: Output
                  producerTask: string-not-empty
              pipelinechannel--study_spec_parameters_override:
                componentInputParameter: pipelinechannel--study_spec_parameters_override
              pipelinechannel--train_budget_milli_node_hours:
                componentInputParameter: pipelinechannel--train_budget_milli_node_hours
              pipelinechannel--model_display_name:
                componentInputParameter: pipelinechannel--model_display_name
              pipelinechannel--model_description:
                componentInputParameter: pipelinechannel--model_description
          taskInfo:
            name: stage_1_tuning_result_artifact_uri_empty
          triggerPolicy:
            condition: inputs.parameter_values['pipelinechannel--string-not-empty-Output']
              == 'false'
        feature-transform-engine:
          cachingOptions:
            enableCache: true
          componentRef:
            name: comp-feature-transform-engine
          dependentTasks:
          - calculate-transformations
          inputs:
            parameters:
              bigquery_staging_full_dataset_id:
                componentInputParameter: pipelinechannel--feature_transform_engine_bigquery_staging_full_dataset_id
              data_source_bigquery_table_path:
                componentInputParameter: pipelinechannel--data_source_bigquery_table_path
              data_source_csv_filenames:
                componentInputParameter: pipelinechannel--data_source_csv_filenames
              dataflow_disk_size_gb:
                componentInputParameter: pipelinechannel--feature_transform_engine_dataflow_disk_size_gb
              dataflow_machine_type:
                componentInputParameter: pipelinechannel--feature_transform_engine_dataflow_machine_type
              dataflow_max_num_workers:
                componentInputParameter: pipelinechannel--feature_transform_engine_dataflow_max_num_workers
              dataflow_subnetwork:
                componentInputParameter: pipelinechannel--feature_transform_engine_dataflow_subnetwork
              dataflow_use_public_ips:
                componentInputParameter: pipelinechannel--feature_transform_engine_dataflow_use_public_ips
              encryption_spec_key_name:
                componentInputParameter: pipelinechannel--encryption_spec_key_name
              forecasting_available_at_forecast_columns:
                componentInputParameter: pipelinechannel--available_at_forecast_columns
              forecasting_context_window:
                componentInputParameter: pipelinechannel--context_window
              forecasting_forecast_horizon:
                componentInputParameter: pipelinechannel--forecast_horizon
              forecasting_predefined_window_column:
                componentInputParameter: pipelinechannel--window_predefined_column
              forecasting_time_column:
                componentInputParameter: pipelinechannel--time_column
              forecasting_time_series_attribute_columns:
                componentInputParameter: pipelinechannel--time_series_attribute_columns
              forecasting_time_series_identifier_column:
                componentInputParameter: pipelinechannel--time_series_identifier_column
              forecasting_unavailable_at_forecast_columns:
                componentInputParameter: pipelinechannel--unavailable_at_forecast_columns
              forecasting_window_max_count:
                componentInputParameter: pipelinechannel--window_max_count
              forecasting_window_stride_length:
                componentInputParameter: pipelinechannel--window_stride_length
              location:
                componentInputParameter: pipelinechannel--location
              model_type:
                runtimeValue:
                  constant: l2l
              predefined_split_key:
                componentInputParameter: pipelinechannel--predefined_split_key
              prediction_type:
                runtimeValue:
                  constant: time_series
              project:
                componentInputParameter: pipelinechannel--project
              root_dir:
                componentInputParameter: pipelinechannel--root_dir
              target_column:
                componentInputParameter: pipelinechannel--target_column
              test_fraction:
                componentInputParameter: pipelinechannel--test_fraction
              tf_auto_transform_features:
                taskOutputParameter:
                  outputParameterKey: tf_auto_transform_features
                  producerTask: calculate-transformations
              timestamp_split_key:
                componentInputParameter: pipelinechannel--timestamp_split_key
              training_fraction:
                componentInputParameter: pipelinechannel--training_fraction
              validation_fraction:
                componentInputParameter: pipelinechannel--validation_fraction
              weight_column:
                componentInputParameter: pipelinechannel--weight_column
          taskInfo:
            name: feature-transform-engine
        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
        string-not-empty:
          cachingOptions:
            enableCache: true
          componentRef:
            name: comp-string-not-empty
          inputs:
            parameters:
              value:
                componentInputParameter: pipelinechannel--stage_1_tuning_result_artifact_uri
          taskInfo:
            name: string-not-empty
        training-configurator-and-validator:
          cachingOptions:
            enableCache: true
          componentRef:
            name: comp-training-configurator-and-validator
          dependentTasks:
          - feature-transform-engine
          inputs:
            artifacts:
              dataset_stats:
                taskOutputArtifact:
                  outputArtifactKey: dataset_stats
                  producerTask: feature-transform-engine
              instance_schema:
                taskOutputArtifact:
                  outputArtifactKey: instance_schema
                  producerTask: feature-transform-engine
              training_schema:
                taskOutputArtifact:
                  outputArtifactKey: training_schema
                  producerTask: feature-transform-engine
            parameters:
              available_at_forecast_columns:
                componentInputParameter: pipelinechannel--available_at_forecast_columns
              context_window:
                componentInputParameter: pipelinechannel--context_window
              enable_probabilistic_inference:
                componentInputParameter: pipelinechannel--enable_probabilistic_inference
              forecast_horizon:
                componentInputParameter: pipelinechannel--forecast_horizon
              forecasting_model_type:
                runtimeValue:
                  constant: l2l
              forecasting_transformations_path:
                componentInputParameter: pipelinechannel--transformations
              optimization_objective:
                componentInputParameter: pipelinechannel--optimization_objective
              prediction_type:
                runtimeValue:
                  constant: time_series
              quantiles:
                componentInputParameter: pipelinechannel--quantiles
              split_example_counts:
                taskOutputParameter:
                  outputParameterKey: split_example_counts
                  producerTask: feature-transform-engine
              target_column:
                componentInputParameter: pipelinechannel--target_column
              time_column:
                componentInputParameter: pipelinechannel--time_column
              time_series_attribute_columns:
                componentInputParameter: pipelinechannel--time_series_attribute_columns
              time_series_identifier_column:
                componentInputParameter: pipelinechannel--time_series_identifier_column
              unavailable_at_forecast_columns:
                componentInputParameter: pipelinechannel--unavailable_at_forecast_columns
              weight_column:
                componentInputParameter: pipelinechannel--weight_column
          taskInfo:
            name: training-configurator-and-validator
    inputDefinitions:
      parameters:
        pipelinechannel--available_at_forecast_columns:
          parameterType: STRING
        pipelinechannel--context_window:
          parameterType: NUMBER_INTEGER
        pipelinechannel--data_source_bigquery_table_path:
          parameterType: STRING
        pipelinechannel--data_source_csv_filenames:
          parameterType: STRING
        pipelinechannel--enable_probabilistic_inference:
          parameterType: BOOLEAN
        pipelinechannel--encryption_spec_key_name:
          parameterType: STRING
        pipelinechannel--fast_testing:
          parameterType: BOOLEAN
        pipelinechannel--feature_transform_engine_bigquery_staging_full_dataset_id:
          parameterType: STRING
        pipelinechannel--feature_transform_engine_dataflow_disk_size_gb:
          parameterType: NUMBER_INTEGER
        pipelinechannel--feature_transform_engine_dataflow_machine_type:
          parameterType: STRING
        pipelinechannel--feature_transform_engine_dataflow_max_num_workers:
          parameterType: NUMBER_INTEGER
        pipelinechannel--feature_transform_engine_dataflow_subnetwork:
          parameterType: STRING
        pipelinechannel--feature_transform_engine_dataflow_use_public_ips:
          parameterType: BOOLEAN
        pipelinechannel--forecast_horizon:
          parameterType: NUMBER_INTEGER
        pipelinechannel--location:
          parameterType: STRING
        pipelinechannel--num_selected_trials:
          parameterType: NUMBER_INTEGER
        pipelinechannel--optimization_objective:
          parameterType: STRING
        pipelinechannel--predefined_split_key:
          parameterType: STRING
        pipelinechannel--project:
          parameterType: STRING
        pipelinechannel--quantiles:
          parameterType: STRING
        pipelinechannel--root_dir:
          parameterType: STRING
        pipelinechannel--stage_1_num_parallel_trials:
          parameterType: NUMBER_INTEGER
        pipelinechannel--stage_1_tuner_worker_pool_specs_override:
          parameterType: LIST
        pipelinechannel--stage_1_tuning_result_artifact_uri:
          parameterType: STRING
        pipelinechannel--stage_2_num_parallel_trials:
          parameterType: NUMBER_INTEGER
        pipelinechannel--stage_2_trainer_worker_pool_specs_override:
          parameterType: LIST
        pipelinechannel--study_spec_parameters_override:
          parameterType: LIST
        pipelinechannel--target_column:
          parameterType: STRING
        pipelinechannel--test_fraction:
          parameterType: NUMBER_DOUBLE
        pipelinechannel--time_column:
          parameterType: STRING
        pipelinechannel--time_series_attribute_columns:
          parameterType: STRING
        pipelinechannel--time_series_identifier_column:
          parameterType: STRING
        pipelinechannel--timestamp_split_key:
          parameterType: STRING
        pipelinechannel--train_budget_milli_node_hours:
          parameterType: NUMBER_DOUBLE
        pipelinechannel--training_fraction:
          parameterType: NUMBER_DOUBLE
        pipelinechannel--transformations:
          parameterType: STRING
        pipelinechannel--unavailable_at_forecast_columns:
          parameterType: STRING
        pipelinechannel--validation_fraction:
          parameterType: NUMBER_DOUBLE
        pipelinechannel--weight_column:
          parameterType: STRING
        pipelinechannel--window_max_count:
          parameterType: NUMBER_INTEGER
        pipelinechannel--window_predefined_column:
          parameterType: STRING
        pipelinechannel--window_stride_length:
          parameterType: NUMBER_INTEGER
        pipelinechannel--model_display_name:
          parameterType: STRING
        pipelinechannel--model_description:
          parameterType: STRING
  comp-feature-transform-engine:
    executorLabel: exec-feature-transform-engine
    inputDefinitions:
      parameters:
        autodetect_csv_schema:
          defaultValue: false
          isOptional: true
          parameterType: BOOLEAN
        bigquery_staging_full_dataset_id:
          defaultValue: ''
          isOptional: true
          parameterType: STRING
        data_source_bigquery_table_path:
          defaultValue: ''
          isOptional: true
          parameterType: STRING
        data_source_csv_filenames:
          defaultValue: ''
          isOptional: true
          parameterType: STRING
        dataflow_disk_size_gb:
          defaultValue: 40.0
          isOptional: true
          parameterType: NUMBER_INTEGER
        dataflow_machine_type:
          defaultValue: n1-standard-16
          isOptional: true
          parameterType: STRING
        dataflow_max_num_workers:
          defaultValue: 25.0
          isOptional: true
          parameterType: NUMBER_INTEGER
        dataflow_service_account:
          defaultValue: ''
          isOptional: true
          parameterType: STRING
        dataflow_subnetwork:
          defaultValue: ''
          isOptional: true
          parameterType: STRING
        dataflow_use_public_ips:
          defaultValue: true
          isOptional: true
          parameterType: BOOLEAN
        dataset_level_custom_transformation_definitions:
          defaultValue: []
          isOptional: true
          parameterType: LIST
        dataset_level_transformations:
          defaultValue: []
          isOptional: true
          parameterType: LIST
        encryption_spec_key_name:
          defaultValue: ''
          isOptional: true
          parameterType: STRING
        feature_selection_algorithm:
          defaultValue: AMI
          isOptional: true
          parameterType: STRING
        forecasting_apply_windowing:
          defaultValue: true
          isOptional: true
          parameterType: BOOLEAN
        forecasting_available_at_forecast_columns:
          defaultValue: ''
          isOptional: true
          parameterType: STRING
        forecasting_context_window:
          defaultValue: -1.0
          isOptional: true
          parameterType: NUMBER_INTEGER
        forecasting_forecast_horizon:
          defaultValue: -1.0
          isOptional: true
          parameterType: NUMBER_INTEGER
        forecasting_predefined_window_column:
          defaultValue: ''
          isOptional: true
          parameterType: STRING
        forecasting_time_column:
          defaultValue: ''
          isOptional: true
          parameterType: STRING
        forecasting_time_series_attribute_columns:
          defaultValue: ''
          isOptional: true
          parameterType: STRING
        forecasting_time_series_identifier_column:
          defaultValue: ''
          isOptional: true
          parameterType: STRING
        forecasting_unavailable_at_forecast_columns:
          defaultValue: ''
          isOptional: true
          parameterType: STRING
        forecasting_window_max_count:
          defaultValue: -1.0
          isOptional: true
          parameterType: NUMBER_INTEGER
        forecasting_window_stride_length:
          defaultValue: -1.0
          isOptional: true
          parameterType: NUMBER_INTEGER
        location:
          parameterType: STRING
        materialized_examples_format:
          defaultValue: tfrecords_gzip
          isOptional: true
          parameterType: STRING
        max_selected_features:
          defaultValue: 1000.0
          isOptional: true
          parameterType: NUMBER_INTEGER
        model_type:
          isOptional: true
          parameterType: STRING
        predefined_split_key:
          defaultValue: ''
          isOptional: true
          parameterType: STRING
        prediction_type:
          defaultValue: ''
          isOptional: true
          parameterType: STRING
        project:
          parameterType: STRING
        root_dir:
          parameterType: STRING
        run_distill:
          defaultValue: false
          isOptional: true
          parameterType: BOOLEAN
        run_feature_selection:
          defaultValue: false
          isOptional: true
          parameterType: BOOLEAN
        stratified_split_key:
          defaultValue: ''
          isOptional: true
          parameterType: STRING
        target_column:
          defaultValue: ''
          isOptional: true
          parameterType: STRING
        test_fraction:
          defaultValue: -1.0
          isOptional: true
          parameterType: NUMBER_DOUBLE
        tf_auto_transform_features:
          defaultValue: []
          isOptional: true
          parameterType: LIST
        tf_custom_transformation_definitions:
          defaultValue: []
          isOptional: true
          parameterType: LIST
        tf_transformations_path:
          defaultValue: ''
          isOptional: true
          parameterType: STRING
        timestamp_split_key:
          defaultValue: ''
          isOptional: true
          parameterType: STRING
        training_fraction:
          defaultValue: -1.0
          isOptional: true
          parameterType: NUMBER_DOUBLE
        validation_fraction:
          defaultValue: -1.0
          isOptional: true
          parameterType: NUMBER_DOUBLE
        weight_column:
          defaultValue: ''
          isOptional: true
          parameterType: STRING
    outputDefinitions:
      artifacts:
        dataset_stats:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
        feature_ranking:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
        instance_schema:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
        materialized_data:
          artifactType:
            schemaTitle: system.Dataset
            schemaVersion: 0.0.1
        training_schema:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
        transform_output:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
      parameters:
        bigquery_downsampled_test_split_uri:
          parameterType: STRING
        bigquery_test_split_uri:
          parameterType: STRING
        gcp_resources:
          parameterType: STRING
        split_example_counts:
          parameterType: STRING
  comp-get-prediction-image-uri:
    executorLabel: exec-get-prediction-image-uri
    inputDefinitions:
      parameters:
        model_type:
          parameterType: STRING
    outputDefinitions:
      parameters:
        Output:
          parameterType: STRING
  comp-get-prediction-image-uri-2:
    executorLabel: exec-get-prediction-image-uri-2
    inputDefinitions:
      parameters:
        model_type:
          parameterType: STRING
    outputDefinitions:
      parameters:
        Output:
          parameterType: STRING
  comp-importer:
    executorLabel: exec-importer
    inputDefinitions:
      parameters:
        uri:
          parameterType: STRING
    outputDefinitions:
      artifacts:
        artifact:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
  comp-model-upload:
    executorLabel: exec-model-upload
    inputDefinitions:
      artifacts:
        explanation_metadata_artifact:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
          isOptional: true
        unmanaged_container_model:
          artifactType:
            schemaTitle: google.UnmanagedContainerModel
            schemaVersion: 0.0.1
          isOptional: true
      parameters:
        description:
          defaultValue: ''
          isOptional: true
          parameterType: STRING
        display_name:
          parameterType: STRING
        encryption_spec_key_name:
          defaultValue: ''
          isOptional: true
          parameterType: STRING
        explanation_metadata:
          defaultValue: {}
          isOptional: true
          parameterType: STRUCT
        explanation_parameters:
          defaultValue: {}
          isOptional: true
          parameterType: STRUCT
        labels:
          defaultValue: {}
          isOptional: true
          parameterType: STRUCT
        location:
          defaultValue: us-central1
          isOptional: true
          parameterType: STRING
        project:
          parameterType: STRING
    outputDefinitions:
      artifacts:
        model:
          artifactType:
            schemaTitle: google.VertexModel
            schemaVersion: 0.0.1
      parameters:
        gcp_resources:
          parameterType: STRING
  comp-model-upload-2:
    executorLabel: exec-model-upload-2
    inputDefinitions:
      artifacts:
        explanation_metadata_artifact:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
          isOptional: true
        unmanaged_container_model:
          artifactType:
            schemaTitle: google.UnmanagedContainerModel
            schemaVersion: 0.0.1
          isOptional: true
      parameters:
        description:
          defaultValue: ''
          isOptional: true
          parameterType: STRING
        display_name:
          parameterType: STRING
        encryption_spec_key_name:
          defaultValue: ''
          isOptional: true
          parameterType: STRING
        explanation_metadata:
          defaultValue: {}
          isOptional: true
          parameterType: STRUCT
        explanation_parameters:
          defaultValue: {}
          isOptional: true
          parameterType: STRUCT
        labels:
          defaultValue: {}
          isOptional: true
          parameterType: STRUCT
        location:
          defaultValue: us-central1
          isOptional: true
          parameterType: STRING
        project:
          parameterType: STRING
    outputDefinitions:
      artifacts:
        model:
          artifactType:
            schemaTitle: google.VertexModel
            schemaVersion: 0.0.1
      parameters:
        gcp_resources:
          parameterType: 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-string-not-empty:
    executorLabel: exec-string-not-empty
    inputDefinitions:
      parameters:
        value:
          parameterType: STRING
    outputDefinitions:
      parameters:
        Output:
          parameterType: STRING
  comp-training-configurator-and-validator:
    executorLabel: exec-training-configurator-and-validator
    inputDefinitions:
      artifacts:
        dataset_stats:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
        instance_schema:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
        training_schema:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
      parameters:
        available_at_forecast_columns:
          defaultValue: ''
          isOptional: true
          parameterType: STRING
        context_window:
          defaultValue: -1.0
          isOptional: true
          parameterType: NUMBER_INTEGER
        enable_probabilistic_inference:
          defaultValue: false
          isOptional: true
          parameterType: BOOLEAN
        forecast_horizon:
          defaultValue: -1.0
          isOptional: true
          parameterType: NUMBER_INTEGER
        forecasting_model_type:
          defaultValue: ''
          isOptional: true
          parameterType: STRING
        forecasting_transformations_path:
          defaultValue: ''
          isOptional: true
          parameterType: STRING
        optimization_objective:
          defaultValue: ''
          isOptional: true
          parameterType: STRING
        optimization_objective_precision_value:
          defaultValue: -1.0
          isOptional: true
          parameterType: NUMBER_DOUBLE
        optimization_objective_recall_value:
          defaultValue: -1.0
          isOptional: true
          parameterType: NUMBER_DOUBLE
        prediction_type:
          defaultValue: ''
          isOptional: true
          parameterType: STRING
        quantiles:
          defaultValue: ''
          isOptional: true
          parameterType: STRING
        run_distill:
          defaultValue: false
          isOptional: true
          parameterType: BOOLEAN
        run_evaluation:
          defaultValue: false
          isOptional: true
          parameterType: BOOLEAN
        split_example_counts:
          parameterType: STRING
        stage_1_deadline_hours:
          isOptional: true
          parameterType: NUMBER_DOUBLE
        stage_2_deadline_hours:
          isOptional: true
          parameterType: NUMBER_DOUBLE
        target_column:
          defaultValue: ''
          isOptional: true
          parameterType: STRING
        time_column:
          defaultValue: ''
          isOptional: true
          parameterType: STRING
        time_series_attribute_columns:
          defaultValue: ''
          isOptional: true
          parameterType: STRING
        time_series_identifier_column:
          defaultValue: ''
          isOptional: true
          parameterType: STRING
        unavailable_at_forecast_columns:
          defaultValue: ''
          isOptional: true
          parameterType: STRING
        weight_column:
          defaultValue: ''
          isOptional: true
          parameterType: STRING
    outputDefinitions:
      artifacts:
        instance_baseline:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
        metadata:
          artifactType:
            schemaTitle: system.Artifact
            schemaVersion: 0.0.1
deploymentSpec:
  executors:
    exec-automl-forecasting-ensemble:
      container:
        args:
        - --type
        - CustomJob
        - --project
        - '{{$.inputs.parameters[''project'']}}'
        - --location
        - '{{$.inputs.parameters[''location'']}}'
        - --gcp_resources
        - '{{$.outputs.parameters[''gcp_resources''].output_file}}'
        - --payload
        - '{"Concat": ["{\"display_name\": \"automl-tabular-ensemble-{{$.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-highmem-8\"}, \"container_spec\": {\"image_uri\":\"",
          "us-docker.pkg.dev/vertex-ai-restricted/automl-tabular/forecasting-training:20230322_0325",
          "\", \"args\": [\"forecasting_mp_ensemble", "\", \"--transform_output_path=",
          "{{$.inputs.artifacts[''transform_output''].uri}}", "\", \"--error_file_path=",
          "{{$.inputs.parameters[''root_dir'']}}", "/{{$.pipeline_job_uuid}}/{{$.pipeline_task_uuid}}/error.pb",
          "\", \"--metadata_path=", "{{$.inputs.artifacts[''metadata''].uri}}", "\",
          \"--tuning_result_input_path=", "{{$.inputs.artifacts[''tuning_result_input''].uri}}",
          "\", \"--instance_baseline_path=", "{{$.inputs.artifacts[''instance_baseline''].uri}}",
          "\", \"--instance_schema_path=", "{{$.inputs.artifacts[''instance_schema_path''].uri}}",
          "\", \"--prediction_docker_uri=", "{{$.inputs.parameters[''prediction_image_uri'']}}",
          "\", \"--model_relative_output_path=", "/{{$.pipeline_job_uuid}}/{{$.pipeline_task_uuid}}/model",
          "\", \"--explanation_metadata_path=", "{{$.outputs.parameters[''explanation_metadata''].output_file}}",
          ",", "{{$.outputs.artifacts[''explanation_metadata_artifact''].uri}}", "\",
          \"--explanation_parameters_path=", "{{$.outputs.parameters[''explanation_parameters''].output_file}}",
          "\", \"--model_architecture_path=", "{{$.outputs.artifacts[''model_architecture''].uri}}",
          "\", \"--use_json=true", "\", \"--executor_input={{$.json_escape[1]}}\"]}}]}}"]}'
        command:
        - python3
        - -u
        - -m
        - google_cloud_pipeline_components.container.v1.custom_job.launcher
        image: gcr.io/ml-pipeline/google-cloud-pipeline-components:1.0.32
    exec-automl-forecasting-ensemble-2:
      container:
        args:
        - --type
        - CustomJob
        - --project
        - '{{$.inputs.parameters[''project'']}}'
        - --location
        - '{{$.inputs.parameters[''location'']}}'
        - --gcp_resources
        - '{{$.outputs.parameters[''gcp_resources''].output_file}}'
        - --payload
        - '{"Concat": ["{\"display_name\": \"automl-tabular-ensemble-{{$.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-highmem-8\"}, \"container_spec\": {\"image_uri\":\"",
          "us-docker.pkg.dev/vertex-ai-restricted/automl-tabular/forecasting-training:20230322_0325",
          "\", \"args\": [\"forecasting_mp_ensemble", "\", \"--transform_output_path=",
          "{{$.inputs.artifacts[''transform_output''].uri}}", "\", \"--error_file_path=",
          "{{$.inputs.parameters[''root_dir'']}}", "/{{$.pipeline_job_uuid}}/{{$.pipeline_task_uuid}}/error.pb",
          "\", \"--metadata_path=", "{{$.inputs.artifacts[''metadata''].uri}}", "\",
          \"--tuning_result_input_path=", "{{$.inputs.artifacts[''tuning_result_input''].uri}}",
          "\", \"--instance_baseline_path=", "{{$.inputs.artifacts[''instance_baseline''].uri}}",
          "\", \"--instance_schema_path=", "{{$.inputs.artifacts[''instance_schema_path''].uri}}",
          "\", \"--prediction_docker_uri=", "{{$.inputs.parameters[''prediction_image_uri'']}}",
          "\", \"--model_relative_output_path=", "/{{$.pipeline_job_uuid}}/{{$.pipeline_task_uuid}}/model",
          "\", \"--explanation_metadata_path=", "{{$.outputs.parameters[''explanation_metadata''].output_file}}",
          ",", "{{$.outputs.artifacts[''explanation_metadata_artifact''].uri}}", "\",
          \"--explanation_parameters_path=", "{{$.outputs.parameters[''explanation_parameters''].output_file}}",
          "\", \"--model_architecture_path=", "{{$.outputs.artifacts[''model_architecture''].uri}}",
          "\", \"--use_json=true", "\", \"--executor_input={{$.json_escape[1]}}\"]}}]}}"]}'
        command:
        - python3
        - -u
        - -m
        - google_cloud_pipeline_components.container.v1.custom_job.launcher
        image: gcr.io/ml-pipeline/google-cloud-pipeline-components:1.0.32
    exec-automl-forecasting-stage-1-tuner:
      container:
        args:
        - --type
        - CustomJob
        - --project
        - '{{$.inputs.parameters[''project'']}}'
        - --location
        - '{{$.inputs.parameters[''location'']}}'
        - --gcp_resources
        - '{{$.outputs.parameters[''gcp_resources''].output_file}}'
        - --payload
        - '{"Concat": ["{\"display_name\": \"automl-forecasting-stage-1-tuner-{{$.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/forecasting-training:20230322_0325",
          "\", \"args\": [\"forecasting_mp_l2l_stage_1_tuner", "\", \"--region=",
          "{{$.inputs.parameters[''location'']}}", "\", \"--transform_output_path=",
          "{{$.inputs.artifacts[''transform_output''].uri}}", "\", \"--training_docker_uri=",
          "us-docker.pkg.dev/vertex-ai-restricted/automl-tabular/forecasting-training:20230322_0325",
          "\", \"--reduce_search_space_mode=", "{{$.inputs.parameters[''reduce_search_space_mode'']}}",
          "\", \"--component_id={{$.pipeline_task_uuid}}", "\", \"--training_base_dir=",
          "{{$.inputs.parameters[''root_dir'']}}", "/{{$.pipeline_job_uuid}}/{{$.pipeline_task_uuid}}/train",
          "\", \"--num_parallel_trial=", "{{$.inputs.parameters[''num_parallel_trials'']}}",
          "\", \"--single_run_max_secs=", "{{$.inputs.parameters[''single_run_max_secs'']}}",
          "\", \"--deadline_hours=", "{{$.inputs.parameters[''deadline_hours'']}}",
          "\", \"--num_selected_trials=", "{{$.inputs.parameters[''num_selected_trials'']}}",
          "\", \"--lro_job_info=", "{{$.inputs.parameters[''root_dir'']}}", "/{{$.pipeline_job_uuid}}/lro",
          "\", \"--error_file_path=", "{{$.inputs.parameters[''root_dir'']}}", "/{{$.pipeline_job_uuid}}/{{$.pipeline_task_uuid}}/error.pb",
          "\", \"--metadata_path=", "{{$.inputs.artifacts[''metadata''].uri}}", "\",
          \"--materialized_train_split=", "{{$.inputs.artifacts[''materialized_train_split''].uri}}",
          "\", \"--materialized_eval_split=", "{{$.inputs.artifacts[''materialized_eval_split''].uri}}",
          "\", \"--tuning_result_output_path=", "{{$.outputs.artifacts[''tuning_result_output''].uri}}",
          "\", \"--kms_key_name=", "{{$.inputs.parameters[''encryption_spec_key_name'']}}",
          "\", \"--gcp_resources_path=", "{{$.outputs.parameters[''gcp_resources''].output_file}}",
          "\", \"--use_json=true", "\", \"--log_level=ERROR", "\", \"--executor_input={{$.json_escape[1]}}\"]}}]}}"]}'
        command:
        - python3
        - -u
        - -m
        - google_cloud_pipeline_components.container.v1.custom_job.launcher
        image: gcr.io/ml-pipeline/google-cloud-pipeline-components:1.0.32
    exec-automl-forecasting-stage-2-tuner:
      container:
        args:
        - --type
        - CustomJob
        - --project
        - '{{$.inputs.parameters[''project'']}}'
        - --location
        - '{{$.inputs.parameters[''location'']}}'
        - --gcp_resources
        - '{{$.outputs.parameters[''gcp_resources''].output_file}}'
        - --payload
        - '{"Concat": ["{\"display_name\": \"automl-forecasting-stage-2-tuner-{{$.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/forecasting-training:20230322_0325",
          "\", \"args\": [\"forecasting_mp_l2l_stage_2_tuner", "\", \"--region=",
          "{{$.inputs.parameters[''location'']}}", "\", \"--transform_output_path=",
          "{{$.inputs.artifacts[''transform_output''].uri}}", "\", \"--training_docker_uri=",
          "us-docker.pkg.dev/vertex-ai-restricted/automl-tabular/forecasting-training:20230322_0325",
          "\", \"--component_id={{$.pipeline_task_uuid}}", "\", \"--training_base_dir=",
          "{{$.inputs.parameters[''root_dir'']}}", "/{{$.pipeline_job_uuid}}/{{$.pipeline_task_uuid}}/train",
          "\", \"--num_parallel_trial=", "{{$.inputs.parameters[''num_parallel_trials'']}}",
          "\", \"--single_run_max_secs=", "{{$.inputs.parameters[''single_run_max_secs'']}}",
          "\", \"--deadline_hours=", "{{$.inputs.parameters[''deadline_hours'']}}",
          "\", \"--num_selected_trials=", "{{$.inputs.parameters[''num_selected_trials'']}}",
          "\", \"--lro_job_info=", "{{$.inputs.parameters[''root_dir'']}}", "/{{$.pipeline_job_uuid}}/lro",
          "\", \"--error_file_path=", "{{$.inputs.parameters[''root_dir'']}}", "/{{$.pipeline_job_uuid}}/{{$.pipeline_task_uuid}}/error.pb",
          "\", \"--metadata_path=", "{{$.inputs.artifacts[''metadata''].uri}}", "\",
          \"--materialized_train_split=", "{{$.inputs.artifacts[''materialized_train_split''].uri}}",
          "\", \"--materialized_eval_split=", "{{$.inputs.artifacts[''materialized_eval_split''].uri}}",
          "\", \"--tuning_result_input_path=", "{{$.inputs.artifacts[''tuning_result_input_path''].uri}}",
          "\", \"--kms_key_name=", "{{$.inputs.parameters[''encryption_spec_key_name'']}}",
          "\", \"--gcp_resources_path=", "{{$.outputs.parameters[''gcp_resources''].output_file}}",
          "\", \"--tuning_result_output_path=", "{{$.outputs.artifacts[''tuning_result_output''].uri}}",
          "\", \"--use_json=true\", \"--log_level=ERROR\", \"--executor_input={{$.json_escape[1]}}\"]}}]}}"]}'
        command:
        - python3
        - -u
        - -m
        - google_cloud_pipeline_components.container.v1.custom_job.launcher
        image: gcr.io/ml-pipeline/google-cloud-pipeline-components:1.0.32
    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
        - '{"Concat": ["{\"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:20230322_0325", "\",
          \"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.custom_job.launcher
        image: gcr.io/ml-pipeline/google-cloud-pipeline-components:1.0.32
    exec-calculate-training-parameters:
      container:
        args:
        - --executor_input
        - '{{$}}'
        - --function_to_execute
        - _calculate_training_parameters
        command:
        - sh
        - -ec
        - 'program_path=$(mktemp -d)

          printf "%s" "$0" > "$program_path/ephemeral_component.py"

          python3 -m kfp.components.executor_main                         --component_module_path                         "$program_path/ephemeral_component.py"                         "$@"

          '
        - "\nimport kfp\nfrom kfp import dsl\nfrom kfp.dsl import *\nfrom typing import\
          \ *\n\ndef _calculate_training_parameters(\n    stage_1_num_parallel_trials:\
          \ int,\n    train_budget_milli_node_hours: float,\n    stage_2_num_parallel_trials:\
          \ int,\n    selected_trials: int,\n    is_skip_architecture_search: bool\
          \ = False,\n    fast_testing: bool = False,\n) -> NamedTuple(\n    'Outputs',\n\
          \    [\n        ('stage_1_deadline_hours', float),\n        ('stage_1_single_run_max_secs',\
          \ int),\n        ('stage_2_deadline_hours', float),\n        ('stage_2_single_run_max_secs',\
          \ int),\n    ],\n):\n  \"\"\"Calculates training parameters.\n\n  Args:\n\
          \    stage_1_num_parallel_trials: Number of parallel trails for stage 1.\n\
          \    train_budget_milli_node_hours: The train budget of creating this model,\n\
          \      expressed in milli node hours i.e. 1,000 value in this field means\
          \ 1 node\n      hour.\n    stage_2_num_parallel_trials: Number of parallel\
          \ trails for stage 2.\n    selected_trials: Number of trials that should\
          \ be selected.\n    is_skip_architecture_search: If component is being called\
          \ in the\n      skip_architecture_search pipeline.\n    fast_testing: Internal\
          \ flag used for presubmit tests.\n\n  Returns:\n      stage_1_deadline_hours:\
          \ Maximum number of hours to run stage 1.\n      stage_1_single_run_max_secs:\
          \ Maximum number seconds to for a single stage\n      1\n        training\
          \ trial.\n      stage_2_deadline_hours: Maximum number of hours to run stage\
          \ 2.\n      stage_2_single_run_max_secs: Maximum number seconds to for a\
          \ single stage\n      2\n      training trial.\n  \"\"\"\n  # pylint: disable=g-import-not-at-top,import-outside-toplevel,redefined-outer-name\n\
          \  import collections\n  import math\n  # pylint: enable=g-import-not-at-top,import-outside-toplevel,redefined-outer-name\n\
          \n  stage_1_deadline_hours = -1.0\n  stage_1_single_run_max_secs = -1\n\
          \  stage_2_deadline_hours = -1.0\n  stage_2_single_run_max_secs = -1\n\n\
          \  if is_skip_architecture_search:\n    stage_2_deadline_hours = train_budget_milli_node_hours\
          \ / 1000.0\n    rounds = math.ceil(selected_trials / stage_2_num_parallel_trials)\n\
          \    stage_2_single_run_max_secs = int(\n        stage_2_deadline_hours\
          \ * 3600.0 / 1.3 / rounds\n    )\n  else:\n    stage_1_deadline_hours =\
          \ train_budget_milli_node_hours / 1000.0\n    rounds = math.ceil(100 / stage_1_num_parallel_trials)\n\
          \    stage_1_single_run_max_secs = int(\n        stage_1_deadline_hours\
          \ * 3600.0 / 1.3 / rounds\n    )\n  if fast_testing:\n    stage_1_deadline_hours\
          \ = 0.2\n    stage_1_single_run_max_secs = 1\n    stage_2_deadline_hours\
          \ = 0.2\n    stage_2_single_run_max_secs = 1\n\n  return collections.namedtuple(\n\
          \      'Outputs',\n      [\n          'stage_1_deadline_hours',\n      \
          \    'stage_1_single_run_max_secs',\n          'stage_2_deadline_hours',\n\
          \          'stage_2_single_run_max_secs',\n      ],\n  )(\n      stage_1_deadline_hours,\n\
          \      stage_1_single_run_max_secs,\n      stage_2_deadline_hours,\n   \
          \   stage_2_single_run_max_secs,\n  )\n\n"
        image: us-docker.pkg.dev/vertex-ai/automl-tabular/kfp-v2-base:20230322_0325
    exec-calculate-training-parameters-2:
      container:
        args:
        - --executor_input
        - '{{$}}'
        - --function_to_execute
        - _calculate_training_parameters
        command:
        - sh
        - -ec
        - 'program_path=$(mktemp -d)

          printf "%s" "$0" > "$program_path/ephemeral_component.py"

          python3 -m kfp.components.executor_main                         --component_module_path                         "$program_path/ephemeral_component.py"                         "$@"

          '
        - "\nimport kfp\nfrom kfp import dsl\nfrom kfp.dsl import *\nfrom typing import\
          \ *\n\ndef _calculate_training_parameters(\n    stage_1_num_parallel_trials:\
          \ int,\n    train_budget_milli_node_hours: float,\n    stage_2_num_parallel_trials:\
          \ int,\n    selected_trials: int,\n    is_skip_architecture_search: bool\
          \ = False,\n    fast_testing: bool = False,\n) -> NamedTuple(\n    'Outputs',\n\
          \    [\n        ('stage_1_deadline_hours', float),\n        ('stage_1_single_run_max_secs',\
          \ int),\n        ('stage_2_deadline_hours', float),\n        ('stage_2_single_run_max_secs',\
          \ int),\n    ],\n):\n  \"\"\"Calculates training parameters.\n\n  Args:\n\
          \    stage_1_num_parallel_trials: Number of parallel trails for stage 1.\n\
          \    train_budget_milli_node_hours: The train budget of creating this model,\n\
          \      expressed in milli node hours i.e. 1,000 value in this field means\
          \ 1 node\n      hour.\n    stage_2_num_parallel_trials: Number of parallel\
          \ trails for stage 2.\n    selected_trials: Number of trials that should\
          \ be selected.\n    is_skip_architecture_search: If component is being called\
          \ in the\n      skip_architecture_search pipeline.\n    fast_testing: Internal\
          \ flag used for presubmit tests.\n\n  Returns:\n      stage_1_deadline_hours:\
          \ Maximum number of hours to run stage 1.\n      stage_1_single_run_max_secs:\
          \ Maximum number seconds to for a single stage\n      1\n        training\
          \ trial.\n      stage_2_deadline_hours: Maximum number of hours to run stage\
          \ 2.\n      stage_2_single_run_max_secs: Maximum number seconds to for a\
          \ single stage\n      2\n      training trial.\n  \"\"\"\n  # pylint: disable=g-import-not-at-top,import-outside-toplevel,redefined-outer-name\n\
          \  import collections\n  import math\n  # pylint: enable=g-import-not-at-top,import-outside-toplevel,redefined-outer-name\n\
          \n  stage_1_deadline_hours = -1.0\n  stage_1_single_run_max_secs = -1\n\
          \  stage_2_deadline_hours = -1.0\n  stage_2_single_run_max_secs = -1\n\n\
          \  if is_skip_architecture_search:\n    stage_2_deadline_hours = train_budget_milli_node_hours\
          \ / 1000.0\n    rounds = math.ceil(selected_trials / stage_2_num_parallel_trials)\n\
          \    stage_2_single_run_max_secs = int(\n        stage_2_deadline_hours\
          \ * 3600.0 / 1.3 / rounds\n    )\n  else:\n    stage_1_deadline_hours =\
          \ train_budget_milli_node_hours / 1000.0\n    rounds = math.ceil(100 / stage_1_num_parallel_trials)\n\
          \    stage_1_single_run_max_secs = int(\n        stage_1_deadline_hours\
          \ * 3600.0 / 1.3 / rounds\n    )\n  if fast_testing:\n    stage_1_deadline_hours\
          \ = 0.2\n    stage_1_single_run_max_secs = 1\n    stage_2_deadline_hours\
          \ = 0.2\n    stage_2_single_run_max_secs = 1\n\n  return collections.namedtuple(\n\
          \      'Outputs',\n      [\n          'stage_1_deadline_hours',\n      \
          \    'stage_1_single_run_max_secs',\n          'stage_2_deadline_hours',\n\
          \          'stage_2_single_run_max_secs',\n      ],\n  )(\n      stage_1_deadline_hours,\n\
          \      stage_1_single_run_max_secs,\n      stage_2_deadline_hours,\n   \
          \   stage_2_single_run_max_secs,\n  )\n\n"
        image: us-docker.pkg.dev/vertex-ai/automl-tabular/kfp-v2-base:20230322_0325
    exec-calculate-transformations:
      container:
        args:
        - --executor_input
        - '{{$}}'
        - --function_to_execute
        - _calculate_transformations
        command:
        - sh
        - -ec
        - 'program_path=$(mktemp -d)

          printf "%s" "$0" > "$program_path/ephemeral_component.py"

          python3 -m kfp.components.executor_main                         --component_module_path                         "$program_path/ephemeral_component.py"                         "$@"

          '
        - "\nimport kfp\nfrom kfp import dsl\nfrom kfp.dsl import *\nfrom typing import\
          \ *\n\ndef _calculate_transformations(\n    transformations_path: str,\n\
          \    predefined_split_key: str,\n) -> NamedTuple('Outputs', [('tf_auto_transform_features',\
          \ list)]):\n  \"\"\"Calculate the transformations for FTE.\n\n  Args:\n\
          \    transformations_path: The path to the transformations.\n    predefined_split_key:\
          \ The predefined split column name.\n\n  Returns:\n    tf_auto_transform_features:\
          \ The features that need auto transformation.\n  \"\"\"\n  # pylint: disable=g-import-not-at-top,import-outside-toplevel,redefined-outer-name\n\
          \  import tensorflow as tf\n  import json\n  import collections\n  # pylint:\
          \ enable=g-import-not-at-top,import-outside-toplevel,redefined-outer-name\n\
          \n  with tf.io.gfile.GFile(transformations_path, 'r') as f:\n    transformations\
          \ = json.load(f)\n\n  all_transform_columns = []\n  for transformation in\
          \ transformations:\n    for transformation_details in transformation.values():\n\
          \      if 'column_name' in transformation_details:\n        all_transform_columns.append(transformation_details['column_name'])\n\
          \n  if predefined_split_key and predefined_split_key in all_transform_columns:\n\
          \    raise ValueError(\n        'Predefined split column cannot be included\
          \ in transformations:'\n        f' {predefined_split_key}'\n    )\n\n  auto_transformation_columns\
          \ = [\n      transformation['auto']['column_name']\n      for transformation\
          \ in transformations\n      if 'auto' in transformation\n  ]\n\n  return\
          \ collections.namedtuple('Outputs', ['tf_auto_transform_features'])(\n \
          \     auto_transformation_columns\n  )\n\n"
        image: us-docker.pkg.dev/vertex-ai/automl-tabular/kfp-v2-base:20230322_0325
    exec-feature-transform-engine:
      container:
        args:
        - feature_transform_engine
        - '{"Concat": ["--project=", "{{$.inputs.parameters[''project'']}}"]}'
        - '{"Concat": ["--location=", "{{$.inputs.parameters[''location'']}}"]}'
        - '{"Concat": ["--dataset_level_custom_transformation_definitions=", "{{$.inputs.parameters[''dataset_level_custom_transformation_definitions'']}}"]}'
        - '{"Concat": ["--dataset_level_transformations=", "{{$.inputs.parameters[''dataset_level_transformations'']}}"]}'
        - '{"Concat": ["--forecasting_time_column=", "{{$.inputs.parameters[''forecasting_time_column'']}}"]}'
        - '{"Concat": ["--forecasting_time_series_identifier_column=", "{{$.inputs.parameters[''forecasting_time_series_identifier_column'']}}"]}'
        - '{"Concat": ["--forecasting_time_series_attribute_columns=", "{{$.inputs.parameters[''forecasting_time_series_attribute_columns'']}}"]}'
        - '{"Concat": ["--forecasting_unavailable_at_forecast_columns=", "{{$.inputs.parameters[''forecasting_unavailable_at_forecast_columns'']}}"]}'
        - '{"Concat": ["--forecasting_available_at_forecast_columns=", "{{$.inputs.parameters[''forecasting_available_at_forecast_columns'']}}"]}'
        - '{"Concat": ["--forecasting_forecast_horizon=", "{{$.inputs.parameters[''forecasting_forecast_horizon'']}}"]}'
        - '{"Concat": ["--forecasting_context_window=", "{{$.inputs.parameters[''forecasting_context_window'']}}"]}'
        - '{"Concat": ["--forecasting_predefined_window_column=", "{{$.inputs.parameters[''forecasting_predefined_window_column'']}}"]}'
        - '{"Concat": ["--forecasting_window_stride_length=", "{{$.inputs.parameters[''forecasting_window_stride_length'']}}"]}'
        - '{"Concat": ["--forecasting_window_max_count=", "{{$.inputs.parameters[''forecasting_window_max_count'']}}"]}'
        - '{"Concat": ["--forecasting_apply_windowing=", "{{$.inputs.parameters[''forecasting_apply_windowing'']}}"]}'
        - '{"Concat": ["--predefined_split_key=", "{{$.inputs.parameters[''predefined_split_key'']}}"]}'
        - '{"Concat": ["--stratified_split_key=", "{{$.inputs.parameters[''stratified_split_key'']}}"]}'
        - '{"Concat": ["--timestamp_split_key=", "{{$.inputs.parameters[''timestamp_split_key'']}}"]}'
        - '{"Concat": ["--training_fraction=", "{{$.inputs.parameters[''training_fraction'']}}"]}'
        - '{"Concat": ["--validation_fraction=", "{{$.inputs.parameters[''validation_fraction'']}}"]}'
        - '{"Concat": ["--test_fraction=", "{{$.inputs.parameters[''test_fraction'']}}"]}'
        - '{"Concat": ["--tf_auto_transform_features=", "{{$.inputs.parameters[''tf_auto_transform_features'']}}"]}'
        - '{"Concat": ["--tf_custom_transformation_definitions=", "{{$.inputs.parameters[''tf_custom_transformation_definitions'']}}"]}'
        - '{"Concat": ["--tf_transformations_path=", "{{$.inputs.parameters[''tf_transformations_path'']}}"]}'
        - '{"Concat": ["--data_source_csv_filenames=", "{{$.inputs.parameters[''data_source_csv_filenames'']}}"]}'
        - '{"Concat": ["--data_source_bigquery_table_path=", "{{$.inputs.parameters[''data_source_bigquery_table_path'']}}"]}'
        - '{"Concat": ["--bigquery_staging_full_dataset_id=", "{{$.inputs.parameters[''bigquery_staging_full_dataset_id'']}}"]}'
        - '{"Concat": ["--target_column=", "{{$.inputs.parameters[''target_column'']}}"]}'
        - '{"Concat": ["--weight_column=", "{{$.inputs.parameters[''weight_column'']}}"]}'
        - '{"Concat": ["--prediction_type=", "{{$.inputs.parameters[''prediction_type'']}}"]}'
        - '{"IfPresent": {"InputName": "model_type", "Then": {"Concat": ["--model_type=",
          "{{$.inputs.parameters[''model_type'']}}"]}}}'
        - '{"Concat": ["--run_distill=", "{{$.inputs.parameters[''run_distill'']}}"]}'
        - '{"Concat": ["--run_feature_selection=", "{{$.inputs.parameters[''run_feature_selection'']}}"]}'
        - '{"Concat": ["--materialized_examples_format=", "{{$.inputs.parameters[''materialized_examples_format'']}}"]}'
        - '{"Concat": ["--max_selected_features=", "{{$.inputs.parameters[''max_selected_features'']}}"]}'
        - '{"Concat": ["--feature_selection_staging_dir=", "{{$.inputs.parameters[''root_dir'']}}",
          "/{{$.pipeline_job_uuid}}/{{$.pipeline_task_uuid}}/feature_selection_staging_dir"]}'
        - '{"Concat": ["--feature_selection_algorithm=", "{{$.inputs.parameters[''feature_selection_algorithm'']}}"]}'
        - '{"Concat": ["--feature_ranking_path=", "{{$.outputs.artifacts[''feature_ranking''].uri}}"]}'
        - '{"Concat": ["--error_file_path=", "{{$.inputs.parameters[''root_dir'']}}",
          "/{{$.pipeline_job_uuid}}/{{$.pipeline_task_uuid}}/error.txt"]}'
        - '{"Concat": ["--stats_result_path=", "{{$.outputs.artifacts[''dataset_stats''].uri}}"]}'
        - '{"Concat": ["--transform_output_artifact_path=", "{{$.outputs.artifacts[''transform_output''].uri}}"]}'
        - '{"Concat": ["--transform_output_path=", "{{$.inputs.parameters[''root_dir'']}}",
          "/{{$.pipeline_job_uuid}}/{{$.pipeline_task_uuid}}/transform"]}'
        - '{"Concat": ["--materialized_examples_path=", "{{$.inputs.parameters[''root_dir'']}}",
          "/{{$.pipeline_job_uuid}}/{{$.pipeline_task_uuid}}/materialized"]}'
        - '{"Concat": ["--export_data_path=", "{{$.inputs.parameters[''root_dir'']}}",
          "/{{$.pipeline_job_uuid}}/{{$.pipeline_task_uuid}}/export"]}'
        - '{"Concat": ["--materialized_data_path=", "{{$.inputs.parameters[''root_dir'']}}",
          "/{{$.pipeline_job_uuid}}/{{$.pipeline_task_uuid}}/materialized_data"]}'
        - '{"Concat": ["--materialized_data_artifact_path=", "{{$.outputs.artifacts[''materialized_data''].uri}}"]}'
        - '{"Concat": ["--bigquery_test_split_uri_path=", "{{$.outputs.parameters[''bigquery_test_split_uri''].output_file}}"]}'
        - '{"Concat": ["--bigquery_downsampled_test_split_uri_path=", "{{$.outputs.parameters[''bigquery_downsampled_test_split_uri''].output_file}}"]}'
        - '{"Concat": ["--split_example_counts_path=", "{{$.outputs.parameters[''split_example_counts''].output_file}}"]}'
        - '{"Concat": ["--instance_schema_path=", "{{$.outputs.artifacts[''instance_schema''].path}}"]}'
        - '{"Concat": ["--training_schema_path=", "{{$.outputs.artifacts[''training_schema''].path}}"]}'
        - --job_name=feature-transform-engine-{{$.pipeline_job_uuid}}-{{$.pipeline_task_uuid}}
        - '{"Concat": ["--dataflow_project=", "{{$.inputs.parameters[''project'']}}"]}'
        - '{"Concat": ["--dataflow_staging_dir=", "{{$.inputs.parameters[''root_dir'']}}",
          "/{{$.pipeline_job_uuid}}/{{$.pipeline_task_uuid}}/dataflow_staging"]}'
        - '{"Concat": ["--dataflow_tmp_dir=", "{{$.inputs.parameters[''root_dir'']}}",
          "/{{$.pipeline_job_uuid}}/{{$.pipeline_task_uuid}}/dataflow_tmp"]}'
        - '{"Concat": ["--dataflow_max_num_workers=", "{{$.inputs.parameters[''dataflow_max_num_workers'']}}"]}'
        - '{"Concat": ["--dataflow_machine_type=", "{{$.inputs.parameters[''dataflow_machine_type'']}}"]}'
        - --dataflow_worker_container_image=us-docker.pkg.dev/vertex-ai/automl-tabular/dataflow-worker:20230322_0325
        - --feature_transform_engine_docker_uri=us-docker.pkg.dev/vertex-ai/automl-tabular/feature-transform-engine:20230322_0325
        - '{"Concat": ["--dataflow_disk_size_gb=", "{{$.inputs.parameters[''dataflow_disk_size_gb'']}}"]}'
        - '{"Concat": ["--dataflow_subnetwork_fully_qualified=", "{{$.inputs.parameters[''dataflow_subnetwork'']}}"]}'
        - '{"Concat": ["--dataflow_use_public_ips=", "{{$.inputs.parameters[''dataflow_use_public_ips'']}}"]}'
        - '{"Concat": ["--dataflow_service_account=", "{{$.inputs.parameters[''dataflow_service_account'']}}"]}'
        - '{"Concat": ["--dataflow_kms_key=", "{{$.inputs.parameters[''encryption_spec_key_name'']}}"]}'
        - '{"Concat": ["--autodetect_csv_schema=", "{{$.inputs.parameters[''autodetect_csv_schema'']}}"]}'
        - '{"Concat": ["--gcp_resources_path=", "{{$.outputs.parameters[''gcp_resources''].output_file}}"]}'
        image: us-docker.pkg.dev/vertex-ai/automl-tabular/feature-transform-engine:20230322_0325
        resources:
          cpuLimit: 8.0
          memoryLimit: 30.0
    exec-get-prediction-image-uri:
      container:
        args:
        - --executor_input
        - '{{$}}'
        - --function_to_execute
        - _get_prediction_image_uri
        command:
        - sh
        - -ec
        - 'program_path=$(mktemp -d)

          printf "%s" "$0" > "$program_path/ephemeral_component.py"

          python3 -m kfp.components.executor_main                         --component_module_path                         "$program_path/ephemeral_component.py"                         "$@"

          '
        - "\nimport kfp\nfrom kfp import dsl\nfrom kfp.dsl import *\nfrom typing import\
          \ *\n\ndef _get_prediction_image_uri(model_type: str) -> str:\n  \"\"\"\
          Returns the prediction image corresponding to the given model type.\"\"\"\
          \n  # Keys come from AutoMlTimeSeriesForecastingTrainSpec.\n  # The URIs\
          \ must be hardcoded without any breaks in the code so string\n  # replacement\
          \ will work correctly.\n  images = {\n      'l2l': 'us-docker.pkg.dev/vertex-ai/automl-tabular/forecasting-prediction-server-l2l:20230322_0325',\n\
          \      'seq2seq': 'us-docker.pkg.dev/vertex-ai/automl-tabular/forecasting-prediction-server-seq2seq:20230322_0325',\n\
          \      'tft': 'us-docker.pkg.dev/vertex-ai/automl-tabular/forecasting-prediction-server-tft:20230322_0325',\n\
          \      # TODO(b/271296297) Use TiDE-specific prediction server rather than\
          \ L2L.\n      # TODO(b/271297867) Change internal name `nn_forecasting`\
          \ to `tide`.\n      'nn_forecasting': 'us-docker.pkg.dev/vertex-ai/automl-tabular/forecasting-prediction-server-l2l:20230322_0325',\n\
          \  }\n  if model_type not in images:\n    raise ValueError(\n        f'Invalid\
          \ forecasting model type: {model_type}. Valid options are: '\n        f'{images.keys()}.'\n\
          \    )\n  return images[model_type]\n\n"
        image: us-docker.pkg.dev/vertex-ai/automl-tabular/kfp-v2-base:20230322_0325
    exec-get-prediction-image-uri-2:
      container:
        args:
        - --executor_input
        - '{{$}}'
        - --function_to_execute
        - _get_prediction_image_uri
        command:
        - sh
        - -ec
        - 'program_path=$(mktemp -d)

          printf "%s" "$0" > "$program_path/ephemeral_component.py"

          python3 -m kfp.components.executor_main                         --component_module_path                         "$program_path/ephemeral_component.py"                         "$@"

          '
        - "\nimport kfp\nfrom kfp import dsl\nfrom kfp.dsl import *\nfrom typing import\
          \ *\n\ndef _get_prediction_image_uri(model_type: str) -> str:\n  \"\"\"\
          Returns the prediction image corresponding to the given model type.\"\"\"\
          \n  # Keys come from AutoMlTimeSeriesForecastingTrainSpec.\n  # The URIs\
          \ must be hardcoded without any breaks in the code so string\n  # replacement\
          \ will work correctly.\n  images = {\n      'l2l': 'us-docker.pkg.dev/vertex-ai/automl-tabular/forecasting-prediction-server-l2l:20230322_0325',\n\
          \      'seq2seq': 'us-docker.pkg.dev/vertex-ai/automl-tabular/forecasting-prediction-server-seq2seq:20230322_0325',\n\
          \      'tft': 'us-docker.pkg.dev/vertex-ai/automl-tabular/forecasting-prediction-server-tft:20230322_0325',\n\
          \      # TODO(b/271296297) Use TiDE-specific prediction server rather than\
          \ L2L.\n      # TODO(b/271297867) Change internal name `nn_forecasting`\
          \ to `tide`.\n      'nn_forecasting': 'us-docker.pkg.dev/vertex-ai/automl-tabular/forecasting-prediction-server-l2l:20230322_0325',\n\
          \  }\n  if model_type not in images:\n    raise ValueError(\n        f'Invalid\
          \ forecasting model type: {model_type}. Valid options are: '\n        f'{images.keys()}.'\n\
          \    )\n  return images[model_type]\n\n"
        image: us-docker.pkg.dev/vertex-ai/automl-tabular/kfp-v2-base:20230322_0325
    exec-importer:
      importer:
        artifactUri:
          runtimeParameter: uri
        typeSchema:
          schemaTitle: system.Artifact
          schemaVersion: 0.0.1
    exec-model-upload:
      container:
        args:
        - --type
        - UploadModel
        - --payload
        - '{"Concat": ["{", "\"display_name\": \"", "{{$.inputs.parameters[''display_name'']}}",
          "\"", ", \"description\": \"", "{{$.inputs.parameters[''description'']}}",
          "\"", ", \"explanation_spec\": {", "\"parameters\": ", "{{$.inputs.parameters[''explanation_parameters'']}}",
          ", \"metadata\": ", "{{$.inputs.parameters[''explanation_metadata'']}}",
          "}", ", \"explanation_metadata_artifact\": \"", "{{$.inputs.artifacts[''explanation_metadata_artifact''].uri}}",
          "\"", ", \"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.13
    exec-model-upload-2:
      container:
        args:
        - --type
        - UploadModel
        - --payload
        - '{"Concat": ["{", "\"display_name\": \"", "{{$.inputs.parameters[''display_name'']}}",
          "\"", ", \"description\": \"", "{{$.inputs.parameters[''description'']}}",
          "\"", ", \"explanation_spec\": {", "\"parameters\": ", "{{$.inputs.parameters[''explanation_parameters'']}}",
          ", \"metadata\": ", "{{$.inputs.parameters[''explanation_metadata'']}}",
          "}", ", \"explanation_metadata_artifact\": \"", "{{$.inputs.artifacts[''explanation_metadata_artifact''].uri}}",
          "\"", ", \"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.13
    exec-split-materialized-data:
      container:
        args:
        - --executor_input
        - '{{$}}'
        - --function_to_execute
        - _split_materialized_data
        command:
        - sh
        - -ec
        - 'program_path=$(mktemp -d)

          printf "%s" "$0" > "$program_path/ephemeral_component.py"

          python3 -m kfp.v2.components.executor_main                         --component_module_path                         "$program_path/ephemeral_component.py"                         "$@"

          '
        - "\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 indices 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:20230322_0325
    exec-string-not-empty:
      container:
        args:
        - --executor_input
        - '{{$}}'
        - --function_to_execute
        - _string_not_empty
        command:
        - sh
        - -ec
        - 'program_path=$(mktemp -d)

          printf "%s" "$0" > "$program_path/ephemeral_component.py"

          python3 -m kfp.components.executor_main                         --component_module_path                         "$program_path/ephemeral_component.py"                         "$@"

          '
        - "\nimport kfp\nfrom kfp import dsl\nfrom kfp.dsl import *\nfrom typing import\
          \ *\n\ndef _string_not_empty(value: str) -> str:\n  \"\"\"Check if the input\
          \ string value is not empty.\n\n  Args:\n    value: String value to be checked.\n\
          \n  Returns:\n    Boolean value. -> 'true' if empty, 'false' if not empty.\
          \ We need to use str\n    instead of bool due to a limitation in KFP compiler.\n\
          \  \"\"\"\n  return 'true' if value else 'false'\n\n"
        image: us-docker.pkg.dev/vertex-ai/automl-tabular/kfp-v2-base:20230322_0325
    exec-training-configurator-and-validator:
      container:
        args:
        - training_configurator_and_validator
        - '{"Concat": ["--instance_schema_path=", "{{$.inputs.artifacts[''instance_schema''].uri}}"]}'
        - '{"Concat": ["--training_schema_path=", "{{$.inputs.artifacts[''training_schema''].uri}}"]}'
        - '{"Concat": ["--dataset_stats_path=", "{{$.inputs.artifacts[''dataset_stats''].uri}}"]}'
        - '{"Concat": ["--split_example_counts=", "{{$.inputs.parameters[''split_example_counts'']}}"]}'
        - '{"Concat": ["--target_column=", "{{$.inputs.parameters[''target_column'']}}"]}'
        - '{"Concat": ["--weight_column=", "{{$.inputs.parameters[''weight_column'']}}"]}'
        - '{"Concat": ["--prediction_type=", "{{$.inputs.parameters[''prediction_type'']}}"]}'
        - '{"Concat": ["--optimization_objective=", "{{$.inputs.parameters[''optimization_objective'']}}"]}'
        - '{"Concat": ["--optimization_objective_recall_value=", "{{$.inputs.parameters[''optimization_objective_recall_value'']}}"]}'
        - '{"Concat": ["--optimization_objective_precision_value=", "{{$.inputs.parameters[''optimization_objective_precision_value'']}}"]}'
        - '{"Concat": ["--metadata_path=", "{{$.outputs.artifacts[''metadata''].uri}}"]}'
        - '{"Concat": ["--instance_baseline_path=", "{{$.outputs.artifacts[''instance_baseline''].uri}}"]}'
        - '{"Concat": ["--run_evaluation=", "{{$.inputs.parameters[''run_evaluation'']}}"]}'
        - '{"Concat": ["--run_distill=", "{{$.inputs.parameters[''run_distill'']}}"]}'
        - '{"Concat": ["--enable_probabilistic_inference=", "{{$.inputs.parameters[''enable_probabilistic_inference'']}}"]}'
        - '{"Concat": ["--time_series_identifier_column=", "{{$.inputs.parameters[''time_series_identifier_column'']}}"]}'
        - '{"Concat": ["--time_column=", "{{$.inputs.parameters[''time_column'']}}"]}'
        - '{"Concat": ["--time_series_attribute_columns=", "{{$.inputs.parameters[''time_series_attribute_columns'']}}"]}'
        - '{"Concat": ["--available_at_forecast_columns=", "{{$.inputs.parameters[''available_at_forecast_columns'']}}"]}'
        - '{"Concat": ["--unavailable_at_forecast_columns=", "{{$.inputs.parameters[''unavailable_at_forecast_columns'']}}"]}'
        - '{"Concat": ["--quantiles=", "{{$.inputs.parameters[''quantiles'']}}"]}'
        - '{"Concat": ["--context_window=", "{{$.inputs.parameters[''context_window'']}}"]}'
        - '{"Concat": ["--forecast_horizon=", "{{$.inputs.parameters[''forecast_horizon'']}}"]}'
        - '{"Concat": ["--forecasting_model_type=", "{{$.inputs.parameters[''forecasting_model_type'']}}"]}'
        - '{"Concat": ["--forecasting_transformations_path=", "{{$.inputs.parameters[''forecasting_transformations_path'']}}"]}'
        - '{"IfPresent": {"InputName": "stage_1_deadline_hours", "Then": {"Concat":
          ["--stage_1_deadline_hours=", "{{$.inputs.parameters[''stage_1_deadline_hours'']}}"]}}}'
        - '{"IfPresent": {"InputName": "stage_2_deadline_hours", "Then": {"Concat":
          ["--stage_2_deadline_hours=", "{{$.inputs.parameters[''stage_2_deadline_hours'']}}"]}}}'
        image: us-docker.pkg.dev/vertex-ai/automl-tabular/feature-transform-engine:20230322_0325
pipelineInfo:
  name: l2l-forecasting
root:
  dag:
    tasks:
      automl-tabular-finalizer:
        cachingOptions:
          enableCache: true
        componentRef:
          name: comp-automl-tabular-finalizer
        dependentTasks:
        - exit-handler-1
        inputs:
          parameters:
            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:
            pipelinechannel--available_at_forecast_columns:
              componentInputParameter: available_at_forecast_columns
            pipelinechannel--context_window:
              componentInputParameter: context_window
            pipelinechannel--data_source_bigquery_table_path:
              componentInputParameter: data_source_bigquery_table_path
            pipelinechannel--data_source_csv_filenames:
              componentInputParameter: data_source_csv_filenames
            pipelinechannel--enable_probabilistic_inference:
              componentInputParameter: enable_probabilistic_inference
            pipelinechannel--encryption_spec_key_name:
              componentInputParameter: encryption_spec_key_name
            pipelinechannel--fast_testing:
              componentInputParameter: fast_testing
            pipelinechannel--feature_transform_engine_bigquery_staging_full_dataset_id:
              componentInputParameter: feature_transform_engine_bigquery_staging_full_dataset_id
            pipelinechannel--feature_transform_engine_dataflow_disk_size_gb:
              componentInputParameter: feature_transform_engine_dataflow_disk_size_gb
            pipelinechannel--feature_transform_engine_dataflow_machine_type:
              componentInputParameter: feature_transform_engine_dataflow_machine_type
            pipelinechannel--feature_transform_engine_dataflow_max_num_workers:
              componentInputParameter: feature_transform_engine_dataflow_max_num_workers
            pipelinechannel--feature_transform_engine_dataflow_subnetwork:
              componentInputParameter: feature_transform_engine_dataflow_subnetwork
            pipelinechannel--feature_transform_engine_dataflow_use_public_ips:
              componentInputParameter: feature_transform_engine_dataflow_use_public_ips
            pipelinechannel--forecast_horizon:
              componentInputParameter: forecast_horizon
            pipelinechannel--location:
              componentInputParameter: location
            pipelinechannel--num_selected_trials:
              componentInputParameter: num_selected_trials
            pipelinechannel--optimization_objective:
              componentInputParameter: optimization_objective
            pipelinechannel--predefined_split_key:
              componentInputParameter: predefined_split_key
            pipelinechannel--project:
              componentInputParameter: project
            pipelinechannel--quantiles:
              componentInputParameter: quantiles
            pipelinechannel--root_dir:
              componentInputParameter: root_dir
            pipelinechannel--stage_1_num_parallel_trials:
              componentInputParameter: stage_1_num_parallel_trials
            pipelinechannel--stage_1_tuner_worker_pool_specs_override:
              componentInputParameter: stage_1_tuner_worker_pool_specs_override
            pipelinechannel--stage_1_tuning_result_artifact_uri:
              componentInputParameter: stage_1_tuning_result_artifact_uri
            pipelinechannel--stage_2_num_parallel_trials:
              componentInputParameter: stage_2_num_parallel_trials
            pipelinechannel--stage_2_trainer_worker_pool_specs_override:
              componentInputParameter: stage_2_trainer_worker_pool_specs_override
            pipelinechannel--study_spec_parameters_override:
              componentInputParameter: study_spec_parameters_override
            pipelinechannel--target_column:
              componentInputParameter: target_column
            pipelinechannel--test_fraction:
              componentInputParameter: test_fraction
            pipelinechannel--time_column:
              componentInputParameter: time_column
            pipelinechannel--time_series_attribute_columns:
              componentInputParameter: time_series_attribute_columns
            pipelinechannel--time_series_identifier_column:
              componentInputParameter: time_series_identifier_column
            pipelinechannel--timestamp_split_key:
              componentInputParameter: timestamp_split_key
            pipelinechannel--train_budget_milli_node_hours:
              componentInputParameter: train_budget_milli_node_hours
            pipelinechannel--training_fraction:
              componentInputParameter: training_fraction
            pipelinechannel--transformations:
              componentInputParameter: transformations
            pipelinechannel--unavailable_at_forecast_columns:
              componentInputParameter: unavailable_at_forecast_columns
            pipelinechannel--validation_fraction:
              componentInputParameter: validation_fraction
            pipelinechannel--weight_column:
              componentInputParameter: weight_column
            pipelinechannel--window_max_count:
              componentInputParameter: window_max_count
            pipelinechannel--window_predefined_column:
              componentInputParameter: window_predefined_column
            pipelinechannel--window_stride_length:
              componentInputParameter: window_stride_length
            pipelinechannel--model_display_name:
              componentInputParameter: model_display_name
            pipelinechannel--model_description:
              componentInputParameter: model_description
        taskInfo:
          name: exit-handler-1
  inputDefinitions:
    parameters:
      available_at_forecast_columns:
        defaultValue: ''
        isOptional: true
        parameterType: STRING
      context_window:
        defaultValue: 0.0
        isOptional: true
        parameterType: NUMBER_INTEGER
      data_source_bigquery_table_path:
        defaultValue: ''
        isOptional: true
        parameterType: STRING
      data_source_csv_filenames:
        defaultValue: ''
        isOptional: true
        parameterType: STRING
      enable_probabilistic_inference:
        defaultValue: false
        isOptional: true
        parameterType: BOOLEAN
      encryption_spec_key_name:
        defaultValue: ''
        isOptional: true
        parameterType: STRING
      fast_testing:
        defaultValue: false
        isOptional: true
        parameterType: BOOLEAN
      feature_transform_engine_bigquery_staging_full_dataset_id:
        defaultValue: ''
        isOptional: true
        parameterType: STRING
      feature_transform_engine_dataflow_disk_size_gb:
        defaultValue: 40.0
        isOptional: true
        parameterType: NUMBER_INTEGER
      feature_transform_engine_dataflow_machine_type:
        defaultValue: n1-standard-16
        isOptional: true
        parameterType: STRING
      feature_transform_engine_dataflow_max_num_workers:
        defaultValue: 10.0
        isOptional: true
        parameterType: NUMBER_INTEGER
      feature_transform_engine_dataflow_subnetwork:
        defaultValue: ''
        isOptional: true
        parameterType: STRING
      feature_transform_engine_dataflow_use_public_ips:
        defaultValue: true
        isOptional: true
        parameterType: BOOLEAN
      forecast_horizon:
        defaultValue: 0.0
        isOptional: true
        parameterType: NUMBER_INTEGER
      location:
        parameterType: STRING
      num_selected_trials:
        defaultValue: 10.0
        isOptional: true
        parameterType: NUMBER_INTEGER
      optimization_objective:
        parameterType: STRING
      predefined_split_key:
        defaultValue: ''
        isOptional: true
        parameterType: STRING
      project:
        parameterType: STRING
      quantiles:
        defaultValue: ''
        isOptional: true
        parameterType: STRING
      root_dir:
        parameterType: STRING
      stage_1_num_parallel_trials:
        defaultValue: 35.0
        isOptional: true
        parameterType: NUMBER_INTEGER
      stage_1_tuner_worker_pool_specs_override:
        isOptional: true
        parameterType: LIST
      stage_1_tuning_result_artifact_uri:
        defaultValue: ''
        isOptional: true
        parameterType: STRING
      stage_2_num_parallel_trials:
        defaultValue: 35.0
        isOptional: true
        parameterType: NUMBER_INTEGER
      stage_2_trainer_worker_pool_specs_override:
        isOptional: true
        parameterType: LIST
      study_spec_parameters_override:
        isOptional: true
        parameterType: LIST
      target_column:
        parameterType: STRING
      test_fraction:
        defaultValue: -1.0
        isOptional: true
        parameterType: NUMBER_DOUBLE
      time_column:
        parameterType: STRING
      time_series_attribute_columns:
        defaultValue: ''
        isOptional: true
        parameterType: STRING
      time_series_identifier_column:
        parameterType: STRING
      timestamp_split_key:
        defaultValue: ''
        isOptional: true
        parameterType: STRING
      train_budget_milli_node_hours:
        parameterType: NUMBER_DOUBLE
      training_fraction:
        defaultValue: -1.0
        isOptional: true
        parameterType: NUMBER_DOUBLE
      transformations:
        parameterType: STRING
      unavailable_at_forecast_columns:
        defaultValue: ''
        isOptional: true
        parameterType: STRING
      validation_fraction:
        defaultValue: -1.0
        isOptional: true
        parameterType: NUMBER_DOUBLE
      weight_column:
        defaultValue: ''
        isOptional: true
        parameterType: STRING
      window_max_count:
        defaultValue: 0.0
        isOptional: true
        parameterType: NUMBER_INTEGER
      window_predefined_column:
        defaultValue: ''
        isOptional: true
        parameterType: STRING
      window_stride_length:
        defaultValue: 0.0
        isOptional: true
        parameterType: NUMBER_INTEGER
      model_display_name:
        defaultValue: automl-forecasting-model-upload-{{$.pipeline_job_uuid}}-{{$.pipeline_task_uuid}}
        isOptional: true
        parameterType: STRING
      model_description:
        defaultValue: ''
        isOptional: true
        parameterType: STRING
schemaVersion: 2.1.0
sdkVersion: kfp-2.0.0-beta.13
