Le pipeline di addestramento consentono di eseguire l'addestramento di machine learning (ML) personalizzato e 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 contenitore personalizzato per definire il codice di addestramento e le dipendenze che vuoi eseguire su Vertex AI. Se crei un'applicazione di addestramento Python con 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 del codice di addestramento per saperne di più.
Opzioni pipeline di addestramento
Una pipeline di addestramento include job di addestramento con passaggi aggiuntivi. Questa guida spiega 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 in Vertex AI
Inoltre, puoi utilizzare i set di dati Vertex AI (set di dati gestiti) nella pipeline di addestramento. Scopri di più sulla configurazione della pipeline di addestramento per l'utilizzo di un set di dati gestito.
Cosa include un CustomJob
Quando crei un job personalizzato, devi specificare le impostazioni necessarie per consentire a Vertex AI di eseguire il tuo codice di addestramento, tra cui:
- Un pool di worker per l'addestramento su un singolo nodo (
WorkerPoolSpec
) o più pool di worker per l'addestramento distribuito - Impostazioni facoltative per la configurazione della pianificazione dei job (
Scheduling
), impostazione di alcune variabili di ambiente per il codice di addestramento, utilizzo di un account di servizio personalizzato e utilizzo del peering di rete VPC
All'interno dei pool di worker, puoi specificare le seguenti impostazioni:
- Tipi di macchine e acceleratori
- Configurazione del tipo di codice di addestramento che viene eseguito dal pool di worker: un'applicazione di addestramento Python (
PythonPackageSpec
) o un container personalizzato (ContainerSpec
)
Se vuoi creare un job personalizzato autonomo all'esterno di una pipeline di addestramento su Vertex AI, consulta la guida ai job personalizzati.
Configurare la pipeline per l'utilizzo di un set di dati gestito
Nella pipeline di addestramento puoi configurare il job di addestramento personalizzato o il job di ottimizzazione degli iperparametri per utilizzare un set di dati gestito. I set di dati gestiti consentono di gestire i set di dati con le applicazioni e i modelli di addestramento.
Per utilizzare un set di dati gestito nella pipeline di addestramento:
- Crea il tuo set di dati.
- Aggiorna l'applicazione di addestramento per utilizzare un set di dati gestito. Per ulteriori informazioni, scopri come Vertex AI passa il tuo 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 area geografica in cui hai creato il set di dati.
Per scoprire di più, consulta il riferimento API all'indirizzo TrainingPipeline
.
Configura addestramento distribuito
All'interno della pipeline di addestramento, puoi configurare il tuo job di addestramento personalizzato o il tuo job di ottimizzazione degli iperparametri per l'addestramento distribuito specificando più pool di worker.
Tutti gli esempi in questa pagina mostrano i job di addestramento con replica singola con un pool di worker. Per modificarle per l'addestramento distribuito:
- Utilizza il tuo primo pool di worker per configurare la replica principale e imposta il conteggio delle repliche su 1.
- Aggiungi altri pool di worker per configurare le repliche dei worker, le repliche del server dei parametri o le repliche del valutatore, se il tuo framework di machine learning supporta queste attività cluster aggiuntive per l'addestramento distribuito.
Scopri di più sull'utilizzo della formazione distribuita.
Caricamento modello job personalizzato
Questa pipeline di addestramento include un job personalizzato con un ulteriore passaggio di comodità, che semplifica il deployment del modello su Vertex AI dopo l'addestramento. Questa pipeline di addestramento svolge due attività 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 artefatti per creare una risorsa model, che ti configurerà per il deployment del modello.
La dimensione totale del file degli artefatti del modello deve essere al massimo di 10 GB.
Esistono due modi diversi per impostare la località degli artefatti del modello:
- Se imposti un elemento
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. Una volta completato il job di addestramento, Vertex AI cerca gli artefatti del modello risultanti ings://BASE_OUTPUT_DIRECTORY/model
. - Se imposti il campo
modelToUpload.artifactUri
, la pipeline di addestramento carica gli artefatti del modello da tale URI. Devi impostare questo campo se non hai impostatobaseOutputDirectory
.
Se specifichi sia baseOutputDirectory
che modelToUpload.artifactUri
,
Vertex AI utilizza modelToUpload.artifactUri
.
Per creare questo tipo di pipeline di addestramento:
console
Nella sezione Vertex AI di Google Cloud Console, vai alla pagina Pipeline di addestramento.
Fai clic su
Crea per aprire il riquadro Addestra nuovo modello.Nel passaggio Addestramento, specifica le seguenti impostazioni:
Se vuoi utilizzare un set di dati gestito per l'addestramento, specifica un set di dati e un set di annotazione.
In caso contrario, nell'elenco a discesa Set di dati, seleziona Nessun set di dati gestito.
Seleziona Formazione personalizzata (avanzata).
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 tuo modello. Fai clic su Continua.
Nel passaggio Container di addestramento, specifica le seguenti impostazioni:
Seleziona se utilizzare un contenitore predefinito o un contenitore personalizzato per l'addestramento.
A seconda dell'opzione scelta, procedi in uno dei seguenti modi:
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 di modelli per specificare il contenitore predefinito che vuoi utilizzare.
Nel campo Posizione pacchetto, specifica l'URI Cloud Storage dell'applicazione di addestramento Python che hai creato e caricato. Generalmente il file termina con
.tar.gz
.Nel campo Modulo Python, inserisci il nome del modulo del punto di contatto della tua applicazione di addestramento.
Se vuoi utilizzare un container personalizzato per l'addestramento, nel campo Immagine container specifica l'URI Artifact Registry, Container Registry o Docker Hub della tua 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 trasmesso a Vertex AI nel campo API
baseOutputDirectory
, che imposta diverse variabili di ambiente a cui può accedere l'applicazione di addestramento.Al termine dell'addestramento, Vertex AI cerca gli artefatti del modello in una sottodirectory di questo URI per creare un
Model
. Questa sottodirectory è disponibile per il tuo codice di addestramento come variabile di ambienteAIP_MODEL_DIR
.Se non utilizzi l'ottimizzazione degli iperparametri, Vertex AI prevede di trovare artefatti del modello in
BASE_OUTPUT_DIRECTORY/model/
.Nel campo Argomenti, puoi specificare facoltativamente argomenti che possono essere utilizzati da Vertex AI all'avvio del codice di addestramento. Il comportamento di questi argomenti varia a seconda del tipo di contenitore in uso:
Se utilizzi un container predefinito, Vertex AI trasmette gli argomenti come flag della riga di comando al tuo modulo Python.
Se utilizzi un container personalizzato, Vertex AI sostituisce l'istruzione
CMD
del container con gli argomenti.
Fai clic su Continua.
Nel passaggio Ottimizzazione iperparametri, assicurati che la casella di controllo Abilita ottimizzazione iperparametri non sia selezionata. Fai clic su Continua.
Nel passaggio Computing e prezzi, specifica le seguenti impostazioni:
Nell'elenco a discesa Regione, seleziona un'area geograficache 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 nell'area geografica selezionata.
Se vuoi eseguire addestramento distribuito, fai clic suAggiungi altri pool di worker e specifica un ulteriore set di risorse di computing per ogni pool di worker aggiuntivo che vuoi.
Fai clic su Continua.
Nel passaggio Contenitore delle previsioni, specifica le seguenti impostazioni:
Seleziona se utilizzi un contenitore predefinito o un contenitore personalizzato per pubblicare previsioni dal modello addestrato.
A seconda dell'opzione scelta, procedi in uno dei seguenti modi:
Se vuoi utilizzare un container predefinito per pubblicare le previsioni, scegli i campi Framework modello, Versione framework modello e Tipo di acceleratore per scegliere il contenitore di previsione predefinito da utilizzare per la previsione.
Abbina Framework modello e Versione framework di modelli al framework machine learning utilizzato per l'addestramento. Specifica un acceleratore solo se in un secondo momento vuoi utilizzare le GPU per previsioni online o batch.
Se vuoi utilizzare un contenitore personalizzato per pubblicare previsioni, procedi nel seguente modo:
Nel campo Immagine container, specifica l'URI Artifact Registry o URI Container Registry dell'immagine container.
Se vuoi, puoi specificare un comando per sostituire l'istruzione
ENTRYPOINT
del container.
Il campo Directory modelli contiene il valore precedentemente impostato nel campo Directory di output del modello del passaggio Contenitore addestramento. La modifica di uno di questi campi ha lo stesso effetto. Per ulteriori informazioni su questo campo, consulta le istruzioni precedenti.
Lascia vuoti i campi nella sezione Schema di previsione.
Fai clic su Avvia addestramento per avviare la pipeline di addestramento personalizzato.
REST &CMD LINE
Utilizza il seguente esempio di codice per creare una pipeline di addestramento con il
metodo create
della risorsa trainingPipeline
.
Prima di utilizzare uno qualsiasi dei dati della richiesta, effettua le seguenti sostituzioni:
- LOCATION_ID: l'area geografica in cui viene eseguito il codice di addestramento e in cui è archiviato
Model
. - PROJECT_ID: il tuo ID progetto.
- TRAINING_PIPELINE_NAME: campo obbligatorio. Un nome visualizzato per la pipelinePipe training.
- Se la tua 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 la modalità di suddivisione degli elementi di dati in set di addestramento,
convalida e test.
- Per suddividere il set di dati in base a frazioni che definiscono le dimensioni di ogni set, 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 dati da utilizzare per l'addestramento del modello.
- VALIDATION_FILTER: filtra il set di dati in base agli elementi dati da utilizzare per la convalida del 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 "addestramento", "convalida" e "test".
-
Per suddividere il set di dati in base al timestamp sugli elementi di 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 timestamp da utilizzare per suddividere il set di dati.
- Per suddividere il set di dati in base a frazioni che definiscono le dimensioni di ogni set, specifica
quanto segue:
- OUTPUT_URI_PREFIX: la località di Cloud Storage in cui Vertex AI esporta il set di dati di addestramento, una volta suddiviso in set di addestramento, convalida e test.
- Definisci il job di addestramento personalizzato:
- MACHINE_TYPE: il tipo di macchina. Fai riferimento ai tipi di macchine disponibili per l'addestramento.
- (Facoltativo) ACCELERATOR_TYPE: Il tipo di acceleratore da collegare a ciascuna prova.
- (Facoltativo) ACCELERATOR_COUNT: Il numero di acceleratori da collegare a ciascuna prova.
- REPLICA_COUNT: il numero di repliche di worker da utilizzare per ogni prova.
- Se la tua applicazione di addestramento viene eseguita in un container personalizzato, specifica quanto segue:
- CUSTOM_CONTAINER_IMAGE_URI: URI di un'immagine container in Artifact Registry, Container Registry o Docker Hub da eseguire su ogni replica worker.
- (Facoltativo) CUSTOM_CONTAINER_COMMAND: Il comando da richiamare all'avvio del container. Questo comando sostituisce il punto di accesso predefinito del container.
- (Facoltativo) CUSTOM_CONTAINER_ARGS: Gli argomenti da trasmettere all'avvio del container.
- Se la tua applicazione di addestramento è un pacchetto Python eseguito in un container predefinito, specifica quanto segue:
- PYTHON_PACKAGE_EXECUTOR_IMAGE_URI: URI dell'immagine container che esegue il pacchetto Python fornito. Fai riferimento ai container predefiniti disponibili per l'addestramento.
- PYTHON_PACKAGE_URIS: la posizione Cloud Storage dei file del pacchetto Python che sono il programma di addestramento e i relativi pacchetti dipendenti. Il numero massimo di URI di pacchetto è 100.
- PYTHON_MODULE: il nome del modulo Python da eseguire dopo l'installazione dei pacchetti.
- (Facoltativo) PYTHON_PACKAGE_ARGS: Argomenti della riga di comando da trasmettere al modulo Python.
- (Facoltativo) TIMEOUT: Il tempo di esecuzione massimo per il job.
- MODEL_NAME: nome visualizzato per il modello caricato (creato) dalla TrainingPipeline.
- MODEL_DESCRIPTION: una descrizione del modello.
- IMAGE_URI: l'URI dell'immagine container da utilizzare per l'esecuzione delle 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 tutte le etichette che vuoi 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 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:
Curling
Salva il corpo della richiesta in un file denominato request.json
ed esegui il seguente comando:
curl -X POST \
-H "Authorization: Bearer "$(gcloud auth application-default 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
ed esegui il seguente comando:
$cred = gcloud auth application-default 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 sull'TRAININGPIPELINE_ID.
Java
Per informazioni su come installare e utilizzare la libreria client per Vertex AI, consulta le librerie client di Vertex AI. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Java di AI AI.
Python
Per informazioni su come installare e utilizzare la libreria client per Vertex AI, consulta le librerie client di Vertex AI. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Python AI Vertex.
I seguenti esempi mostrano come utilizzare l'SDK Vertex AI per Python per creare una pipeline di addestramento personalizzato. Scegli se utilizzare un contenitore personalizzato o un contenitore predefinito per l'addestramento:
Contenitore predefinito
Quando utilizzi l'SDK Vertex AI per Python per creare una pipeline di addestramento che esegue il tuo codice Python in un container predefinito, puoi fornire il tuo codice di addestramento in uno dei seguenti modi:
Specifica l'URI di un pacchetto di 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 pacchettizza lo script come distribuzione di origine e lo carica nel bucket Cloud Storage a tua scelta.
Questa opzione è disponibile solo quando utilizzi l'SDK Vertex AI per Python.
Per visualizzare un esempio di codice per ciascuna di queste opzioni, seleziona la scheda corrispondente:
Pacchetto
Il seguente esempio utilizza la classe CustomPythonPackageTrainingJob
.
Script
Il seguente esempio utilizza la classe CustomTrainingJob
.
Contenitore personalizzato
Il seguente esempio utilizza la classe CustomContainerTrainingJob
.
Caricamento del modello e del job di ottimizzazione degli iperparametri
Questa pipeline di addestramento include un job di ottimizzazione degli iperparametri con un ulteriore passaggio di comodità che semplifica il deployment del modello su Vertex AI dopo l'addestramento. Questa pipeline di addestramento fa due cose principali:
La pipeline di addestramento crea una risorsa di 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 rileva gli artefatti del modello dalla prova migliore, all'interno della directory di output (
baseOutputDirectory
) specificata per il bucket Cloud Storage. La pipeline di addestramento utilizza questi artefatti per creare una risorsa model, che ti consente di configurare il deployment del modello.
Per questa pipeline di addestramento, devi specificare un elemento baseOutputDirectory
in cui Vertex AI cerca gli artefatti del modello partendo dalla prova migliore.
I job di ottimizzazione degli iperparametri hanno impostazioni aggiuntive da configurare. Scopri di più
sulle impostazioni di una HyperparameterTuningJob
.
REST &CMD LINE
Utilizza il seguente esempio di codice per creare una pipeline di addestramento con il
metodo create
della risorsa trainingPipeline
.
Prima di utilizzare uno qualsiasi dei dati della richiesta, effettua le seguenti sostituzioni:
- LOCATION_ID: l'area geografica del tuo progetto.
- PROJECT_ID: il tuo ID progetto.
- TRAINING_PIPELINE_NAME: campo obbligatorio. Un nome visualizzato per la pipelinePipe training.
- Se la tua 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 la modalità di suddivisione degli elementi di dati in set di addestramento,
convalida e test.
- Per suddividere il set di dati in base a frazioni che definiscono le dimensioni di ogni set, 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 dati da utilizzare per l'addestramento del modello.
- VALIDATION_FILTER: filtra il set di dati in base agli elementi dati da utilizzare per la convalida del 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 "addestramento", "convalida" e "test".
-
Per suddividere il set di dati in base al timestamp sugli elementi di 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 timestamp da utilizzare per suddividere il set di dati.
- Per suddividere il set di dati in base a frazioni che definiscono le dimensioni di ogni set, specifica
quanto segue:
- OUTPUT_URI_PREFIX: la località di Cloud Storage in cui Vertex AI esporta il set di dati di addestramento, una volta suddiviso in set di addestramento, convalida e test.
- Specifica il tuo job di ottimizzazione degli iperparametri:
- Specifica le metriche:
- METRIC_ID: il nome di questa metrica.
- METRIC_GOAL: l'obiettivo di questa metrica. Può essere
MAXIMIZE
oMINIMIZE
.
- Specifica gli iperparametri:
- PARAMETER_ID: il nome di questo iperparametro.
- (Facoltativo) PARAMETER_SCALE: Indica come ridimensionare il parametro. Non impostare
i parametri CATEGORICI. Può essere
UNIT_LINEAR_SCALE
,UNIT_LOG_SCALE
,UNIT_REVERSE_LOG_SCALE
oSCALE_TYPE_UNSPECIFIED
- Se questo iperparametro è di tipo DOUBLE, specifica i valori minimo (DOUBLE_MIN_VALUE) e massimo (DOUBLE_MAX_VALUE).
- Se questo tipo di iperparametro è INTEGER, specifica i valori minimo (INTEGER_MIN_VALUE) e massimo (INTEGER_MAX_VALUE) per questo iperparametro.
- Se questo tipo di iperparametro è CATEGORICO, specifica i valori accettabili (CATEGORICAL_VALUES) come array di stringhe.
- Se questo tipo di iperparametro è DISCRETE, specifica i valori accettabili (DISCRETE_VALUES) come array di numeri.
- (Facoltativo) ALGORITHM: 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: numero di job che non possono riuscire prima dell'esecuzione del job di ottimizzazione degli iperparametri.
- Definisci il job di addestramento personalizzato di prova:
- MACHINE_TYPE: il tipo di macchina. Fai riferimento ai tipi di macchine disponibili per l'addestramento.
- (Facoltativo) ACCELERATOR_TYPE: Il tipo di acceleratore da collegare a ciascuna prova.
- (Facoltativo) ACCELERATOR_COUNT: Il numero di acceleratori da collegare a ciascuna prova.
- REPLICA_COUNT: il numero di repliche di worker da utilizzare per ogni prova.
- Se la tua applicazione di addestramento viene eseguita in un container personalizzato, specifica quanto segue:
- CUSTOM_CONTAINER_IMAGE_URI: URI di un'immagine container in Artifact Registry, Container Registry o Docker Hub da eseguire su ogni replica worker.
- (Facoltativo) CUSTOM_CONTAINER_COMMAND: Il comando da richiamare all'avvio del container. Questo comando sostituisce il punto di accesso predefinito del container.
- (Facoltativo) CUSTOM_CONTAINER_ARGS: Gli argomenti da trasmettere all'avvio del container.
- Se la tua applicazione di addestramento è un pacchetto Python eseguito in un container predefinito, specifica quanto segue:
- PYTHON_PACKAGE_EXECUTOR_IMAGE_URI: URI dell'immagine container che esegue il pacchetto Python fornito. Fai riferimento ai container predefiniti disponibili per l'addestramento.
- PYTHON_PACKAGE_URIS: la posizione Cloud Storage dei file del pacchetto Python che sono il programma di addestramento e i relativi pacchetti dipendenti. Il numero massimo di URI di pacchetto è 100.
- PYTHON_MODULE: il nome del modulo Python da eseguire dopo l'installazione dei pacchetti.
- (Facoltativo) PYTHON_PACKAGE_ARGS: Argomenti della riga di comando da trasmettere al modulo Python.
- Informazioni sulle opzioni di pianificazione del lavoro.
- (Facoltativo) TIMEOUT: La durata massima di ciascuna prova.
- Specifica LABEL_NAME e LABEL_VALUE per tutte le etichette che vuoi applicare a questo job di ottimizzazione degli iperparametri.
- Specifica le metriche:
- MODEL_NAME: nome visualizzato per il modello caricato (creato) dalla TrainingPipeline.
- MODEL_DESCRIPTION: facoltativo. Una descrizione del modello.
- PREDICTION_IMAGE_URI: campo obbligatorio. Specifica una delle due opzioni seguenti:
- L'URI dell'immagine del container predefinito da utilizzare per la previsione, ad esempio "tf2-cpu.2-1:latest".
- L'URI dell'immagine del tuo contenitore 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 tutte le etichette che vuoi 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 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:
Curling
Salva il corpo della richiesta in un file denominato request.json
ed esegui il seguente comando:
curl -X POST \
-H "Authorization: Bearer "$(gcloud auth application-default 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
ed esegui il seguente comando:
$cred = gcloud auth application-default 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 sull'TRAININGPIPELINE_ID.
Monitora addestramento
Per visualizzare i log di addestramento:
Nella sezione Vertex AI, in Google Cloud Console, vai alla pagina Formazione.
Fai clic sul nome del job per passare alla pagina di Job personalizzato.
Fai clic su Visualizza i log.
Puoi anche utilizzare una shell interattiva per ispezionare i container di addestramento mentre la pipeline di addestramento è in esecuzione.
Visualizza il tuo modello addestrato
Al termine del completamento della pipeline di addestramento personalizzato, puoi trovare il modello addestrato in Google Cloud Console, nella sezione Vertex AI, alla pagina Modelli.