Addestra un modello AutoML Edge utilizzando l'API Vertex AI

Puoi creare un modello AutoML direttamente nella console Google Cloud oppure creando una pipeline di addestramento in modo programmatico, utilizzando l'API o una delle librerie client di Vertex AI.

Questo modello viene creato utilizzando un set di dati preparato fornito da te utilizzando la console o l'API. L'API Vertex AI utilizza gli elementi del set di dati per addestrare il modello, testarlo e valutarne le prestazioni. Esamina i risultati delle valutazioni, modifica il set di dati di addestramento come necessario e crea una nuova pipeline di addestramento utilizzando il set di dati migliorato.

Il completamento dell'addestramento del modello può richiedere diverse ore. L'API Vertex AI consente di ottenere lo stato dell'addestramento.

Crea una pipeline di addestramento AutoML Edge

Quando hai un set di dati con un insieme rappresentativo di elementi di addestramento, puoi creare una pipeline di addestramento AutoML Edge.

Seleziona un tipo di dati.

Immagine

Seleziona la scheda seguente per il tuo scopo:

Classificazione

Al momento dell'addestramento, puoi scegliere il tipo di modello AutoML Edge che preferisci, a seconda del tuo caso d'uso specifico:

  • bassa latenza (MOBILE_TF_LOW_LATENCY_1)
  • uso generico (MOBILE_TF_VERSATILE_1)
  • qualità di previsione superiore (MOBILE_TF_HIGH_ACCURACY_1)

Seleziona la scheda seguente per la tua lingua o il tuo ambiente:

REST

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • LOCATION: regione in cui si trova il set di dati e in cui viene creato il modello. Ad esempio, us-central1.
  • PROJECT: l'ID del tuo progetto.
  • TRAININGPIPELINE_DISPLAYNAME: campo obbligatorio. Un nome visualizzato per trainingPipeline.
  • DATASET_ID: il numero ID del set di dati da utilizzare per l'addestramento.
  • fractionSplit: facoltativo. Una delle tante opzioni ML possibili utilizza le opzioni di suddivisione per i dati. Per fractionSplit la somma dei valori deve essere 1. Ad esempio:
    • {"trainingFraction": "0.7","validationFraction": "0.15","testFraction": "0.15"}
  • MODEL_DISPLAYNAME*: un nome visualizzato per il modello caricato (creato) da TrainingPipeline.
  • MODEL_DESCRIPTION*: una descrizione del modello.
  • modelToUpload.labels*: qualsiasi insieme di coppie chiave-valore per organizzare i tuoi modelli. Ad esempio:
    • "env": "prod"
    • "tier": "backend"
  • EDGE_MODELTYPE: il tipo di modello Edge da addestrare. Le opzioni sono:
    • MOBILE_TF_LOW_LATENCY_1
    • MOBILE_TF_VERSATILE_1
    • MOBILE_TF_HIGH_ACCURACY_1
  • NODE_HOUR_BUDGET: il costo effettivo dell'addestramento sarà uguale o inferiore a questo valore. Per i modelli Edge, il budget deve essere compreso tra 1000 e 100.000 milliore nodo (inclusi).
  • PROJECT_NUMBER: numero del progetto

Metodo HTTP e URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines

Corpo JSON richiesta:

{
  "displayName": "TRAININGPIPELINE_DISPLAYNAME",
  "inputDataConfig": {
    "datasetId": "DATASET_ID",
    "fractionSplit": {
      "trainingFraction": "DECIMAL",
      "validationFraction": "DECIMAL",
      "testFraction": "DECIMAL"
    }
  },
  "modelToUpload": {
    "displayName": "MODEL_DISPLAYNAME",
    "description": "MODEL_DESCRIPTION",
    "labels": {
      "KEY": "VALUE"
    }
  },
  "trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/automl_image_classification_1.0.0.yaml",
  "trainingTaskInputs": {
    "multiLabel": "false",
    "modelType": ["EDGE_MODELTYPE"],
    "budgetMilliNodeHours": NODE_HOUR_BUDGET
  }
}

