Quando utilizzi l'addestramento personalizzato per addestrare i modelli, puoi impostare il job di addestramento in modo da caricare automaticamente i log di Vertex AI TensorBoard su Vertex AI TensorBoard.
Puoi utilizzare questa integrazione per monitorare l'addestramento quasi in tempo reale, man mano che Vertex AI TensorBoard trasmette in streaming i log di Vertex AI TensorBoard mentre vengono scritti in Cloud Storage.
Per la configurazione iniziale, consulta Configurazione per Vertex AI TensorBoard.
Modifiche allo script di addestramento
Lo script di addestramento deve essere configurato per scrivere i log di TensorBoard nel bucket Cloud Storage, la località in cui il servizio Vertex AI Training metterà automaticamente a disposizione tramite una variabile di ambiente predefinita AIP_TENSORBOARD_LOG_DIR
.
In genere questa operazione può essere eseguita fornendo os.environ['AIP_TENSORBOARD_LOG_DIR']
come directory di log alle API di scrittura di log open source TensorBoard. In genere, la posizione
dell'elemento AIP_TENSORBOARD_LOG_DIR
viene impostata con la variabile
staging_bucket
.
Per configurare lo script di addestramento in TensorFlow 2.x, crea un callback di TensorBoard
e imposta la variabile log_dir
su os.environ['AIP_TENSORBOARD_LOG_DIR']
Il callback TensorBoard verrà quindi incluso nell'elenco dei callback model.fit
di TensorFlow.
tensorboard_callback = tf.keras.callbacks.TensorBoard( log_dir=os.environ['AIP_TENSORBOARD_LOG_DIR'], histogram_freq=1 ) model.fit( x=x_train, y=y_train, epochs=epochs, validation_data=(x_test, y_test), callbacks=[tensorboard_callback], )
Scopri di più su come Vertex AI imposta le variabili di ambiente nel tuo ambiente di addestramento personalizzato.
Crea un job di addestramento personalizzato
L'esempio seguente mostra come creare un job di addestramento personalizzato.
Per un esempio dettagliato di come creare un job di addestramento personalizzato, vedi Hello addestramento personalizzato. Per la procedura di creazione di container di addestramento personalizzato, consulta Creare un'immagine container personalizzata per l'addestramento.
Per creare un job di addestramento personalizzato, utilizza l'SDK Vertex AI per Python o REST.
Python
Python
project
: il tuo ID progetto. Puoi trovare questi ID nella pagina di benvenuto della console Google Cloud.
location
: la posizione in cui eseguire il job personalizzato. Questa dovrebbe essere la stessa posizione dell'istanza TensorBoard fornita.staging_bucket
: il bucket Cloud Storage per posizionare gli artefatti durante le chiamate API, inclusi i log di TensorBoard.display_name
: nome visualizzato del job di addestramento personalizzato.script_path
: il percorso, relativo alla directory di lavoro sul tuo file system locale, dello script che funge da punto di ingresso per il codice di addestramento.container_uri
: l'URI dell'immagine del container di addestramento può essere Vertex AI. container di addestramento predefinito o un container personalizzato.model_serving_container_image_uri
: l'URI del container di gestione del modello adatto a fornire il modello prodotto dallo script di addestramento.dataset_id
: il numero ID del set di dati da utilizzare per l'addestramento.model_display_name
: nome visualizzato del modello addestrato.args
: argomenti della riga di comando da passare allo script Python.replica_count
: il numero di repliche dei worker da utilizzare. Nella maggior parte dei casi, imposta questo valore su 1 per il primo pool di worker.machine_type
: tipo di VM da utilizzare. Per un elenco delle VM supportate, consulta Tipi di macchineaccelerator_type
: il tipo di GPU da collegare a ogni VM nel pool di risorse. Per un elenco delle GPU supportate, consulta GPU.accelerator_count
Il numero di GPU da collegare a ogni VM nel pool di risorse. Il valore predefinito è1
.training_fraction_split
: la frazione del set di dati da utilizzare per addestrare il modello.validation_fraction_split
: la frazione del set di dati da utilizzare per convalidare il modello.test_fraction_split
: la frazione del set di dati da utilizzare per valutare il modello.sync
: indica se eseguire il metodo in modo sincrono.tensorboard_resource_name
: il nome della risorsa dell'istanza Vertex TensorBoard in cui CustomJob caricherà i log di TensorBoard.service_account
: richiesta quando viene eseguita con TensorBoard. Vedi Creare un account di servizio con le autorizzazioni richieste.
REST
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- LOCATION_ID: la località in cui eseguire il
CustomJob
, ad esempio us-central1. Questa dovrebbe essere la stessa posizione dell'istanza TensorBoard fornita. - PROJECT_ID: il tuo ID progetto.
- TENSORBOARD_INSTANCE_NAME: (obbligatorio) il nome completo
dell'istanza Vertex AI TensorBoard esistente in cui sono archiviati i log di Vertex AI TensorBoard:
projects/
PROJECT_ID
/locations/LOCATION_ID
/tensorboards/TENSORBOARD_INSTANCE_ID
Nota: se l'istanza TensorBoard non è esistente, la creazione del job personalizzato genera un errore 404. - GCS_BUCKET_NAME: "${PROJECT_ID}-tensorboard-logs-${LOCATION}"
- USER_SA_EMAIL: (obbligatorio) l'account di servizio creato nei passaggi precedenti o il tuo account di servizio. "USER_SA_NAME@${PROJECT_ID}.iam.gserviceaccount.com"
- TRAINING_CONTAINER: TRAINING_CONTAINER.
- INVOCATION_TIMESTAMP: "$(date +'%Y%m%d-%H%M%S')"
- JOB_NAME: "tensorboard-example-job-${INVOCATION_TIMESTAMP}"
- BASE_OUTPUT_DIR: (obbligatorio) il percorso di Google Cloud in cui vengono scritti tutti gli output dell'addestramento. "gs://$GCS_BUCKET_NAME/$JOB_NAME"
Metodo HTTP e URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/customJobs
Corpo JSON della richiesta:
{ "displayName": JOB_NAME, "jobSpec":{ "workerPoolSpecs":[ { "replicaCount": "1", "machineSpec": { "machineType": "n1-standard-8", }, "containerSpec": { "imageUri": TRAINING_CONTAINER, } } ], "base_output_directory": { "output_uri_prefix": BASE_OUTPUT_DIR, }, "serviceAccount": USER_SA_EMAIL, "tensorboard": TENSORBOARD_INSTANCE_NAME, } }
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "name": "projects/PROJECT_ID/locations/LOCATION_ID/customJobs/CUSTOM_JOB_ID", "displayName": "DISPLAY_NAME", "jobSpec": { "workerPoolSpecs": [ { "machineSpec": { "machineType": "n1-standard-8" }, "replicaCount": "1", "diskSpec": { "bootDiskType": "pd-ssd", "bootDiskSizeGb": 100 }, "containerSpec": { "imageUri": "IMAGE_URI" } } ], "serviceAccount": "SERVICE_ACCOUNT", "baseOutputDirectory": { "outputUriPrefix": "OUTPUT_URI_PREFIX" }, "tensorboard": "projects//locations/LOCATION_ID/tensorboards/tensorboard-id" }, "state": "JOB_STATE_PENDING", "createTime": "CREATE-TIME", "updateTime": "UPDATE-TIME" }
Passaggi successivi
- Dai un'occhiata a View Vertex AI TensorBoard.
- Scopri come ottimizzare le prestazioni dei tuoi job di addestramento personalizzato utilizzando Vertex AI TensorBoard Profiler.