Questa pagina mostra come addestrare un modello di classificazione o regressione da un set di dati tabulare con il flusso di lavoro tabulare per AutoML end-to-end.
Prima di iniziare
Prima di poter addestrare un modello, devi completare le seguenti operazioni:
- Preparare i dati di addestramento
- Crea un set di dati Vertex AI.
Abilita le seguenti API: Vertex AI, Dataflow, Compute Engine, Cloud Storage.
Assicurati che ai service account del tuo progetto siano assegnati i ruoli necessari. Per visualizzare i service account e i ruoli associati, vai alla pagina IAM e seleziona la casella di controllo "Includi concessioni di ruoli fornite da Google".
Se ricevi un errore relativo alle quote durante l'esecuzione del flusso di lavoro tabulare per End-to-End AutoML, potresti dover richiedere una quota più elevata. Per saperne di più, consulta Gestire le quote per i workflow tabulari.
Recupera l'URI del risultato precedente dell'ottimizzazione iperparametri
Se hai già completato un'esecuzione del 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 precedente dell'ottimizzazione degli iperparametri utilizzando la console Google Cloud o caricandolo in modo programmatico con l'API.
Google Cloud console
Per trovare l'URI del risultato dell'ottimizzazione degli iperparametri utilizzando la console Google Cloud , segui questi passaggi:
Nella console Google Cloud , nella sezione Vertex AI, vai alla pagina Pipeline.
Seleziona la scheda Esecuzioni.
Seleziona l'esecuzione della pipeline che vuoi utilizzare.
Seleziona Espandi artefatti.
Fai clic sul componente exit-handler-1.
Fai clic sul componente stage_1_tuning_result_artifact_uri_empty.
Trova il componente automl-tabular-cv-trainer-2.
Fai clic sull'artefatto associato tuning_result_output.
Seleziona la scheda Informazioni nodo.
Copia l'URI da utilizzare nel passaggio Addestra un modello.
API: Python
Il seguente codice campione mostra come caricare il risultato dell'ottimizzazione degli iperparametri utilizzando l'API. La variabile job
si riferisce all'esecuzione precedente 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
Google Cloud console
Per addestrare un modello utilizzando la console Google Cloud , segui questi passaggi:
Nella console Google Cloud , nella sezione Vertex AI, vai alla pagina Pipeline.
Seleziona la scheda Galleria modelli.
Nella scheda AutoML per la classificazione tabulare / regressione, fai clic su Crea esecuzione.
Nella pagina Dettagli esecuzione, configura quanto segue:
- Inserisci un nome per l'esecuzione della pipeline.
- (Facoltativo) Se vuoi impostare il service account di Vertex AI Pipelines o il service account worker Dataflow, apri le opzioni avanzate. Scopri di più sui service account.
- Fai clic su Continua.
Nella pagina Configurazione di runtime, configura come segue:
-
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 i file intermedi, come il set di dati materializzato e il modello. Ricordati di pulire la directory al termine dell'addestramento e dopo aver copiato il modello e altri artefatti importanti in un altro bucket Cloud Storage. In alternativa, imposta una durata (TTL) per il bucket Cloud Storage.
I bucket per il tuo progetto sono elencati nella sezione Cloud Storage della console Google Cloud .
- Fai clic su Continua.
-
Nella pagina Metodo di addestramento, configura quanto segue:
- Seleziona il nome del set di dati che vuoi utilizzare per addestrare il modello.
- Seleziona la colonna di destinazione. La colonna target è il valore che il modello prevede. Scopri di più sui requisiti della colonna target.
- Inserisci il nome visualizzato per il nuovo modello.
- (Facoltativo) Per scegliere come suddividere i dati tra i set di addestramento, test e
convalida, apri le Opzioni avanzate. Puoi scegliere tra le seguenti opzioni di suddivisione dei dati:
- Casuale (impostazione predefinita): Vertex AI seleziona in modo casuale le righe associate a ciascuno dei 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 ciascun set di dati.
- Manuale: Vertex AI seleziona le righe di dati per ciascun set di dati in base ai valori di una colonna di suddivisione dati. Specifica il nome della colonna di suddivisione dei dati.
- Cronologico: Vertex AI suddivide i dati in base al timestamp in una colonna temporale. Specifica 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.
- Stratificata: Vertex AI seleziona in modo casuale le righe associate a ciascuno dei set di dati, ma conserva la distribuzione dei valori della colonna target. 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.
- (Facoltativo):puoi eseguire la pipeline senza la ricerca dell'architettura. Se scegli Salta la ricerca dell'architettura, ti verrà chiesto di fornire un insieme di iperparametri da un'esecuzione della pipeline precedente nella pagina Opzioni di addestramento.
- Fai clic su Continua.
Nella pagina Training options (Opzioni di addestramento), configura quanto segue:
- (Facoltativo) Fai clic su Genera statistiche. La generazione delle statistiche compila i menu a discesa Trasformazione.
- Esamina l'elenco delle colonne ed escludi dall'addestramento quelle che non devono essere utilizzate per addestrare il modello.
- Rivedi le trasformazioni selezionate per le funzionalità incluse, nonché se sono consentiti dati non validi e apporta gli aggiornamenti necessari. Scopri di più su trasformazioni e dati non validi.
- Se hai scelto di saltare la ricerca dell'architettura nella pagina Metodo di addestramento, fornisci il percorso del risultato dell'ottimizzazione degli iperparametri di un'esecuzione della pipeline precedente.
- (Facoltativo) Se vuoi specificare la colonna del peso, apri le Opzioni avanzate ed effettua la tua selezione. Scopri di più sulle colonne di ponderazione.
- (Facoltativo) Se vuoi modificare l'obiettivo di ottimizzazione predefinito, apri le Opzioni avanzate ed effettua la selezione. Scopri di più sugli obiettivi di ottimizzazione.
- (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.
- (Facoltativo) Puoi fornire valori fissi per un sottoinsieme degli iperparametri.
Vertex AI cerca i valori ottimali degli iperparametri rimanenti non fissi.
Questa opzione è una buona scelta se hai una forte preferenza per il tipo di modello. Puoi scegliere
tra reti neurali e alberi potenziati per il tipo di modello. Apri Opzioni avanzate
e fornisci un override 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"] } } ]
- Fai clic su Continua.
Nella pagina Compute e prezzi, configura quanto segue:
- Inserisci il numero massimo di ore per cui vuoi addestrare il modello. Scopri di più sui prezzi.
- (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 è una buona scelta se hai un set di dati di grandi dimensioni e vuoi ottimizzare l'hardware della macchina di conseguenza.
Fai clic su Invia.
API: Python
Il seguente codice campione mostra come eseguire una pipeline di addestramento del 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()
ti consente di impostare il account di servizio di Vertex AI Pipelines su un account a tua scelta.
La pipeline e i valori dei parametri sono definiti dalla seguente funzione. 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 funge da override per il account di servizio worker Dataflow predefinito. |
prediction_type |
Stringa | Scegli classification per addestrare un modello di classificazione o regression per addestrare un modello di regressione. |
optimization_objective |
Stringa | Se addestri un modello di classificazione binaria, 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 modelli di classificazione o regressione. |
enable_probabilistic_inference |
Booleano | Se addestri un modello di regressione e imposti questo valore su true , Vertex AI modella la distribuzione di probabilità dell'inferenza. L'inferenza probabilistica può migliorare la qualità del modello gestendo i dati rumorosi e quantificando l'incertezza. Se vengono specificati quantiles , Vertex AI restituisce anche i quantili della distribuzione. |
quantiles |
List[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 AutoML end-to-end definendo valori degli argomenti che vengono passati durante la definizione della pipeline. Puoi personalizzare il tuo flusso di lavoro nei seguenti modi:
- Ignorare lo spazio di ricerca
- Configura hardware
- Distillare il modello
- Salta ricerca architettura
Esegui l'override dello spazio di ricerca
Il seguente parametro get_automl_tabular_pipeline_and_parameters
ti consente di fornire valori fissi per un sottoinsieme degli iperparametri.
Vertex AI cerca i valori ottimali degli iperparametri rimanenti
non fissi. Utilizza questo parametro se vuoi scegliere
tra reti neurali e alberi potenziati per il tipo di modello.
Nome parametro | Tipo | Definizione |
---|---|---|
study_spec_parameters_override |
List[Dict[String, Any]] | (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
}
}
]
Configurare l'hardware
I seguenti parametri get_automl_tabular_pipeline_and_parameters
ti consentono di configurare i tipi di macchina e il numero di macchine per l'addestramento.
Questa opzione è una buona scelta 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 |
Dict[String, Any] | (Facoltativo) Configurazione personalizzata dei tipi di macchine 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 |
Dict[String, Any] | (Facoltativo) Configurazione personalizzata dei tipi di macchine e del numero di macchine per l'addestramento. Questo parametro configura il componente automl-tabular-stage-1-tuner della pipeline. |
Il seguente codice mostra come impostare il tipo di macchina n1-standard-8
per il nodo principale TensorFlow e il tipo di macchina n1-standard-4
per il nodo di valutazione 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
ti consente di
creare una versione più piccola del modello ensemble. Un modello più piccolo riduce
la latenza e il costo dell'inferenza.
Nome parametro | Tipo | Definizione |
---|---|---|
run_distillation |
Booleano | Se TRUE , crea una versione più piccola del modello di insieme. |
Salta ricerca architettura
Il seguente parametro get_automl_tabular_pipeline_and_parameters
ti consente di eseguire la pipeline senza la ricerca dell'architettura e di fornire un insieme di
iperparametri da un'esecuzione precedente della pipeline.
Nome parametro | Tipo | Definizione |
---|---|---|
stage_1_tuning_result_artifact_uri |
Stringa | (Facoltativo) URI del risultato dell'ottimizzazione degli iperparametri di un'esecuzione della pipeline precedente. |
Obiettivi di ottimizzazione per i modelli di classificazione o regressione
Quando addestri 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 ideali per:Obiettivo ottimizzazione | Valore API | Utilizza questo obiettivo se vuoi… |
---|---|---|
AUC ROC | maximize-au-roc |
Massimizza 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 |
Mantiene accurate per quanto possibile le probabilità delle inferenze. L'unico obiettivo supportato per la classificazione multiclasse. |
AUC PR | maximize-au-prc |
Massimizza l'area sotto la curva di precisione-richiamo. Ottimizza i risultati per le inferenze per la classe meno comune. |
Precisione al richiamo | maximize-precision-at-recall |
Ottimizza la precisione a un valore di richiamo specifico. |
Richiamo alla precisione | maximize-recall-at-precision |
Ottimizza il richiamo a un valore di precisione specifico. |
Obiettivo ottimizzazione | Valore API | Utilizza questo obiettivo se vuoi… |
---|---|---|
RMSE | minimize-rmse |
Riduci al minimo l'errore quadratico medio (RMSE). Acquisisce con accuratezza più valori estremi. Valore predefinito. |
MAE | minimize-mae |
Riduci al minimo l'errore assoluto medio (MAE). Visualizza i valori estremi come outlier con un minore impatto sul modello. |
RMSLE | minimize-rmsle |
Riduci al minimo l'errore logaritmico quadratico 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
- Scopri di più sulle inferenze online per i modelli di classificazione e regressione.
- Scopri di più sulle inferenze batch per i modelli di classificazione e regressione.
- Scopri di più sui prezzi per l'addestramento dei modelli.