Per inviare la richiesta, scegli una delle seguenti opzioni:

arricciare

Salva il corpo della richiesta in un file denominato request.json ed esegui questo comando:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines"

PowerShell

Salva il corpo della richiesta in un file denominato request.json ed esegui questo comando:

$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-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines" | Select-Object -Expand Content

La risposta contiene informazioni sulle specifiche e su TRAININGPIPELINE_ID.

Puoi ottenere lo stato del job trainingPipeline utilizzando TRAININGPIPELINE_ID.

Classificazione

Al momento dell'addestramento, puoi scegliere il tipo di modello AutoML Edge che preferisci, a seconda del tuo caso d'uso specifico:

  • bassa latenza (MOBILE_TF_LOW_LATENCY_1)
  • uso generico (MOBILE_TF_VERSATILE_1)
  • qualità di previsione superiore (MOBILE_TF_HIGH_ACCURACY_1)

Seleziona la scheda seguente per la tua lingua o il tuo ambiente:

REST

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • LOCATION: regione in cui si trova il set di dati e in cui viene creato il modello. Ad esempio, us-central1.
  • PROJECT: l'ID del tuo progetto.
  • TRAININGPIPELINE_DISPLAYNAME: campo obbligatorio. Un nome visualizzato per trainingPipeline.
  • DATASET_ID: il numero ID del set di dati da utilizzare per l'addestramento.
  • fractionSplit: facoltativo. Una delle tante opzioni ML possibili utilizza le opzioni di suddivisione per i dati. Per fractionSplit la somma dei valori deve essere 1. Ad esempio:
    • {"trainingFraction": "0.7","validationFraction": "0.15","testFraction": "0.15"}
  • MODEL_DISPLAYNAME*: un nome visualizzato per il modello caricato (creato) da TrainingPipeline.
  • MODEL_DESCRIPTION*: una descrizione del modello.
  • modelToUpload.labels*: qualsiasi insieme di coppie chiave-valore per organizzare i tuoi modelli. Ad esempio:
    • "env": "prod"
    • "tier": "backend"
  • EDGE_MODELTYPE: il tipo di modello Edge da addestrare. Le opzioni sono:
    • MOBILE_TF_LOW_LATENCY_1
    • MOBILE_TF_VERSATILE_1
    • MOBILE_TF_HIGH_ACCURACY_1
  • NODE_HOUR_BUDGET: il costo effettivo dell'addestramento sarà uguale o inferiore a questo valore. Per i modelli Edge, il budget deve essere compreso tra 1000 e 100.000 milliore nodo (inclusi).
  • PROJECT_NUMBER: numero del progetto

Metodo HTTP e URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines

Corpo JSON richiesta:

{
  "displayName": "TRAININGPIPELINE_DISPLAYNAME",
  "inputDataConfig": {
    "datasetId": "DATASET_ID",
    "fractionSplit": {
      "trainingFraction": "DECIMAL",
      "validationFraction": "DECIMAL",
      "testFraction": "DECIMAL"
    }
  },
  "modelToUpload": {
    "displayName": "MODEL_DISPLAYNAME",
    "description": "MODEL_DESCRIPTION",
    "labels": {
      "KEY": "VALUE"
    }
  },
  "trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/automl_image_classification_1.0.0.yaml",
  "trainingTaskInputs": {
    "multiLabel": "true",
    "modelType": ["EDGE_MODELTYPE"],
    "budgetMilliNodeHours": NODE_HOUR_BUDGET
  }
}

Per inviare la richiesta, scegli una delle seguenti opzioni:

arricciare

Salva il corpo della richiesta in un file denominato request.json ed esegui questo comando:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines"

PowerShell

Salva il corpo della richiesta in un file denominato request.json ed esegui questo comando:

$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-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines" | Select-Object -Expand Content

La risposta contiene informazioni sulle specifiche e su TRAININGPIPELINE_ID.

