Addestra un modello con AutoML end-to-end

Questa pagina mostra come addestrare un modello di classificazione o regressione da un set di dati tabulare con Tabular Workflow for End-to-End AutoML.

Prima di iniziare

Prima di poter addestrare un modello, devi completare quanto segue:

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

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

Se hai già completato l'esecuzione di un flusso di lavoro AutoML end-to-end, 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-tabular-cv-trainer-2.

  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 di ricerca sull'architettura

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-tabular-stage-1-tuner"
)
stage_1_tuning_result_artifact_uri = (
    stage_1_tuner_task.outputs["tuning_result_output"].artifacts[0].uri
)

Addestra un modello

Console Google Cloud

Per addestrare un modello utilizzando la console Google Cloud, segui questi passaggi:

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

    Vai alla pagina Pipeline

  2. Seleziona la scheda Galleria modelli.

  3. Nella scheda AutoML per classificazione tabulare / regressione, fai clic su Crea esecuzione.

  4. Nella pagina Esegui dettagli, esegui la configurazione come segue:

    1. Inserisci un nome per l'esecuzione della pipeline.
    2. Facoltativo: se vuoi impostare l'account di servizio Vertex AI Pipelines o l'account di servizio worker Dataflow, apri Opzioni avanzate. Scopri di più sugli account di servizio.
    3. Fai clic su Continua.

  5. Nella pagina Configurazione runtime, esegui la configurazione come segue:

    1. Inserisci un bucket Cloud Storage o una cartella all'interno del bucket da utilizzare come directory di output principale. Questa directory verrà utilizzata per salvare file intermedi, come il set di dati materializzato e il modello. Ricordati di pulire la directory al termine dell'addestramento e quando il modello e altri artefatti importanti vengono copiati in un altro bucket Cloud Storage. In alternativa, imposta una durata (TTL) per il bucket Cloud Storage.

      I bucket del progetto sono elencati nella sezione Cloud Storage della console Google Cloud.

      Vai alla pagina Bucket

    2. Fai clic su Continua.

  6. Nella pagina Metodo di addestramento, configura come segue:

    1. Seleziona il nome del set di dati da utilizzare per addestrare il modello.
    2. Seleziona la colonna di destinazione. La colonna target è il valore previsto dal modello. Scopri di più sui requisiti della colonna di destinazione.
    3. Inserisci il nome visualizzato per il nuovo modello.
    4. Facoltativo: per scegliere come suddividere i dati tra set di addestramento, test e convalida, apri Opzioni avanzate. Puoi scegliere tra le seguenti opzioni di suddivisione dati:
      • Casuale (valore predefinito): Vertex AI seleziona in modo casuale le righe associate a ciascun set di dati. Per impostazione predefinita, Vertex AI seleziona l'80% delle righe di dati per il set di addestramento, il 10% per il set di convalida e il 10% per il set di test. Imposta la percentuale di righe di dati che vuoi associare a ogni set di dati.
      • Manuale: Vertex AI seleziona le righe di dati per ogni set di dati in base ai valori in una colonna di suddivisione dati. Specifica il nome della colonna di suddivisione dati.
      • Cronologico: Vertex AI suddivide i dati in base al timestamp in una colonna temporale. Indica il nome della colonna dell'ora. Puoi anche impostare la percentuale di righe di dati che vuoi associare al set di addestramento, al set di convalida e al set di test.
      • Stratified: Vertex AI seleziona in modo casuale le righe associate a ciascun set di dati, ma conserva la distribuzione dei valori delle colonne di destinazione. Specifica il nome della colonna di destinazione. Puoi anche impostare la percentuale di righe di dati che vuoi associare al set di addestramento, al set di convalida e al set di test.
      Scopri di più sulle suddivisioni dei dati.
    5. (Facoltativo) Puoi eseguire la pipeline senza eseguire la ricerca dell'architettura. Se scegli Ignora ricerca architettura, ti verrà chiesto di fornire un set di iperparametri di una precedente esecuzione della pipeline nella pagina Opzioni di addestramento.
    6. Fai clic su Continua.

  7. Nella pagina Opzioni di addestramento, configura come segue:

    1. (Facoltativo) Fai clic su Genera statistiche. La generazione delle statistiche compila i menu a discesa Trasformazione.
    2. Esamina l'elenco delle colonne ed escludi dall'addestramento le colonne che non devono essere utilizzate per addestrare il modello.
    3. Esamina le trasformazioni selezionate per le funzionalità incluse e verifica se sono consentiti dati non validi, quindi apporta gli aggiornamenti necessari. Scopri di più sulle trasformazioni e sui dati non validi.
    4. Se hai scelto di saltare la ricerca dell'architettura nella pagina Metodo di addestramento, fornisci il percorso al risultato dell'ottimizzazione degli iperparametri di una precedente esecuzione della pipeline.
    5. (Facoltativo) Se vuoi specificare la colonna del peso, apri Opzioni avanzate ed effettua la tua selezione. Scopri di più sulle colonne di ponderazione.
    6. (Facoltativo) Se vuoi modificare l'obiettivo di ottimizzazione predefinito, apri Opzioni avanzate ed effettua la tua selezione. Scopri di più sugli obiettivi di ottimizzazione.
    7. Facoltativo: se scegli di eseguire la ricerca dell'architettura nella pagina Metodo di addestramento, puoi specificare il numero di prove parallele. Apri Opzioni avanzate e inserisci il valore.
    8. Facoltativo: puoi fornire valori fissi per un sottoinsieme di iperparametri. Vertex AI cerca i valori ottimali dei restanti iperparametri non fissi. Questa opzione è ideale se hai una forte preferenza per il tipo di modello. Puoi scegliere tra reti neurali e alberi potenziati per il tuo tipo di modello. Apri Opzioni avanzate e fornisci una sostituzione delle specifiche dello studio in formato JSON.

      Ad esempio, se vuoi impostare il tipo di modello su Reti neurali (NN), inserisci quanto segue:

      [
        {
          "parameter_id": "model_type",
          "categorical_value_spec": {
            "values": ["nn"]
          }
        }
      ]
      

    9. Fai clic su Continua.

  8. Nella pagina Calcolo e prezzi, configura come segue:

    1. Inserisci il numero massimo di ore per le quali vuoi eseguire l'addestramento del modello. Scopri di più sui pricing.
    2. Facoltativo: nella sezione Impostazioni di calcolo, puoi configurare i tipi di macchine e il numero di macchine per ogni fase del flusso di lavoro. Questa opzione è ideale se hai un set di dati di grandi dimensioni e vuoi ottimizzare di conseguenza l'hardware della macchina.

  9. Fai clic su Invia.

