Addestra un modello con il flusso di lavoro tabulare per la previsione

Questa pagina mostra come addestrare un modello di previsione da un set di dati tabulare con il flusso di lavoro tabulare per la previsione.

Per saperne di più sugli account di servizio utilizzati da questo flusso di lavoro, consulta Account di servizio per Tabular Workflows.

Se ricevi un errore relativo alle quote durante l'esecuzione del flusso di lavoro tabulare per la previsione, potresti dover richiedere una quota più elevata. Per saperne di più, consulta Gestire le quote per i flussi di lavoro tabulari.

Il flusso di lavoro tabulare per la previsione non supporta l'esportazione dei modelli.

API Workflow

Questo flusso di lavoro utilizza le API seguenti:

  • Vertex AI
  • Dataflow
  • Compute Engine
  • Cloud Storage

Ottieni l'URI del risultato precedente dell'ottimizzazione degli iperparametri

Se hai già completato un'esecuzione del flusso di lavoro tabulare per la previsione, puoi utilizzare il risultato dell'ottimizzazione degli iperparametri dell'esecuzione precedente per risparmiare tempo e risorse di addestramento. Puoi trovare il risultato dell'ottimizzazione degli iperparametri precedente utilizzando la console Google Cloud o caricandolo in modo programmatico con l'API.

Console Google Cloud

Per trovare l'URI del risultato dell'ottimizzazione degli iperparametri utilizzando la console Google Cloud, esegui questi passaggi:

  1. Nella sezione Vertex AI della console Google Cloud, vai alla pagina Pipeline.

    Vai alla pagina Pipeline

  2. Seleziona la scheda Esecuzioni.

  3. Seleziona l'esecuzione della pipeline che vuoi utilizzare.

  4. Seleziona Espandi artefatti.

  5. Fai clic sul componente exit-handler-1.

  6. Fai clic sul componente stage_1_tuning_result_artifact_uri_empty.

  7. Trova il componente automl-forecasting-stage-1-tuner.

  8. Fai clic sull'artefatto associato tuning_result_output.

  9. Seleziona la scheda Informazioni nodo.

  10. Copia l'URI per utilizzarlo nel passaggio Addestra un modello.

risultato dell'ottimizzazione della previsione

API: Python

Il seguente codice campione mostra come caricare il risultato dell'ottimizzazione degli iperparametri utilizzando l'API. La variabile job fa riferimento alla precedente esecuzione della pipeline di addestramento del modello.


def get_task_detail(
  task_details: List[Dict[str, Any]], task_name: str
) -> List[Dict[str, Any]]:
  for task_detail in task_details:
      if task_detail.task_name == task_name:
          return task_detail

pipeline_task_details = job.gca_resource.job_detail.task_details

stage_1_tuner_task = get_task_detail(
    pipeline_task_details, "automl-forecasting-stage-1-tuner"
)
stage_1_tuning_result_artifact_uri = (
    stage_1_tuner_task.outputs["tuning_result_output"].artifacts[0].uri
)

Addestra un modello

Il seguente codice campione mostra come eseguire una pipeline di addestramento di un modello:

job = aiplatform.PipelineJob(
    ...
    template_path=template_path,
    parameter_values=parameter_values,
    ...
)
job.run(service_account=SERVICE_ACCOUNT)

Il parametro facoltativo service_account in job.run() consente di impostare l'account di servizio Vertex AI Pipelines su un account a tua scelta.