Puoi ottenere lo stato del job trainingPipeline utilizzando TRAININGPIPELINE_ID.

Rilevamento di oggetti

Al momento dell'addestramento, puoi scegliere il tipo di modello AutoML Edge che preferisci, a seconda del tuo caso d'uso specifico:

  • bassa latenza (MOBILE_TF_LOW_LATENCY_1)
  • uso generico (MOBILE_TF_VERSATILE_1)
  • qualità di previsione superiore (MOBILE_TF_HIGH_ACCURACY_1)

Seleziona la scheda seguente per la tua lingua o il tuo ambiente:

REST

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • LOCATION: regione in cui si trova il set di dati e in cui viene creato il modello. Ad esempio, us-central1.
  • PROJECT: l'ID del tuo progetto.
  • TRAININGPIPELINE_DISPLAYNAME: campo obbligatorio. Un nome visualizzato per trainingPipeline.
  • DATASET_ID: il numero ID del set di dati da utilizzare per l'addestramento.
  • fractionSplit: facoltativo. Una delle tante opzioni ML possibili utilizza le opzioni di suddivisione per i dati. Per fractionSplit la somma dei valori deve essere 1. Ad esempio:
    • {"trainingFraction": "0.7","validationFraction": "0.15","testFraction": "0.15"}
  • MODEL_DISPLAYNAME*: un nome visualizzato per il modello caricato (creato) da TrainingPipeline.
  • MODEL_DESCRIPTION*: una descrizione del modello.
  • modelToUpload.labels*: qualsiasi insieme di coppie chiave-valore per organizzare i tuoi modelli. Ad esempio:
    • "env": "prod"
    • "tier": "backend"
  • EDGE_MODELTYPE: il tipo di modello Edge da addestrare. Le opzioni sono:
    • MOBILE_TF_LOW_LATENCY_1
    • MOBILE_TF_VERSATILE_1
    • MOBILE_TF_HIGH_ACCURACY_1
  • NODE_HOUR_BUDGET: il costo effettivo dell'addestramento sarà uguale o inferiore a questo valore. Per i modelli Cloud, il budget deve essere compreso tra 20.000 e 900.000 milliore nodo (inclusi). Il valore predefinito è 216.000,che rappresenta un giorno nel tempo totale di esecuzione, supponendo che vengano utilizzati 9 nodi.
  • PROJECT_NUMBER: numero del progetto

Metodo HTTP e URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines

Corpo JSON richiesta:

{
  "displayName": "TRAININGPIPELINE_DISPLAYNAME",
  "inputDataConfig": {
    "datasetId": "DATASET_ID",
    "fractionSplit": {
      "trainingFraction": "DECIMAL",
      "validationFraction": "DECIMAL",
      "testFraction": "DECIMAL"
    }
  },
  "modelToUpload": {
    "displayName": "MODEL_DISPLAYNAME",
    "description": "MODEL_DESCRIPTION",
    "labels": {
      "KEY": "VALUE"
    }
  },
  "trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/automl_image_object_detection_1.0.0.yaml",
  "trainingTaskInputs": {
    "modelType": ["EDGE_MODELTYPE"],
    "budgetMilliNodeHours": NODE_HOUR_BUDGET
  }
}

Per inviare la richiesta, scegli una delle seguenti opzioni:

arricciare

Salva il corpo della richiesta in un file denominato request.json ed esegui questo comando:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines"

PowerShell

Salva il corpo della richiesta in un file denominato request.json ed esegui questo comando:

$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-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines" | Select-Object -Expand Content

La risposta contiene informazioni sulle specifiche e su TRAININGPIPELINE_ID.

Puoi ottenere lo stato del job trainingPipeline utilizzando TRAININGPIPELINE_ID.

Video

Seleziona la scheda seguente per il tuo scopo:

Riconoscimento delle azioni

Durante l'addestramento, scegli il seguente tipo di perimetro AutoML:

  • MOBILE_VERSATILE_1: utilizzo generico

