Le pipeline di addestramento ti consentono di eseguire l'addestramento di machine learning (ML) personalizzato e di creare automaticamente una risorsa Model
in base all'output dell'addestramento.
Prima di creare una pipeline
Prima di creare una pipeline di addestramento su Vertex AI, devi creare un'applicazione di addestramento Python o un container personalizzato per definire il codice di addestramento e le dipendenze da eseguire su Vertex AI. Se crei un'applicazione di addestramento Python utilizzando TensorFlow, scikit-learn o XGBoost, puoi utilizzare i nostri container predefiniti per eseguire il codice. Se non sai quale di queste opzioni scegliere, consulta i requisiti per i codici di formazione per saperne di più.
Opzioni della pipeline di addestramento
Una pipeline di addestramento incapsula i job di addestramento con passaggi aggiuntivi. Questa guida illustra due diverse pipeline di addestramento:
- Avvia un
CustomJob
e carica il modello risultante in Vertex AI - Avvia un job di ottimizzazione degli iperparametri e carica il modello risultante su Vertex AI
Inoltre, puoi utilizzare i set di dati gestiti nella pipeline di addestramento. Scopri di più sulla configurazione della pipeline di addestramento per utilizzare un set di dati gestito.
Che cosa include un CustomJob
Quando crei un job personalizzato, devi specificare le impostazioni di cui ha bisogno Vertex AI per eseguire il codice di addestramento, tra cui:
- Un pool di worker per l'addestramento con un nodo singolo (
WorkerPoolSpec
) oppure più pool di worker per l'addestramento distribuito - Impostazioni facoltative per la configurazione della pianificazione dei job (
Scheduling
), l'impostazione di determinate variabili di ambiente per il codice di addestramento, l'utilizzo di un account servizio personalizzato e l'utilizzo del peering di rete VPC
Nei pool di worker, puoi specificare le seguenti impostazioni:
- Tipi di macchine e acceleratori
- Configurazione del tipo di codice di addestramento eseguito dal pool di worker: un'applicazione di addestramento Python (
PythonPackageSpec
) o un container personalizzato (ContainerSpec
)
Se vuoi creare un job personalizzato autonomo al di fuori di una pipeline di addestramento Vertex AI, consulta la guida sui job personalizzati.
Configurare la pipeline per utilizzare un set di dati gestito
All'interno della pipeline di addestramento, puoi configurare il job di addestramento personalizzato o il job di ottimizzazione degli iperparametri in modo da utilizzare un set di dati gestito. I set di dati gestiti ti consentono di gestire i set di dati con i modelli e le applicazioni di addestramento.
Per utilizzare un set di dati gestito nella pipeline di addestramento:
- Crea il tuo set di dati.
- Aggiorna l'applicazione di addestramento in modo che utilizzi un set di dati gestito. Per ulteriori informazioni, consulta come Vertex AI passa il set di dati all'applicazione di addestramento.
Specifica un set di dati gestito quando crei la pipeline di addestramento. Ad esempio, se crei la pipeline di addestramento utilizzando l'API REST, specifica le impostazioni del set di dati nella sezione
inputDataConfig
.Devi creare la pipeline di addestramento nella stessa regione in cui hai creato il set di dati.
Per scoprire di più, consulta il riferimento all'API su TrainingPipeline
.
Configurare l'addestramento distribuito
All'interno della pipeline di addestramento, puoi configurare il job di addestramento personalizzato o il job di ottimizzazione degli iperparametri per l'addestramento distribuito specificando più pool di worker.
Tutti gli esempi in questa pagina mostrano job di addestramento con una sola replica e un pool di worker. Per modificarli per l'addestramento distribuito:
- Utilizza il primo pool di worker per configurare la replica principale e imposta il numero di repliche su 1.
- Aggiungi altri pool di worker per configurare repliche di worker, repliche di server di parametri o repliche di valutatori, se il tuo framework di machine learning supporta queste attività di cluster aggiuntive per l'addestramento distribuito.
Scopri di più sull'utilizzo dell'addestramento distribuito.
Caricamento di CustomJob e modelli
Questa pipeline di addestramento incapsula un job personalizzato con un passaggio aggiuntivo che semplifica il deployment del modello su Vertex AI dopo l'addestramento. Questa pipeline di addestramento esegue due operazioni principali:
La pipeline di addestramento crea una risorsa
CustomJob
. Il job personalizzato esegue l'applicazione di addestramento utilizzando le risorse di calcolo specificate.Al termine del job personalizzato, la pipeline di addestramento trova gli artefatti del modello creati dall'applicazione di addestramento nella directory di output specificata per il bucket Cloud Storage. Utilizza questi elementi per creare una risorsa model, che ti consente di eseguire il deployment del modello.
Esistono due modi diversi per impostare la posizione degli elementi del modello:
Se imposti un
baseOutputDirectory
per il job di addestramento, assicurati che il codice di addestramento salvi gli artefatti del modello in quella posizione utilizzando la variabile di ambiente$AIP_MODEL_DIR
impostata da Vertex AI. Al termine del job di addestramento, Vertex AI cerca gli artefatti del modello risultanti ings://BASE_OUTPUT_DIRECTORY/model
.Se imposti il
modelToUpload.artifactUri
campo, la pipeline di addestramento carica gli elementi del modello da quell'URI. Devi impostare questo campo se non hai impostatobaseOutputDirectory
.
Se specifichi sia baseOutputDirectory
sia modelToUpload.artifactUri
,
Vertex AI utilizza modelToUpload.artifactUri
.
Per creare questo tipo di pipeline di addestramento:
Console
Nella console Google Cloud, nella sezione Vertex AI, vai alla pagina Pipeline di addestramento.
Fai clic su
Crea per aprire il riquadro Addestra nuovo modello.Nel passaggio Metodo di addestramento, specifica le seguenti impostazioni:
Se vuoi utilizzare un set di dati gestito per la formazione, specifica un set di dati e un set di annotazioni.
In caso contrario, nell'elenco a discesa Set di dati, seleziona Nessun set di dati gestito.
Seleziona Addestramento personalizzato (avanzato).
Fai clic su Continua.
Nel passaggio Dettagli modello, scegli Addestra nuovo modello o Addestra nuova versione. Se selezioni Addestra nuovo modello, inserisci un nome a tua scelta,MODEL_NAME, per il modello. Fai clic su Continua.
Nel passaggio Container di addestramento, specifica le seguenti impostazioni:
Seleziona se utilizzare un container predefinito o un contenuto personalizzato per l'addestramento.
A seconda della tua scelta, esegui una delle seguenti operazioni:
Se vuoi utilizzare un container predefinito per l'addestramento, fornisci a Vertex AI le informazioni necessarie per utilizzare il pacchetto di addestramento che hai caricato su Cloud Storage:
Utilizza gli elenchi a discesa Framework modello e Versione framework modello per specificare il container predefinito da utilizzare.
Nel campo Posizione del pacchetto, specifica l'URI Cloud Storage dell'applicazione di addestramento Python che hai creato e caricato. Di solito questo file termina con
.tar.gz
.Nel campo Modulo Python, inserisci il nome del modulo dell'entry point della tua applicazione di addestramento.
Se vuoi utilizzare un container personalizzato per l'addestramento, nel campo Immagine container specifica l'URI di Artifact Registry o Docker Hub dell'immagine container.
Nel campo Directory di output del modello, specifica l'URI Cloud Storage di una directory in un bucket a cui hai accesso. La directory non deve ancora esistere.
Questo valore viene passato a Vertex AI nel campo
baseOutputDirectory
API, che imposta diverse variabili di ambiente a cui la tua applicazione di addestramento può accedere quando viene eseguita.Al termine dell'addestramento, Vertex AI cerca gli elementi del modello in una sottodirectory di questo URI per creare un
Model
. Questa sottodirectory è disponibile per il codice di addestramento come variabile di ambienteAIP_MODEL_DIR
.Quando non utilizzi l'ottimizzazione degli iperparametri, Vertex AI si aspetta di trovare gli elementi del modello in
BASE_OUTPUT_DIRECTORY/model/
.Facoltativo: nel campo Argomenti, puoi specificare gli argomenti da utilizzare da parte di Vertex AI quando inizia a eseguire il codice di addestramento. La lunghezza massima per tutti gli argomenti combinati è di 100.000 caratteri. Il comportamento di questi argomenti varia a seconda del tipo di contenitore utilizzato:
Se utilizzi un contenitore predefinito, Vertex AI trasmette gli argomenti come flag a riga di comando al modulo Python.
Se utilizzi un contenitore personalizzato, Vertex AI sostituisce l'istruzione
CMD
del contenitore con gli argumenti.
Fai clic su Continua.
Nel passaggio Ottimizzazione degli iperparametri, assicurati che la casella di controllo Abilita ottimizzazione degli iperparametri non sia selezionata. Fai clic su Continua.
Nel passaggio Computing e prezzi, specifica le seguenti impostazioni:
Nell'elenco a discesa Regione, seleziona una "regione che supporta l'addestramento personalizzato".
Nella sezione Pool di worker 0, specifica le risorse di calcolo da utilizzare per l'addestramento.
Se specifichi gli acceleratori, assicurati che il tipo di acceleratore scelto sia disponibile nella regione selezionata.
Se vuoi eseguire l'addestramento distribuito, fai clic su Aggiungi altri pool di worker e specifica un altro insieme di risorse di calcolo per ogni altro pool di worker che vuoi.
Fai clic su Continua.
Nel passaggio Container di previsione, specifica le seguenti impostazioni:
Seleziona se utilizzare un container predefinito o un contenuto personalizzato per fornire le previsioni del modello addestrato.
A seconda della tua scelta, esegui una delle seguenti operazioni:
Se vuoi utilizzare un container predefinito per fornire le previsioni, usa i campi Framework del modello, Versione del framework del modello e Tipo di acceleratore per scegliere il container di previsione predefinito da utilizzare per la previsione.
Abbina Framework modello e Versione framework modello al framework di machine learning utilizzato per l'addestramento. Specifica un tipo di acceleratore solo se in un secondo momento vuoi utilizzare le GPU per le previsioni online o batch.
Se vuoi utilizzare un container personalizzato per fornire le previsioni, svolgi i seguenti passaggi:
Nel campo Immagine container, specifica l'URI di Artifact Registry dell'immagine container.
Se vuoi, puoi specificare un comando per sostituire l'
ENTRYPOINT
istruzione del contenitore.
Il campo Model directory (Directory del modello) contiene il valore impostato in precedenza nel campo Model output directory (Directory di output del modello) del passaggio Training container (Contenitore di addestramento). La modifica di uno di questi campi ha lo stesso effetto. Per ulteriori informazioni su questo campo, consulta l'istruzione precedente.
Lascia vuoti i campi della sezione Predici schemata.
Fai clic su Inizia addestramento per avviare la pipeline di addestramento personalizzato.
REST
Utilizza il seguente esempio di codice per creare una pipeline di addestramento utilizzando il
metodo create
della risorsa trainingPipeline
.
Nota:se vuoi impostare questa pipeline per creare una nuova versione del modello,
se vuoi puoi aggiungere PARENT_MODEL
nel campo trainingPipeline
.
Per scoprire di più, consulta Controllo delle versioni dei modelli con Vertex AI Model Registry.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- LOCATION_ID: la regione in cui viene eseguito il codice di addestramento e in cui viene memorizzato
Model
. - PROJECT_ID: l'ID del tuo progetto.
- TRAINING_PIPELINE_NAME: obbligatorio. Un nome visualizzato per trainingPipeline.
- Se l'applicazione di addestramento utilizza un set di dati Vertex AI, specifica quanto segue:
- DATASET_ID: l'ID del set di dati.
- ANNOTATIONS_FILTER: filtra il set di dati in base alle annotazioni specificate.
- ANNOTATION_SCHEMA_URI: filtra il set di dati in base all'URI dello schema di annotazione specificato.
-
Utilizza una delle seguenti opzioni per specificare in che modo gli elementi dati vengono suddivisi in set di addestramento, convalida e test.
- Per suddividere il set di dati in base a frazioni che definiscono le dimensioni di ciascun insieme, specifica quanto segue:
- TRAINING_FRACTION: la frazione del set di dati da utilizzare per addestrare il modello.
- VALIDATION_FRACTION: la frazione del set di dati da utilizzare per convalidare il modello.
- TEST_FRACTION: la frazione del set di dati da utilizzare per valutare il modello.
- Per suddividere il set di dati in base ai filtri, specifica quanto segue:
- TRAINING_FILTER: filtra il set di dati in base agli elementi di dati da utilizzare per l'addestramento del modello.
- VALIDATION_FILTER: filtra il set di dati in base agli elementi di dati da utilizzare per convalidare il modello.
- TEST_FILTER: filtra il set di dati in base agli elementi di dati da utilizzare per valutare il modello.
- Per utilizzare una suddivisione predefinita, specifica quanto segue:
- PREDEFINED_SPLIT_KEY: il nome della colonna da utilizzare per suddividere il set di dati. I valori accettabili in questa colonna includono "training", "validation" e "test".
-
Per suddividere il set di dati in base al timestamp degli elementi dati, specifica quanto segue:
- TIMESTAMP_TRAINING_FRACTION: la frazione del set di dati da utilizzare per addestrare il modello.
- TIMESTAMP_VALIDATION_FRACTION: la frazione del set di dati da utilizzare per convalidare il modello.
- TIMESTAMP_TEST_FRACTION: la frazione del set di dati da utilizzare per valutare il modello.
- TIMESTAMP_SPLIT_KEY: il nome della colonna del timestamp da utilizzare per suddividere il set di dati.
- Per suddividere il set di dati in base a frazioni che definiscono le dimensioni di ciascun insieme, specifica quanto segue:
- OUTPUT_URI_PREFIX: la posizione di Cloud Storage in cui Vertex AI esporta il set di dati di addestramento, dopo averlo suddiviso in set di addestramento, convalida e test.
- Definisci il job di addestramento personalizzato:
- MACHINE_TYPE: il tipo di macchina. Consulta i tipi di macchine disponibili per l'addestramento.
- ACCELERATOR_TYPE: (facoltativo) Il tipo di acceleratore da collegare a ogni prova.
- ACCELERATOR_COUNT: (facoltativo) Il numero di acceleratori da collegare a ogni prova.
- REPLICA_COUNT: il numero di repliche dei worker da utilizzare per ogni prova.
- Se l'applicazione di addestramento viene eseguita in un contenitore personalizzato, specifica quanto segue:
- CUSTOM_CONTAINER_IMAGE_URI: l'URI di un'immagine container in Artifact Registry o Docker Hub da eseguire su ogni replica del worker.
- CUSTOM_CONTAINER_COMMAND: (facoltativo) Il comando da richiamare all'avvio del container. Questo comando sostituisce l'entrypoint predefinito del container.
- CUSTOM_CONTAINER_ARGS: (facoltativo) Gli argomenti da passare all'avvio del container. La lunghezza massima per tutti gli argomenti combinati è di 100.000 caratteri.
- Se l'applicazione di addestramento è un pacchetto Python che viene eseguito in un container predefinito,
specifica quanto segue:
- PYTHON_PACKAGE_EXECUTOR_IMAGE_URI: l'URI dell'immagine del container che esegue il pacchetto Python fornito. Consulta i container predefiniti disponibili per l'addestramento.
- PYTHON_PACKAGE_URIS: la posizione in Cloud Storage dei file del pacchetto Python, ovvero il programma di addestramento e i relativi pacchetti dipendenti. Il numero massimo di URI dei pacchetti è 100.
- PYTHON_MODULE: il nome del modulo Python da eseguire dopo l'installazione dei pacchetti.
- PYTHON_PACKAGE_ARGS: (facoltativo) Argomenti della riga di comando da passare al modulo Python. La lunghezza massima per tutti gli argomenti combinati è di 100.000 caratteri.
- TIMEOUT: (facoltativo) Il tempo di esecuzione massimo del job.
- MODEL_NAME: un nome visualizzato per il modello caricato (creato) da TrainingPipeline.
- MODEL_DESCRIPTION: una descrizione del modello.
- IMAGE_URI: l'URI dell'immagine del container da utilizzare per eseguire le previsioni. Ad esempio,
us-docker.pkg.dev/vertex-ai/prediction/tf2-cpu.2-1:latest
. Utilizza container predefiniti o container personalizzati. - modelToUpload.labels: qualsiasi insieme di coppie chiave-valore per organizzare i modelli. Ad esempio:
- "env": "prod"
- "tier": "backend"
- Specifica LABEL_NAME e LABEL_VALUE per le eventuali etichette da applicare a questa pipeline di addestramento.
Metodo HTTP e URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/trainingPipelines
Corpo JSON della richiesta:
{ "displayName": "TRAINING_PIPELINE_NAME", "inputDataConfig": { "datasetId": DATASET_ID, "annotationsFilter": ANNOTATIONS_FILTER, "annotationSchemaUri": ANNOTATION_SCHEMA_URI, // Union field split can be only one of the following: "fractionSplit": { "trainingFraction": TRAINING_FRACTION, "validationFraction": VALIDATION_FRACTION, "testFraction": TEST_FRACTION }, "filterSplit": { "trainingFilter": TRAINING_FILTER, "validationFilter": VALIDATION_FILTER, "testFilter": TEST_FILTER }, "predefinedSplit": { "key": PREDEFINED_SPLIT_KEY }, "timestampSplit": { "trainingFraction": TIMESTAMP_TRAINING_FRACTION, "validationFraction": TIMESTAMP_VALIDATION_FRACTION, "testFraction": TIMESTAMP_TEST_FRACTION, "key": TIMESTAMP_SPLIT_KEY } // End of list of possible types for union field split. "gcsDestination": { "outputUriPrefix": OUTPUT_URI_PREFIX } }, "trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/custom_task_1.0.0.yaml", "trainingTaskInputs": { "workerPoolSpecs": [ { "machineSpec": { "machineType": MACHINE_TYPE, "acceleratorType": ACCELERATOR_TYPE, "acceleratorCount": ACCELERATOR_COUNT }, "replicaCount": REPLICA_COUNT, // Union field task can be only one of the following: "containerSpec": { "imageUri": CUSTOM_CONTAINER_IMAGE_URI, "command": [ CUSTOM_CONTAINER_COMMAND ], "args": [ CUSTOM_CONTAINER_ARGS ] }, "pythonPackageSpec": { "executorImageUri": PYTHON_PACKAGE_EXECUTOR_IMAGE_URI, "packageUris": [ PYTHON_PACKAGE_URIS ], "pythonModule": PYTHON_MODULE, "args": [ PYTHON_PACKAGE_ARGS ] } // End of list of possible types for union field task. } ], "scheduling": { "TIMEOUT": TIMEOUT } } }, "modelToUpload": { "displayName": "MODEL_NAME", "predictSchemata": {}, "containerSpec": { "imageUri": "IMAGE_URI" } }, "labels": { LABEL_NAME_1": LABEL_VALUE_1, LABEL_NAME_2": LABEL_VALUE_2 } }
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/trainingPipelines"
PowerShell
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/trainingPipelines" | Select-Object -Expand Content
La risposta contiene informazioni sulle specifiche e sul TRAININGPIPELINE_ID.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione Java riportate nella guida rapida all'utilizzo delle librerie client di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Java di Vertex AI.
Per autenticarti a Vertex AI, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, consulta Installare l'SDK Vertex AI per Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.
I seguenti esempi mostrano come utilizzare l'SDK Vertex AI per Python per creare una pipeline di addestramento personalizzata. Scegli se utilizzare un container personalizzato o un container predefinito per l'addestramento:
Container predefinito
Quando utilizzi l'SDK Vertex AI per Python per creare una pipeline di addestramento che esegue il codice Python in un contenitore predefinito, puoi fornire il codice di addestramento in uno dei seguenti modi:
Specifica l'URI di un pacchetto della distribuzione di origine Python in Cloud Storage.
Questa opzione è disponibile anche quando crei una pipeline di addestramento senza utilizzare l'SDK Vertex AI per Python.
Specifica il percorso di uno script Python sulla tua macchina locale. Prima di creare una pipeline di addestramento, l'SDK Vertex AI per Python impacchetta lo script come distribuzione di origine e lo carica nel bucket Cloud Storage di tua scelta.
Questa opzione è disponibile solo se utilizzi l'SDK Vertex AI per Python.
Per visualizzare un esempio di codice per ciascuna di queste opzioni, seleziona la scheda corrispondente:
Pacchetto
L'esempio seguente utilizza la CustomPythonPackageTrainingJob
class.
Script
L'esempio seguente utilizza la CustomTrainingJob
class.
Container personalizzato
L'esempio seguente utilizza la CustomContainerTrainingJob
class.
Job di ottimizzazione degli iperparametri e caricamento del modello
Questa pipeline di addestramento incapsula un job di ottimizzazione degli iperparametri con un passaggio aggiuntivo che semplifica il deployment del modello in Vertex AI dopo l'addestramento. Questa pipeline di addestramento svolge due compiti principali:
La pipeline di addestramento crea una risorsa job di ottimizzazione iperparametri. Il job di ottimizzazione degli iperparametri crea più prove. Per ogni prova, un job personalizzato esegue l'applicazione di addestramento utilizzando le risorse di calcolo e gli iperparametri specificati.
Al termine del job di ottimizzazione degli iperparametri, la pipeline di addestramento trova gli artefatti del modello della prova migliore nella directory di output (
baseOutputDirectory
) specificata per il bucket Cloud Storage. La pipeline di addestramento utilizza questi elementi per creare una risorsa modello, che ti consente di eseguire il deployment del modello.
Per questa pipeline di addestramento, devi specificare un baseOutputDirectory
in cui Vertex AI cerca gli artefatti del modello della prova migliore.
I job di ottimizzazione degli iperparametri richiedono la configurazione di impostazioni aggiuntive. Scopri di più sulle impostazioni di un HyperparameterTuningJob
.
REST
Utilizza il seguente esempio di codice per creare una pipeline di addestramento utilizzando il
metodo create
della risorsa trainingPipeline
.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- LOCATION_ID: la regione del progetto.
- PROJECT_ID: l'ID del tuo progetto.
- TRAINING_PIPELINE_NAME: obbligatorio. Un nome visualizzato per trainingPipeline.
- Se l'applicazione di addestramento utilizza un set di dati Vertex AI, specifica quanto segue:
- DATASET_ID: l'ID del set di dati.
- ANNOTATIONS_FILTER: filtra il set di dati in base alle annotazioni specificate.
- ANNOTATION_SCHEMA_URI: filtra il set di dati in base all'URI dello schema di annotazione specificato.
-
Utilizza una delle seguenti opzioni per specificare in che modo gli elementi dati vengono suddivisi in set di addestramento, convalida e test.
- Per suddividere il set di dati in base a frazioni che definiscono le dimensioni di ciascun insieme, specifica quanto segue:
- TRAINING_FRACTION: la frazione del set di dati da utilizzare per addestrare il modello.
- VALIDATION_FRACTION: la frazione del set di dati da utilizzare per convalidare il modello.
- TEST_FRACTION: la frazione del set di dati da utilizzare per valutare il modello.
- Per suddividere il set di dati in base ai filtri, specifica quanto segue:
- TRAINING_FILTER: filtra il set di dati in base agli elementi di dati da utilizzare per l'addestramento del modello.
- VALIDATION_FILTER: filtra il set di dati in base agli elementi di dati da utilizzare per convalidare il modello.
- TEST_FILTER: filtra il set di dati in base agli elementi di dati da utilizzare per valutare il modello.
- Per utilizzare una suddivisione predefinita, specifica quanto segue:
- PREDEFINED_SPLIT_KEY: il nome della colonna da utilizzare per suddividere il set di dati. I valori accettabili in questa colonna includono "training", "validation" e "test".
-
Per suddividere il set di dati in base al timestamp degli elementi dati, specifica quanto segue:
- TIMESTAMP_TRAINING_FRACTION: la frazione del set di dati da utilizzare per addestrare il modello.
- TIMESTAMP_VALIDATION_FRACTION: la frazione del set di dati da utilizzare per convalidare il modello.
- TIMESTAMP_TEST_FRACTION: la frazione del set di dati da utilizzare per valutare il modello.
- TIMESTAMP_SPLIT_KEY: il nome della colonna del timestamp da utilizzare per suddividere il set di dati.
- Per suddividere il set di dati in base a frazioni che definiscono le dimensioni di ciascun insieme, specifica quanto segue:
- OUTPUT_URI_PREFIX: la posizione di Cloud Storage in cui Vertex AI esporta il set di dati di addestramento dopo averlo suddiviso in set di addestramento, convalida e test.
- Specifica il job di ottimizzazione degli iperparametri:
- Specifica le metriche:
- METRIC_ID: il nome di questa metrica.
- METRIC_GOAL: lo scopo di questa metrica. Può essere
MAXIMIZE
oMINIMIZE
.
- Specifica gli iperparametri:
- PARAMETER_ID: il nome di questo iperparametro.
- PARAMETER_SCALE: (facoltativo) La modalità di applicazione della scala al parametro. Lascia vuoto
per i parametri CATEGORICAL. Può essere
UNIT_LINEAR_SCALE
,UNIT_LOG_SCALE
,UNIT_REVERSE_LOG_SCALE
oSCALE_TYPE_UNSPECIFIED
- Se il tipo di questo iperparametro è DOUBLE, specifica i valori minimo (DOUBLE_MIN_VALUE) e massimo (DOUBLE_MAX_VALUE) per questo iperparametro.
- Se il tipo di questo iperparametro è INTEGER, specifica i valori minimo (INTEGER_MIN_VALUE) e massimo (INTEGER_MAX_VALUE) per questo iperparametro.
- Se il tipo di questo iperparametro è CATEGORICAL, specifica i valori accettabili (CATEGORICAL_VALUES) come array di stringhe.
- Se il tipo di questo iperparametro è DISCRETE, specifica i valori accettabili (DISCRETE_VALUES) come array di numeri.
- ALGORITHM: (facoltativo) L'algoritmo di ricerca da utilizzare in questo job di ottimizzazione degli iperparametri. Può essere
ALGORITHM_UNSPECIFIED
,GRID_SEARCH
oRANDOM_SEARCH
. - MAX_TRIAL_COUNT: il numero massimo di prove da eseguire in questo job.
- PARALLEL_TRIAL_COUNT: il numero massimo di prove che possono essere eseguite in parallelo.
- MAX_FAILED_TRIAL_COUNT: il numero di job che possono non riuscire prima che il job di ottimizzazione degli iperparametri non riesca.
- Definisci il job di addestramento personalizzato di prova:
- MACHINE_TYPE: il tipo di macchina. Consulta i tipi di macchine disponibili per l'addestramento.
- ACCELERATOR_TYPE: (facoltativo) Il tipo di acceleratore da collegare a ogni prova.
- ACCELERATOR_COUNT: (facoltativo) Il numero di acceleratori da collegare a ogni prova.
- REPLICA_COUNT: il numero di repliche dei worker da utilizzare per ogni prova.
- Se l'applicazione di addestramento viene eseguita in un contenitore personalizzato, specifica quanto segue:
- CUSTOM_CONTAINER_IMAGE_URI: l'URI di un'immagine container in Artifact Registry o Docker Hub da eseguire su ogni replica del worker.
- CUSTOM_CONTAINER_COMMAND: (facoltativo) Il comando da richiamare all'avvio del container. Questo comando sostituisce l'entrypoint predefinito del container.
- CUSTOM_CONTAINER_ARGS: (facoltativo) Gli argomenti da passare all'avvio del container.
- Se l'applicazione di addestramento è un pacchetto Python che viene eseguito in un container predefinito,
specifica quanto segue:
- PYTHON_PACKAGE_EXECUTOR_IMAGE_URI: l'URI dell'immagine del container che esegue il pacchetto Python fornito. Consulta i container predefiniti disponibili per l'addestramento.
- PYTHON_PACKAGE_URIS: la posizione in Cloud Storage dei file del pacchetto Python, ovvero il programma di addestramento e i relativi pacchetti dipendenti. Il numero massimo di URI dei pacchetti è 100.
- PYTHON_MODULE: il nome del modulo Python da eseguire dopo l'installazione dei pacchetti.
- PYTHON_PACKAGE_ARGS: (facoltativo) Argomenti della riga di comando da passare al modulo Python.
- Scopri di più sulle opzioni di pianificazione dei job.
- TIMEOUT: (facoltativo) Il tempo di esecuzione massimo per ogni prova.
- Specifica LABEL_NAME e LABEL_VALUE per le eventuali etichette che vuoi applicare a questo job di ottimizzazione degli iperparametri.
- Specifica le metriche:
- MODEL_NAME: un nome visualizzato per il modello caricato (creato) da TrainingPipeline.
- MODEL_DESCRIPTION: facoltativo. Una descrizione del modello.
- PREDICTION_IMAGE_URI: obbligatorio. Specifica una delle due seguenti opzioni:
- L'URI dell'immagine del container predefinito da utilizzare per la previsione, ad esempio "tf2-cpu.2-1:latest".
- L'URI immagine del tuo container personalizzato da utilizzare per la previsione.
- modelToUpload.labels: facoltativo. Qualsiasi insieme di coppie chiave-valore per
organizzare i modelli. Ad esempio:
- "env": "prod"
- "tier": "backend"
- Specifica LABEL_NAME e LABEL_VALUE per le eventuali etichette da applicare a questa pipeline di addestramento.
Metodo HTTP e URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/trainingPipelines
Corpo JSON della richiesta:
{ "displayName": "TRAINING_PIPELINE_NAME", "inputDataConfig": { "datasetId": DATASET_ID, "annotationsFilter": ANNOTATIONS_FILTER, "annotationSchemaUri": ANNOTATION_SCHEMA_URI, // Union field split can be only one of the following: "fractionSplit": { "trainingFraction": TRAINING_FRACTION, "validationFraction": VALIDATION_FRACTION, "testFraction": TEST_FRACTION }, "filterSplit": { "trainingFilter": TRAINING_FILTER, "validationFilter": VALIDATION_FILTER, "testFilter": TEST_FILTER }, "predefinedSplit": { "key": PREDEFINED_SPLIT_KEY }, "timestampSplit": { "trainingFraction": TIMESTAMP_TRAINING_FRACTION, "validationFraction": TIMESTAMP_VALIDATION_FRACTION, "testFraction": TIMESTAMP_TEST_FRACTION, "key": TIMESTAMP_SPLIT_KEY } // End of list of possible types for union field split. "gcsDestination": { "outputUriPrefix": OUTPUT_URI_PREFIX } }, "trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/hyperparameter_tuning_task_1.0.0.yaml", "trainingTaskInputs": { "studySpec": { "metrics": [ { "metricId": METRIC_ID, "goal": METRIC_GOAL } ], "parameters": [ { "parameterId": PARAMETER_ID, "scaleType": PARAMETER_SCALE, // Union field parameter_value_spec can be only one of the following: "doubleValueSpec": { "minValue": DOUBLE_MIN_VALUE, "maxValue": DOUBLE_MAX_VALUE }, "integerValueSpec": { "minValue": INTEGER_MIN_VALUE, "maxValue": INTEGER_MAX_VALUE }, "categoricalValueSpec": { "values": [ CATEGORICAL_VALUES ] }, "discreteValueSpec": { "values": [ DISCRETE_VALUES ] } // End of list of possible types for union field parameter_value_spec. } ], "ALGORITHM": ALGORITHM }, "maxTrialCount": MAX_TRIAL_COUNT, "parallelTrialCount": PARALLEL_TRIAL_COUNT, "maxFailedTrialCount": MAX_FAILED_TRIAL_COUNT, "trialJobSpec": { "workerPoolSpecs": [ { "machineSpec": { "machineType": MACHINE_TYPE, "acceleratorType": ACCELERATOR_TYPE, "acceleratorCount": ACCELERATOR_COUNT }, "replicaCount": REPLICA_COUNT, // Union field task can be only one of the following: "containerSpec": { "imageUri": CUSTOM_CONTAINER_IMAGE_URI, "command": [ CUSTOM_CONTAINER_COMMAND ], "args": [ CUSTOM_CONTAINER_ARGS ] }, "pythonPackageSpec": { "executorImageUri": PYTHON_PACKAGE_EXECUTOR_IMAGE_URI, "packageUris": [ PYTHON_PACKAGE_URIS ], "pythonModule": PYTHON_MODULE, "args": [ PYTHON_PACKAGE_ARGS ] } // End of list of possible types for union field task. } ], "scheduling": { "TIMEOUT": TIMEOUT } }, "labels": { LABEL_NAME_1": LABEL_VALUE_1, LABEL_NAME_2": LABEL_VALUE_2 } }, "modelToUpload": { "displayName": "MODEL_NAME", "description": "MODEL_DESCRIPTION", "predictSchemata": {}, "containerSpec": { "imageUri": "PREDICTION_IMAGE_URI" } }, "labels": { LABEL_NAME_1": LABEL_VALUE_1, LABEL_NAME_2": LABEL_VALUE_2 } }
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/trainingPipelines"
PowerShell
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/trainingPipelines" | Select-Object -Expand Content
La risposta contiene informazioni sulle specifiche e sul TRAININGPIPELINE_ID.
Monitorare la formazione
Per visualizzare i log di addestramento:
Nella console Google Cloud, nella sezione Vertex AI, vai alla pagina Addestramento.
Fai clic sul nome del job per accedere alla pagina del job personalizzato.
Fai clic su Visualizza log.
Puoi anche utilizzare una shell interattiva per ispezionare i contenitori di addestramento durante l'esecuzione della pipeline di addestramento.
Visualizzare il modello addestrato
Al termine della pipeline di addestramento personalizzato, puoi trovare il modello addestrato nella console Google Cloud, nella sezione Vertex AI, nella pagina Modelli.
Passaggi successivi
- Scopri come individuare i colli di bottiglia delle prestazioni dell'addestramento per addestrare i modelli più rapidamente e in modo più economico utilizzando Cloud Profiler.
- Esegui il deployment del modello in un endpoint.
- Crea un job di ottimizzazione iperparametri.
- Scopri come pianificare job di addestramento personalizzati in base alla disponibilità delle risorse.