Vertex AI supporta i seguenti metodi per l'addestramento del modello:

  • Time Series Dense Encoder (TiDE). Per utilizzare questo metodo di addestramento del modello, definisci i valori della pipeline e dei parametri utilizzando la seguente funzione:

    template_path, parameter_values = automl_forecasting_utils.get_time_series_dense_encoder_forecasting_pipeline_and_parameters(...)
    
  • Trasformatore di fusione temporale (TFT). Per utilizzare questo metodo di addestramento del modello, definisci i valori della pipeline e dei parametri utilizzando la seguente funzione:

    template_path, parameter_values = automl_forecasting_utils.get_temporal_fusion_transformer_forecasting_pipeline_and_parameters(...)
    
  • AutoML (L2L). Per utilizzare questo metodo di addestramento del modello, definisci i valori della pipeline e dei parametri utilizzando la seguente funzione:

    template_path, parameter_values = automl_forecasting_utils.get_learn_to_learn_forecasting_pipeline_and_parameters(...)
    
  • Seq2Seq+. Per utilizzare questo metodo di addestramento del modello, definisci i valori della pipeline e dei parametri utilizzando la seguente funzione:

    template_path, parameter_values = automl_forecasting_utils.get_sequence_to_sequence_forecasting_pipeline_and_parameters(...)
    

Per scoprire di più, consulta Metodi di addestramento dei modelli.

I dati di addestramento possono essere un file CSV in Cloud Storage o una tabella in BigQuery.

Di seguito è riportato un sottoinsieme di parametri di addestramento del modello:

Nome parametro Tipo Definizione
optimization_objective Stringa Per impostazione predefinita, Vertex AI minimizza l'errore quadratico medio (RMSE). Se vuoi un obiettivo di ottimizzazione diverso per il tuo modello di previsione, scegli una delle opzioni in Obiettivi di ottimizzazione per i modelli di previsione. Se scegli di ridurre al minimo la perdita di quantili, devi specificare anche un valore per quantiles.
enable_probabilistic_inference Booleano Se impostato su true, Vertex AI modella la distribuzione della probabilità della previsione. L'inferenza probabilistica può migliorare la qualità del modello gestendo dati di rumore e quantificando l'incertezza. Se quantiles viene specificato, Vertex AI restituisce anche i quantili della distribuzione. L'inferenza probabilistica è compatibile solo con i metodi di addestramento AutoML (L2L) e Time Series Dense Encoder (TiDE). L'inferenza probabilistica non è compatibile con l'obiettivo di ottimizzazione minimize-quantile-loss.
quantiles Elenco[float] Quantili da utilizzare per l'obiettivo di ottimizzazione di minimize-quantile-loss e l'inferenza probabilistica. Fornisci un elenco di massimo cinque numeri univoci compresi tra 0 e 1 esclusi.
time_column Stringa La colonna dell'ora. Per saperne di più, consulta Requisiti della struttura dei dati.
time_series_identifier_columns Elenco[str] Le colonne degli identificatori delle serie temporali. Per saperne di più, consulta Requisiti della struttura dei dati.
weight_column Stringa (Facoltativo) La colonna del peso. Per ulteriori informazioni, vedi Aggiungere pesi ai dati di allenamento.
time_series_attribute_columns Elenco[str] (Facoltativo) Il nome o i nomi delle colonne che sono attributi di serie temporali. Per scoprire di più, consulta Tipo di funzionalità e disponibilità al momento della previsione.
available_at_forecast_columns Elenco[str] (Facoltativo) Il nome o i nomi delle colonne covariate il cui valore è noto al momento della previsione. Per scoprire di più, consulta Tipo di funzionalità e disponibilità al momento della previsione.
unavailable_at_forecast_columns Elenco[str] (Facoltativo) Il nome o i nomi delle colonne covariate il cui valore è sconosciuto al momento della previsione. Per scoprire di più, consulta Tipo di funzionalità e disponibilità al momento della previsione.
forecast_horizon Numero intero (Facoltativo) L'orizzonte di previsione determina per quanto tempo nel futuro il modello prevede il valore target per ogni riga di dati di previsione. Per scoprire di più, consulta Orizzonte di previsione, finestra di contesto e finestra di previsione.
context_window Numero intero (Facoltativo) La finestra di contesto imposta il periodo di tempo in cui il modello viene visualizzato durante l'addestramento (e per le previsioni). In altre parole, per ogni punto dati di addestramento, la finestra di contesto determina quanto indietro nel tempo il modello cerca i pattern predittivi. Per scoprire di più, consulta Orizzonte di previsione, finestra di contesto e finestra di previsione.
window_max_count Numero intero (Facoltativo) Vertex AI genera finestre di previsione dai dati di input utilizzando una strategia di finestre temporali continue. La strategia predefinita è Conteggio. Il valore predefinito per il numero massimo di finestre è 100,000,000. Imposta questo parametro per fornire un valore personalizzato per il numero massimo di finestre. Per scoprire di più, consulta la sezione Strategie per le finestre temporali continue.
window_stride_length Numero intero (Facoltativo) Vertex AI genera finestre di previsione dai dati di input utilizzando una strategia di finestre temporali continue. Per selezionare la strategia Passo, imposta questo parametro sul valore della lunghezza del passo. Per scoprire di più, consulta la sezione Strategie per le finestre temporali continue.
window_predefined_column Stringa (Facoltativo) Vertex AI genera finestre di previsione dai dati di input utilizzando una strategia di finestre temporali continue. Per selezionare la strategia Colonna, imposta questo parametro sul nome della colonna con i valori True o False. Per scoprire di più, consulta la sezione Strategie per le finestre temporali continue.
holiday_regions Elenco[str] (Facoltativo) Puoi selezionare una o più regioni geografiche per attivare la modellazione degli effetti delle festività. Durante l'addestramento, Vertex AI crea caratteristiche categoriche durante le festività all'interno del modello in base alla data nel giorno time_column e alle regioni geografiche specificate. Per impostazione predefinita, la modellazione degli effetti delle festività è disattivata. Per scoprire di più, consulta Regioni delle festività.
predefined_split_key Stringa (Facoltativo) Per impostazione predefinita, Vertex AI utilizza un algoritmo di suddivisione cronologico per separare i dati di previsione nelle tre suddivisioni di dati. Se vuoi controllare quali righe di dati di addestramento vengono utilizzate per una determinata suddivisione, specifica il nome della colonna contenente i valori della suddivisione dati (TRAIN, VALIDATION, TEST). Per saperne di più, consulta Suddivisione dei dati per la previsione.
training_fraction In virgola mobile (Facoltativo) Per impostazione predefinita, Vertex AI utilizza un algoritmo di suddivisione cronologico per separare i dati di previsione nelle tre suddivisioni di dati. L'80% dei dati viene assegnato al set di addestramento, il 10% alla suddivisione di convalida e il 10% alla suddivisione del test. Imposta questo parametro se vuoi personalizzare la frazione dei dati assegnata al set di addestramento. Per scoprire di più, consulta Suddivisione dei dati per la previsione.
validation_fraction In virgola mobile (Facoltativo) Per impostazione predefinita, Vertex AI utilizza un algoritmo di suddivisione cronologico per separare i dati di previsione nelle tre suddivisioni di dati. L'80% dei dati viene assegnato al set di addestramento, il 10% alla suddivisione di convalida e il 10% alla suddivisione del test. Imposta questo parametro se vuoi personalizzare la frazione dei dati assegnata al set di convalida. Per scoprire di più, consulta Suddivisione dei dati per la previsione.
test_fraction In virgola mobile (Facoltativo) Per impostazione predefinita, Vertex AI utilizza un algoritmo di suddivisione cronologico per separare i dati di previsione nelle tre suddivisioni di dati. L'80% dei dati viene assegnato al set di addestramento, il 10% alla suddivisione di convalida e il 10% alla suddivisione del test. Imposta questo parametro se vuoi personalizzare la frazione dei dati assegnata al set di test. Per scoprire di più, consulta Suddivisione dei dati per la previsione.
data_source_csv_filenames Stringa Un URI per un file CSV archiviato in Cloud Storage.
data_source_bigquery_table_path Stringa Un URI per una tabella BigQuery.
dataflow_service_account Stringa (Facoltativo) Account di servizio personalizzato per eseguire i job Dataflow. Il job Dataflow può essere configurato per utilizzare IP privati e una subnet VPC specifica. Questo parametro agisce come un override per l'account di servizio worker predefinito di Dataflow.
run_evaluation Booleano Se impostato su True, Vertex AI valuta il modello combinato nel segmento di test.
evaluated_examples_bigquery_path Stringa Il percorso del set di dati BigQuery utilizzato durante la valutazione del modello. Il set di dati funge da destinazione per gli esempi previsti. Il valore parametro deve essere impostato se run_evaluation è impostato su True e deve avere il seguente formato: bq://[PROJECT].[DATASET].