REST

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • PROJECT: l'ID del tuo progetto.
  • LOCATION: regione in cui si trova il set di dati e in cui viene creato il modello. Ad esempio, us-central1.
  • TRAINING_PIPELINE_DISPLAY_NAME: campo obbligatorio. Un nome visualizzato per TrainingPipeline.
  • DATASET_ID: ID per il set di dati di addestramento.
  • TRAINING_FRACTION, TEST_FRACTION: l'oggetto fractionSplit è facoltativo; puoi utilizzarlo per controllare la suddivisione dei dati. Per saperne di più sul controllo della suddivisione dati, consulta Informazioni sulle suddivisioni di dati per i modelli AutoML. Ad esempio:
    • {"trainingFraction": "0.8","validationFraction": "0","testFraction": "0.2"}
  • MODEL_DISPLAY_NAME: nome visualizzato del modello addestrato.
  • MODEL_DESCRIPTION: una descrizione del modello.
  • MODEL_LABELS: qualsiasi insieme di coppie chiave-valore per organizzare i tuoi modelli. Ad esempio:
    • "env": "prod"
    • "tier": "backend"
  • EDGE_MODEL_TYPE:
    • MOBILE_VERSATILE_1: utilizzo generico
  • PROJECT_NUMBER: numero del progetto

Metodo HTTP e URL:

POST https://LOCATION-aiplatform.googleapis.com/beta1/projects/PROJECT/locations/LOCATION/trainingPipelines

Corpo JSON richiesta:

{
  "displayName": "TRAINING_PIPELINE_DISPLAY_NAME",
  "inputDataConfig": {
    "datasetId": "DATASET_ID",
    "fractionSplit": {
      "trainingFraction": "TRAINING_FRACTION",
      "validationFraction": "0",
      "testFraction": "TEST_FRACTION"
    }
  },
  "modelToUpload": {
    "displayName": "MODEL_DISPLAY_NAME",
    "description": "MODEL_DESCRIPTION",
    "labels": {
      "KEY": "VALUE"
    }
  },
  "trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/automl_video_action_recognition_1.0.0.yaml",
  "trainingTaskInputs": {
    "modelType": ["EDGE_MODEL_TYPE"],
  }
}

Per inviare la richiesta, scegli una delle seguenti opzioni:

arricciare

Salva il corpo della richiesta in un file denominato request.json ed esegui questo comando:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/beta1/projects/PROJECT/locations/LOCATION/trainingPipelines"

PowerShell

Salva il corpo della richiesta in un file denominato request.json ed esegui questo comando:

$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-aiplatform.googleapis.com/beta1/projects/PROJECT/locations/LOCATION/trainingPipelines" | Select-Object -Expand Content

La risposta contiene informazioni sulle specifiche e su TRAININGPIPELINE_ID.

Puoi ottenere lo stato dell'avanzamento di TrainingPipeline per controllare quando termina.

Classificazione

Durante l'addestramento, scegli il seguente tipo di perimetro AutoML:

  • MOBILE_VERSATILE_1: utilizzo generico

REST

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • PROJECT: l'ID del tuo progetto.
  • LOCATION: regione in cui si trova il set di dati e in cui viene creato il modello. Ad esempio, us-central1.
  • TRAINING_PIPELINE_DISPLAY_NAME: campo obbligatorio. Un nome visualizzato per TrainingPipeline.
  • DATASET_ID: ID per il set di dati di addestramento.
  • TRAINING_FRACTION, TEST_FRACTION: l'oggetto fractionSplit è facoltativo; puoi utilizzarlo per controllare la suddivisione dei dati. Per saperne di più sul controllo della suddivisione dati, consulta Informazioni sulle suddivisioni di dati per i modelli AutoML. Ad esempio:
    • {"trainingFraction": "0.8","validationFraction": "0","testFraction": "0.2"}
  • MODEL_DISPLAY_NAME: nome visualizzato del modello addestrato.
  • MODEL_DESCRIPTION: una descrizione del modello.
  • MODEL_LABELS: qualsiasi insieme di coppie chiave-valore per organizzare i tuoi modelli. Ad esempio:
    • "env": "prod"
    • "tier": "backend"
  • EDGE_MODEL_TYPE:
    • MOBILE_VERSATILE_1: utilizzo generico
  • PROJECT_NUMBER: numero del progetto