API: Python

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.

La pipeline e i valori parametro sono definiti dalla funzione riportata di seguito. I dati di addestramento possono essere un file CSV in Cloud Storage o una tabella in BigQuery.

template_path, parameter_values = automl_tabular_utils.get_automl_tabular_pipeline_and_parameters(...)

Di seguito è riportato un sottoinsieme di parametri get_automl_tabular_pipeline_and_parameters:

Nome parametro Tipo Definizione
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.
prediction_type Stringa Scegli classification per addestrare un modello di classificazione oppure regression per addestrare un modello di regressione.
optimization_objective Stringa Se stai addestrando un modello di classificazione binario, l'obiettivo predefinito è AUC ROC. Se stai addestrando un modello di regressione, l'obiettivo predefinito è RMSE. Se vuoi un obiettivo di ottimizzazione diverso per il tuo modello, scegli una delle opzioni in Obiettivi di ottimizzazione per i modelli di classificazione o regressione.
enable_probabilistic_inference Booleano Se stai addestrando un modello di regressione e imposti questo valore 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.
quantiles Elenco[float] Quantili da utilizzare per l'inferenza probabilistica. Un quantile indica la probabilità che un target sia inferiore a un determinato valore. Fornisci un elenco di massimo cinque numeri univoci compresi tra 0 e 1 esclusi.

