:py:mod:`airflow.providers.google.cloud.operators.vertex_ai.auto_ml`
====================================================================

.. py:module:: airflow.providers.google.cloud.operators.vertex_ai.auto_ml

.. autoapi-nested-parse::

   This module contains Google Vertex AI operators.



Module Contents
---------------

Classes
~~~~~~~

.. autoapisummary::

   airflow.providers.google.cloud.operators.vertex_ai.auto_ml.AutoMLTrainingJobBaseOperator
   airflow.providers.google.cloud.operators.vertex_ai.auto_ml.CreateAutoMLForecastingTrainingJobOperator
   airflow.providers.google.cloud.operators.vertex_ai.auto_ml.CreateAutoMLImageTrainingJobOperator
   airflow.providers.google.cloud.operators.vertex_ai.auto_ml.CreateAutoMLTabularTrainingJobOperator
   airflow.providers.google.cloud.operators.vertex_ai.auto_ml.CreateAutoMLTextTrainingJobOperator
   airflow.providers.google.cloud.operators.vertex_ai.auto_ml.CreateAutoMLVideoTrainingJobOperator
   airflow.providers.google.cloud.operators.vertex_ai.auto_ml.DeleteAutoMLTrainingJobOperator
   airflow.providers.google.cloud.operators.vertex_ai.auto_ml.ListAutoMLTrainingJobOperator




.. py:class:: AutoMLTrainingJobBaseOperator(*, project_id, region, display_name, labels = None, training_encryption_spec_key_name = None, model_encryption_spec_key_name = None, training_fraction_split = None, test_fraction_split = None, model_display_name = None, model_labels = None, sync = True, gcp_conn_id = 'google_cloud_default', delegate_to = None, impersonation_chain = None, **kwargs)

   Bases: :py:obj:`airflow.models.BaseOperator`

   The base class for operators that launch AutoML jobs on VertexAI.

   .. py:method:: on_kill()

      Callback called when the operator is killed.
      Cancel any running job.



.. py:class:: CreateAutoMLForecastingTrainingJobOperator(*, dataset_id, target_column, time_column, time_series_identifier_column, unavailable_at_forecast_columns, available_at_forecast_columns, forecast_horizon, data_granularity_unit, data_granularity_count, optimization_objective = None, column_specs = None, column_transformations = None, validation_fraction_split = None, predefined_split_column_name = None, weight_column = None, time_series_attribute_columns = None, context_window = None, export_evaluated_data_items = False, export_evaluated_data_items_bigquery_destination_uri = None, export_evaluated_data_items_override_destination = False, quantiles = None, validation_options = None, budget_milli_node_hours = 1000, **kwargs)

   Bases: :py:obj:`AutoMLTrainingJobBaseOperator`

   Create AutoML Forecasting Training job

   .. py:attribute:: template_fields
      :annotation: = ['region', 'impersonation_chain']

      

   .. py:attribute:: operator_extra_links
      

      

   .. py:method:: execute(context)

      This is the main method to derive when creating an operator.
      Context is the same dictionary used as when rendering jinja templates.

      Refer to get_template_context for more context.



.. py:class:: CreateAutoMLImageTrainingJobOperator(*, dataset_id, prediction_type = 'classification', multi_label = False, model_type = 'CLOUD', base_model = None, validation_fraction_split = None, training_filter_split = None, validation_filter_split = None, test_filter_split = None, budget_milli_node_hours = None, disable_early_stopping = False, **kwargs)

   Bases: :py:obj:`AutoMLTrainingJobBaseOperator`

   Create Auto ML Image Training job

   .. py:attribute:: template_fields
      :annotation: = ['region', 'impersonation_chain']

      

   .. py:attribute:: operator_extra_links
      

      

   .. py:method:: execute(context)

      This is the main method to derive when creating an operator.
      Context is the same dictionary used as when rendering jinja templates.

      Refer to get_template_context for more context.