Metodo HTTP e URL:

POST https://LOCATION-aiplatform.googleapis.com/beta1/projects/PROJECT/locations/LOCATION/trainingPipelines

Corpo JSON richiesta:

{
  "displayName": "TRAINING_PIPELINE_DISPLAY_NAME",
  "inputDataConfig": {
    "datasetId": "DATASET_ID",
    "fractionSplit": {
      "trainingFraction": "TRAINING_FRACTION",
      "validationFraction": "0",
      "testFraction": "TEST_FRACTION"
    }
  },
  "modelToUpload": {
    "displayName": "MODEL_DISPLAY_NAME",
    "description": "MODEL_DESCRIPTION",
    "labels": {
      "KEY": "VALUE"
    }
  },
  "trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/automl_video_classification_1.0.0.yaml",
  "trainingTaskInputs": {
    "modelType": ["EDGE_MODEL_TYPE"],
  }
}

Per inviare la richiesta, scegli una delle seguenti opzioni:

arricciare

Salva il corpo della richiesta in un file denominato request.json ed esegui questo comando:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/beta1/projects/PROJECT/locations/LOCATION/trainingPipelines"

PowerShell

Salva il corpo della richiesta in un file denominato request.json ed esegui questo comando:

$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-aiplatform.googleapis.com/beta1/projects/PROJECT/locations/LOCATION/trainingPipelines" | Select-Object -Expand Content

La risposta contiene informazioni sulle specifiche e su TRAININGPIPELINE_ID.

Puoi ottenere lo stato dell'avanzamento di TrainingPipeline per controllare quando termina.

Monitoraggio oggetti

In fase di addestramento, scegli il tipo di perimetro AutoML:

  • MOBILE_VERSATILE_1: utilizzo generico
  • MOBILE_CORAL_VERSATILE_1: qualità delle previsioni migliore per Google Coral
  • MOBILE_CORAL_LOW_LATENCY_1: latenza inferiore per Google Coral
  • MOBILE_JETSON_VERSATILE_1: qualità delle previsioni migliore per NVIDIA Jetson
  • MOBILE_JETSON_LOW_LATENCY_1: latenza inferiore per NVIDIA Jetson

REST

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • PROJECT: l'ID del tuo progetto.
  • LOCATION: regione in cui si trova il set di dati e in cui viene creato il modello. Ad esempio, us-central1.
  • TRAINING_PIPELINE_DISPLAY_NAME: campo obbligatorio. Un nome visualizzato per TrainingPipeline.
  • DATASET_ID: ID per il set di dati di addestramento.
  • TRAINING_FRACTION, TEST_FRACTION: l'oggetto fractionSplit è facoltativo; puoi utilizzarlo per controllare la suddivisione dei dati. Per saperne di più sul controllo della suddivisione dati, consulta Informazioni sulle suddivisioni di dati per i modelli AutoML. Ad esempio:
    • {"trainingFraction": "0.8","validationFraction": "0","testFraction": "0.2"}
  • MODEL_DISPLAY_NAME: nome visualizzato del modello addestrato.
  • MODEL_DESCRIPTION: una descrizione del modello.
  • MODEL_LABELS: qualsiasi insieme di coppie chiave-valore per organizzare i tuoi modelli. Ad esempio:
    • "env": "prod"
    • "tier": "backend"
  • EDGE_MODEL_TYPE: uno dei seguenti valori:
    • MOBILE_VERSATILE_1: utilizzo generico
    • MOBILE_CORAL_VERSATILE_1: qualità delle previsioni migliore per Google Coral
    • MOBILE_CORAL_LOW_LATENCY_1: latenza inferiore per Google Coral
    • MOBILE_JETSON_VERSATILE_1: qualità delle previsioni migliore per NVIDIA Jetson
    • MOBILE_JETSON_LOW_LATENCY_1: latenza inferiore per NVIDIA Jetson
  • PROJECT_NUMBER: numero del progetto