Trasformazioni

Puoi fornire una mappatura del dizionario delle risoluzioni automatiche o del tipo alle colonne delle funzionalità. I tipi supportati sono: automatico, numerico, categoriale, di testo e timestamp.

Nome parametro Tipo Definizione
transformations Detto[str, Elenco[str]] Mappatura del dizionario delle risoluzioni automatiche o del tipo

Il seguente codice fornisce una funzione helper per il completamento del parametro transformations. Dimostra inoltre come utilizzare questa funzione per applicare trasformazioni automatiche a un insieme di colonne definito da una variabile features.

def generate_transformation(
      auto_column_names: Optional[List[str]]=None,
      numeric_column_names: Optional[List[str]]=None,
      categorical_column_names: Optional[List[str]]=None,
      text_column_names: Optional[List[str]]=None,
      timestamp_column_names: Optional[List[str]]=None,
    ) -> List[Dict[str, Any]]:
    if auto_column_names is None:
      auto_column_names = []
    if numeric_column_names is None:
      numeric_column_names = []
    if categorical_column_names is None:
      categorical_column_names = []
    if text_column_names is None:
      text_column_names = []
    if timestamp_column_names is None:
      timestamp_column_names = []
    return {
        "auto": auto_column_names,
        "numeric": numeric_column_names,
        "categorical": categorical_column_names,
        "text": text_column_names,
        "timestamp": timestamp_column_names,
    }

transformations = generate_transformation(auto_column_names=features)

Per saperne di più sulle trasformazioni, consulta Tipi di dati e trasformazioni.

Opzioni di personalizzazione del flusso di lavoro

Puoi personalizzare il flusso di lavoro tabulare per la previsione definendo valori di argomenti da passare durante la definizione della pipeline. Puoi personalizzare il tuo flusso di lavoro nei seguenti modi:

  • Configura hardware
  • Salta ricerca architettura

Configura hardware

Il seguente parametro di addestramento del modello consente di configurare i tipi di macchine e il numero di macchine per l'addestramento. Questa opzione è ideale se hai un set di dati di grandi dimensioni e vuoi ottimizzare l'hardware della macchina.

Nome parametro Tipo Definizione
stage_1_tuner_worker_pool_specs_override Detto[Stringa, Qualsiasi] (Facoltativo) Configurazione personalizzata dei tipi di macchina e del numero di macchine per l'addestramento. Questo parametro configura il componente automl-forecasting-stage-1-tuner della pipeline.

Il codice seguente mostra come impostare il tipo di macchina n1-standard-8 per il nodo principale di TensorFlow e il tipo di macchina n1-standard-4 per il nodo valutatore TensorFlow:

worker_pool_specs_override = [
  {"machine_spec": {"machine_type": "n1-standard-8"}}, # override for TF chief node
  {},  # override for TF worker node, since it's not used, leave it empty
  {},  # override for TF ps node, since it's not used, leave it empty
  {
    "machine_spec": {
        "machine_type": "n1-standard-4" # override for TF evaluator node
    }
  }
]

Salta la ricerca dell'architettura

Il seguente parametro di addestramento del modello consente di eseguire la pipeline senza la ricerca dell'architettura e di fornire un set di iperparametri di un'esecuzione precedente della pipeline.

Nome parametro Tipo Definizione
stage_1_tuning_result_artifact_uri Stringa (Facoltativo) URI del risultato dell'ottimizzazione degli iperparametri da un'esecuzione precedente della pipeline.

Passaggi successivi