.. py:class:: CreateAutoMLTabularTrainingJobOperator(*, dataset_id, target_column, optimization_prediction_type, optimization_objective = None, column_specs = None, column_transformations = None, optimization_objective_recall_value = None, optimization_objective_precision_value = None, validation_fraction_split = None, predefined_split_column_name = None, timestamp_split_column_name = None, weight_column = None, budget_milli_node_hours = 1000, disable_early_stopping = False, export_evaluated_data_items = False, export_evaluated_data_items_bigquery_destination_uri = None, export_evaluated_data_items_override_destination = False, **kwargs)

   Bases: :py:obj:`AutoMLTrainingJobBaseOperator`

   Create Auto ML Tabular Training job

   .. py:attribute:: template_fields
      :annotation: = ['region', 'impersonation_chain']

      

   .. py:attribute:: operator_extra_links
      

      

   .. py:method:: execute(context)

      This is the main method to derive when creating an operator.
      Context is the same dictionary used as when rendering jinja templates.

      Refer to get_template_context for more context.



.. py:class:: CreateAutoMLTextTrainingJobOperator(*, dataset_id, prediction_type, multi_label = False, sentiment_max = 10, validation_fraction_split = None, training_filter_split = None, validation_filter_split = None, test_filter_split = None, **kwargs)

   Bases: :py:obj:`AutoMLTrainingJobBaseOperator`

   Create Auto ML Text Training job

   .. py:attribute:: template_fields
      :annotation: = ['region', 'impersonation_chain']

      

   .. py:attribute:: operator_extra_links
      

      

   .. py:method:: execute(context)

      This is the main method to derive when creating an operator.
      Context is the same dictionary used as when rendering jinja templates.

      Refer to get_template_context for more context.



.. py:class:: CreateAutoMLVideoTrainingJobOperator(*, dataset_id, prediction_type = 'classification', model_type = 'CLOUD', training_filter_split = None, test_filter_split = None, **kwargs)

   Bases: :py:obj:`AutoMLTrainingJobBaseOperator`

   Create Auto ML Video Training job

   .. py:attribute:: template_fields
      :annotation: = ['region', 'impersonation_chain']

      

   .. py:attribute:: operator_extra_links
      

      

   .. py:method:: execute(context)

      This is the main method to derive when creating an operator.
      Context is the same dictionary used as when rendering jinja templates.

      Refer to get_template_context for more context.



.. py:class:: DeleteAutoMLTrainingJobOperator(*, training_pipeline_id, region, project_id, retry = DEFAULT, timeout = None, metadata = (), gcp_conn_id = 'google_cloud_default', delegate_to = None, impersonation_chain = None, **kwargs)

   Bases: :py:obj:`airflow.models.BaseOperator`

   Deletes an AutoMLForecastingTrainingJob, AutoMLImageTrainingJob, AutoMLTabularTrainingJob,
   AutoMLTextTrainingJob, or AutoMLVideoTrainingJob.

   .. py:attribute:: template_fields
      :annotation: = ['region', 'project_id', 'impersonation_chain']

      

   .. py:method:: execute(context)

      This is the main method to derive when creating an operator.
      Context is the same dictionary used as when rendering jinja templates.

      Refer to get_template_context for more context.



.. py:class:: ListAutoMLTrainingJobOperator(*, region, project_id, page_size = None, page_token = None, filter = None, read_mask = None, retry = DEFAULT, timeout = None, metadata = (), gcp_conn_id = 'google_cloud_default', delegate_to = None, impersonation_chain = None, **kwargs)

   Bases: :py:obj:`airflow.models.BaseOperator`

   Lists AutoMLForecastingTrainingJob, AutoMLImageTrainingJob, AutoMLTabularTrainingJob,
   AutoMLTextTrainingJob, or AutoMLVideoTrainingJob in a Location.

   .. py:attribute:: template_fields
      :annotation: = ['region', 'project_id', 'impersonation_chain']

      

   .. py:attribute:: operator_extra_links
      

      

   .. py:method:: execute(context)

      This is the main method to derive when creating an operator.
      Context is the same dictionary used as when rendering jinja templates.

      Refer to get_template_context for more context.