Metodo HTTP e URL:

POST https://LOCATION-aiplatform.googleapis.com/beta1/projects/PROJECT/locations/LOCATION/trainingPipelines

Corpo JSON richiesta:

{
  "displayName": "TRAINING_PIPELINE_DISPLAY_NAME",
  "inputDataConfig": {
    "datasetId": "DATASET_ID",
    "fractionSplit": {
      "trainingFraction": "TRAINING_FRACTION",
      "validationFraction": "0",
      "testFraction": "TEST_FRACTION"
    }
  },
  "modelToUpload": {
    "displayName": "MODEL_DISPLAY_NAME",
    "description": "MODEL_DESCRIPTION",
    "labels": {
      "KEY": "VALUE"
    }
  },
  "trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/automl_video_object_tracking_1.0.0.yaml",
  "trainingTaskInputs": {
    "modelType": ["EDGE_MODEL_TYPE"],
  }
}

Per inviare la richiesta, scegli una delle seguenti opzioni:

arricciare

Salva il corpo della richiesta in un file denominato request.json ed esegui questo comando:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/beta1/projects/PROJECT/locations/LOCATION/trainingPipelines"

PowerShell

Salva il corpo della richiesta in un file denominato request.json ed esegui questo comando:

$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-aiplatform.googleapis.com/beta1/projects/PROJECT/locations/LOCATION/trainingPipelines" | Select-Object -Expand Content

La risposta contiene informazioni sulle specifiche e su TRAININGPIPELINE_ID.

Puoi ottenere lo stato dell'avanzamento di TrainingPipeline per controllare quando termina.

Recuperare lo stato di trainingPipeline

Utilizza il codice seguente per visualizzare in modo programmatico lo stato della creazione di trainingPipeline.

REST

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • LOCATION: regione in cui si trova TrainingPipeline.
  • PROJECT: l'ID del tuo progetto.
  • TRAININGPIPELINE_ID: l'ID della TrainingPipeline specifico.
  • PROJECT_NUMBER: numero del progetto

Metodo HTTP e URL:

GET https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines/TRAININGPIPELINE_ID

Per inviare la richiesta, scegli una delle seguenti opzioni:

arricciare

Esegui questo comando:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines/TRAININGPIPELINE_ID"

PowerShell

Esegui questo comando:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines/TRAININGPIPELINE_ID" | Select-Object -Expand Content

Il campo "state" mostra lo stato attuale dell'operazione. Una sessione completata di trainingPipeline mostra

Dovresti vedere un output simile al seguente per un'operazione di creazione di trainingPipeline completata:

Java

Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida di Vertex AI sull'utilizzo delle librerie client. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Java di Vertex AI.

Per eseguire l'autenticazione in Vertex AI, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.


import com.google.cloud.aiplatform.v1.DeployedModelRef;
import com.google.cloud.aiplatform.v1.EnvVar;
import com.google.cloud.aiplatform.v1.FilterSplit;
import com.google.cloud.aiplatform.v1.FractionSplit;
import com.google.cloud.aiplatform.v1.InputDataConfig;
import com.google.cloud.aiplatform.v1.Model;
import com.google.cloud.aiplatform.v1.ModelContainerSpec;
import com.google.cloud.aiplatform.v1.PipelineServiceClient;
import com.google.cloud.aiplatform.v1.PipelineServiceSettings;
import com.google.cloud.aiplatform.v1.Port;
import com.google.cloud.aiplatform.v1.PredefinedSplit;
import com.google.cloud.aiplatform.v1.PredictSchemata;
import com.google.cloud.aiplatform.v1.TimestampSplit;
import com.google.cloud.aiplatform.v1.TrainingPipeline;
import com.google.cloud.aiplatform.v1.TrainingPipelineName;
import com.google.rpc.Status;
import java.io.IOException;