Opzioni di personalizzazione del flusso di lavoro

Puoi personalizzare il flusso di lavoro di AutoML end-to-end definendo valori degli argomenti da passare durante la definizione della pipeline. Puoi personalizzare il tuo flusso di lavoro nei seguenti modi:

  • Sostituisci spazio di ricerca
  • Configura hardware
  • Distilla il modello
  • Salta ricerca architettura

Esegui l'override dello spazio di ricerca

Il seguente parametro get_automl_tabular_pipeline_and_parameters consente di fornire valori fissi per un sottoinsieme di iperparametri. Vertex AI cerca i valori ottimali dei restanti iperparametri non fissi. Usa questo parametro se vuoi scegliere tra reti neurali e alberi potenziati per il tuo tipo di modello.

Nome parametro Tipo Definizione
study_spec_parameters_override Elenco[Detto[Stringa, Qualsiasi]] (Facoltativo) Sottoinsieme personalizzato di iperparametri. Questo parametro configura il componente automl-tabular-stage-1-tuner della pipeline.

Il seguente codice mostra come impostare il tipo di modello su Reti neurali (NN):

study_spec_parameters_override = [
  {
    "parameter_id": "model_type",
    "categorical_value_spec": {
      "values": ["nn"] # The default value is ["nn", "boosted_trees"], this reduces the search space
    }
  }
]

Configura hardware

I seguenti parametri get_automl_tabular_pipeline_and_parameters consentono di configurare i tipi di macchina 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 di conseguenza.

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-tabular-stage-1-tuner della pipeline.
cv_trainer_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-tabular-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
    }
  }
]

Distillare il modello

Il seguente parametro get_automl_tabular_pipeline_and_parameters consente di creare una versione più piccola del modello insieme. Un modello più piccolo riduce la latenza e i costi della previsione.

Nome parametro Tipo Definizione
run_distillation Booleano Se TRUE, viene creata una versione più piccola del modello insieme.

Salta la ricerca dell'architettura

Il seguente parametro get_automl_tabular_pipeline_and_parameters ti consente di eseguire la pipeline senza la ricerca dell'architettura e di fornire invece 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.

Obiettivi di ottimizzazione per i modelli di classificazione o regressione

Quando addestra un modello, Vertex AI seleziona un obiettivo di ottimizzazione predefinito in base al tipo di modello e al tipo di dati utilizzato per la colonna di destinazione.

I modelli di classificazione sono i migliori per:
Obiettivo ottimizzazione Valore API Utilizza questo scopo se vuoi...
AUC ROC maximize-au-roc Ingrandisci l'area sotto la curva della caratteristica operativa del ricevitore (ROC). Distingue tra le classi. Valore predefinito per la classificazione binaria.
Perdita logaritmica minimize-log-loss Mantieni le probabilità di previsione il più precise possibile. Obiettivo supportato solo per la classificazione multiclasse.
AUC PR maximize-au-prc Ingrandisci l'area sotto la curva di precisione-richiamo. Ottimizza i risultati per le previsioni per la classe meno comune.
Precisione al richiamo maximize-precision-at-recall Ottimizza la precisione con un valore di richiamo specifico.
Richiamo alla precisione maximize-recall-at-precision Ottimizza il richiamo con un valore di precisione specifico.
I modelli di regressione sono ideali per:
Obiettivo ottimizzazione Valore API Utilizza questo scopo se vuoi...
RMSE minimize-rmse Riduci al minimo l'errore quadratico medio (RMSE). Acquisisce i valori più estremi in modo accurato. Valore predefinito.
MAE minimize-mae Riduci al minimo l'errore medio assoluto (MAE). Considera i valori estremi come valori anomali con un minore impatto sul modello.
RMSLE minimize-rmsle Riduci al minimo l'errore di log radice quadrato medio (RMSLE). Penalizza l'errore sulla dimensione relativa anziché sul valore assoluto. Utile quando i valori previsti ed effettivi possono essere molto grandi.

Passaggi successivi