public class GetTrainingPipelineSample {
  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String project = "YOUR_PROJECT_ID";
    String trainingPipelineId = "YOUR_TRAINING_PIPELINE_ID";
    getTrainingPipeline(project, trainingPipelineId);
  }

  static void getTrainingPipeline(String project, String trainingPipelineId) throws IOException {
    PipelineServiceSettings pipelineServiceSettings =
        PipelineServiceSettings.newBuilder()
            .setEndpoint("us-central1-aiplatform.googleapis.com:443")
            .build();

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (PipelineServiceClient pipelineServiceClient =
        PipelineServiceClient.create(pipelineServiceSettings)) {
      String location = "us-central1";
      TrainingPipelineName trainingPipelineName =
          TrainingPipelineName.of(project, location, trainingPipelineId);

      TrainingPipeline trainingPipelineResponse =
          pipelineServiceClient.getTrainingPipeline(trainingPipelineName);

      System.out.println("Get Training Pipeline Response");
      System.out.format("\tName: %s\n", trainingPipelineResponse.getName());
      System.out.format("\tDisplay Name: %s\n", trainingPipelineResponse.getDisplayName());
      System.out.format(
          "\tTraining Task Definition: %s\n", trainingPipelineResponse.getTrainingTaskDefinition());
      System.out.format(
          "\tTraining Task Inputs: %s\n", trainingPipelineResponse.getTrainingTaskInputs());
      System.out.format(
          "\tTraining Task Metadata: %s\n", trainingPipelineResponse.getTrainingTaskMetadata());
      System.out.format("\tState: %s\n", trainingPipelineResponse.getState());
      System.out.format("\tCreate Time: %s\n", trainingPipelineResponse.getCreateTime());
      System.out.format("\tStart Time: %s\n", trainingPipelineResponse.getStartTime());
      System.out.format("\tEnd Time: %s\n", trainingPipelineResponse.getEndTime());
      System.out.format("\tUpdate Time: %s\n", trainingPipelineResponse.getUpdateTime());
      System.out.format("\tLabels: %s\n", trainingPipelineResponse.getLabelsMap());
      InputDataConfig inputDataConfig = trainingPipelineResponse.getInputDataConfig();

      System.out.println("\tInput Data Config");
      System.out.format("\t\tDataset Id: %s\n", inputDataConfig.getDatasetId());
      System.out.format("\t\tAnnotations Filter: %s\n", inputDataConfig.getAnnotationsFilter());
      FractionSplit fractionSplit = inputDataConfig.getFractionSplit();

      System.out.println("\t\tFraction Split");
      System.out.format("\t\t\tTraining Fraction: %s\n", fractionSplit.getTrainingFraction());
      System.out.format("\t\t\tValidation Fraction: %s\n", fractionSplit.getValidationFraction());
      System.out.format("\t\t\tTest Fraction: %s\n", fractionSplit.getTestFraction());
      FilterSplit filterSplit = inputDataConfig.getFilterSplit();

      System.out.println("\t\tFilter Split");
      System.out.format("\t\t\tTraining Filter: %s\n", filterSplit.getTrainingFilter());
      System.out.format("\t\t\tValidation Filter: %s\n", filterSplit.getValidationFilter());
      System.out.format("\t\t\tTest Filter: %s\n", filterSplit.getTestFilter());
      PredefinedSplit predefinedSplit = inputDataConfig.getPredefinedSplit();

      System.out.println("\t\tPredefined Split");
      System.out.format("\t\t\tKey: %s\n", predefinedSplit.getKey());
      TimestampSplit timestampSplit = inputDataConfig.getTimestampSplit();

      System.out.println("\t\tTimestamp Split");
      System.out.format("\t\t\tTraining Fraction: %s\n", timestampSplit.getTrainingFraction());
      System.out.format("\t\t\tTest Fraction: %s\n", timestampSplit.getTestFraction());
      System.out.format("\t\t\tValidation Fraction: %s\n", timestampSplit.getValidationFraction());
      System.out.format("\t\t\tKey: %s\n", timestampSplit.getKey());
      Model modelResponse = trainingPipelineResponse.getModelToUpload();

      System.out.println("\t\tModel to upload");
      System.out.format("\t\tName: %s\n", modelResponse.getName());
      System.out.format("\t\tDisplay Name: %s\n", modelResponse.getDisplayName());
      System.out.format("\t\tDescription: %s\n", modelResponse.getDescription());
      System.out.format("\t\tMetadata Schema Uri: %s\n", modelResponse.getMetadataSchemaUri());
      System.out.format("\t\tMeta Data: %s\n", modelResponse.getMetadata());
      System.out.format("\t\tTraining Pipeline: %s\n", modelResponse.getTrainingPipeline());
      System.out.format("\t\tArtifact Uri: %s\n", modelResponse.getArtifactUri());
      System.out.format(
          "\t\tSupported Deployment Resources Types: %s\n",
          modelResponse.getSupportedDeploymentResourcesTypesList().toString());
      System.out.format(
          "\t\tSupported Input Storage Formats: %s\n",
          modelResponse.getSupportedInputStorageFormatsList().toString());
      System.out.format(
          "\t\tSupported Output Storage Formats: %s\n",
          modelResponse.getSupportedOutputStorageFormatsList().toString());
      System.out.format("\t\tCreate Time: %s\n", modelResponse.getCreateTime());
      System.out.format("\t\tUpdate Time: %s\n", modelResponse.getUpdateTime());
      System.out.format("\t\tLabels: %s\n", modelResponse.getLabelsMap());
      PredictSchemata predictSchemata = modelResponse.getPredictSchemata();

      System.out.println("\tPredict Schemata");
      System.out.format("\t\tInstance Schema Uri: %s\n", predictSchemata.getInstanceSchemaUri());
      System.out.format(
          "\t\tParameters Schema Uri: %s\n", predictSchemata.getParametersSchemaUri());
      System.out.format(
          "\t\tPrediction Schema Uri: %s\n", predictSchemata.getPredictionSchemaUri());

      for (Model.ExportFormat supportedExportFormat :
          modelResponse.getSupportedExportFormatsList()) {
        System.out.println("\tSupported Export Format");
        System.out.format("\t\tId: %s\n", supportedExportFormat.getId());
      }
      ModelContainerSpec containerSpec = modelResponse.getContainerSpec();

      System.out.println("\tContainer Spec");
      System.out.format("\t\tImage Uri: %s\n", containerSpec.getImageUri());
      System.out.format("\t\tCommand: %s\n", containerSpec.getCommandList());
      System.out.format("\t\tArgs: %s\n", containerSpec.getArgsList());
      System.out.format("\t\tPredict Route: %s\n", containerSpec.getPredictRoute());
      System.out.format("\t\tHealth Route: %s\n", containerSpec.getHealthRoute());

      for (EnvVar envVar : containerSpec.getEnvList()) {
        System.out.println("\t\tEnv");
        System.out.format("\t\t\tName: %s\n", envVar.getName());
        System.out.format("\t\t\tValue: %s\n", envVar.getValue());
      }

      for (Port port : containerSpec.getPortsList()) {
        System.out.println("\t\tPort");
        System.out.format("\t\t\tContainer Port: %s\n", port.getContainerPort());
      }

      for (DeployedModelRef deployedModelRef : modelResponse.getDeployedModelsList()) {
        System.out.println("\tDeployed Model");
        System.out.format("\t\tEndpoint: %s\n", deployedModelRef.getEndpoint());
        System.out.format("\t\tDeployed Model Id: %s\n", deployedModelRef.getDeployedModelId());
      }

      Status status = trainingPipelineResponse.getError();
      System.out.println("\tError");
      System.out.format("\t\tCode: %s\n", status.getCode());
      System.out.format("\t\tMessage: %s\n", status.getMessage());
    }
  }
}