Utilizzare le prenotazioni con l'addestramento

Per assicurarti che le risorse VM siano disponibili quando i job di addestramento personalizzato ne hanno bisogno, puoi utilizzare le prenotazioni Compute Engine. Le prenotazioni offrono un elevato livello di garanzia per l'ottenimento della capacità per le risorse Compute Engine. Per saperne di più, consulta Prenotazioni di Compute Engine risorse di zona.

Panoramica

I job di addestramento e previsione personalizzati di Vertex AI possono consumare prenotazioni Compute Engine. La prenotazione deve specificare un tipo di macchina A2 o A3. Se le risorse di queste prenotazioni sono idonee per gli sconti per impegno di utilizzo (CUD), quando le VM utilizzano queste prenotazioni, le risorse vengono acquistate a prezzi scontati. Consulta: Sconti per impegno di utilizzo (CUD) per le risorse prenotate.

Limitazioni e requisiti

Tieni presente le seguenti limitazioni e requisiti quando utilizzi le prenotazioni Compute Engine con Vertex AI:

  • Vertex AI può utilizzare le prenotazioni solo con le seguenti serie di macchine:

    • A2
    • A3
  • L'utilizzo delle prenotazioni Compute Engine con Vertex AI è supportato solo per l'addestramento e le previsioni personalizzate.
  • Assicurati che sia disponibile una quota sufficiente per i tuoi job Vertex AI. Consulta: Ulteriori requisiti di quota per le prenotazioni condivise.
  • Per supportare gli aggiornamenti regolari dei deployment di Vertex AI, ti consigliamo di aumentare il numero di VM di almeno un'altra VM per ogni deployment simultaneo.
  • Assicurati che i vincoli dei criteri dell'organizzazione consentano le prenotazioni condivise. Consulta: Consenti e impedisce ai progetti di creare e modificare prenotazioni condivise.
  • Per poter utilizzare la prenotazione, le proprietà delle istanze VM devono corrispondere esattamente al tuo workload Vertex AI. Ad esempio, se un carico di lavoro Vertex AI ha un tipo di macchina a2-megagpu-16g, il tipo di macchina della prenotazione deve corrispondere. Consulta: Requisiti.
  • I seguenti servizi e funzionalità non sono supportati quando utilizzi le prenotazioni Compute Engine con l'addestramento Vertex AI:

  • Il job di addestramento personalizzato deve utilizzare un account di servizio personalizzato. Consulta Utilizzare un account di servizio personalizzato.

Fatturazione

Quando utilizzi le prenotazioni Compute Engine, ti vengono addebitati i seguenti costi:

Prima di iniziare

Consentire l'utilizzo di una prenotazione

Prima di utilizzare una prenotazione di VM A2 o A3, devi impostarne le criteri di condivisione per consentire a Vertex AI di utilizzare la prenotazione. A tal fine, utilizza uno dei seguenti metodi:

Consenti il consumo durante la creazione di una prenotazione

Durante la creazione di un progetto singolo oppure prenotazione condivisa di A2 o VM A3, puoi specificare di consentire a Vertex AI di utilizzare la prenotazione come segue:

  • Se utilizzi la console Google Cloud, nella sezione Servizi Google Cloud, seleziona Condividi prenotazione.
  • Se utilizzi Google Cloud CLI, includi Flag --reservation-sharing-policy impostato su ALLOW_ALL.
  • Se utilizzi l'API REST, includi il campo serviceShareType impostato su ALLOW_ALL.

Consentire il consumo in una prenotazione esistente

Per consentire a Vertex AI di utilizzare una prenotazione esistente di VM A2 o A3, consulta Modificare il criterio di condivisione di una prenotazione.

Crea un job di addestramento personalizzato con una prenotazione

Puoi creare un job di addestramento personalizzato che utilizza una prenotazione Compute Engine utilizzando l'API REST.

REST

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

  • LOCATION: la regione in cui verrà installato il container o il pacchetto Python vengono eseguiti tutti i test delle unità.
  • PROJECT_ID: il tuo ID progetto.
  • JOB_NAME: campo obbligatorio. Un nome visualizzato per CustomJob.
  • Definisci il job di addestramento personalizzato:
    • MACHINE_TYPE: tipo di macchina. Consulta di tipi di macchine addestramento.
    • RESERVATION_AFFINITY_TYPE: deve essere ANY, SPECIFIC_RESERVATION o NONE.

      • ANY significa che le VM del tuo customJob possono automaticamente utilizzare qualsiasi prenotazione con proprietà corrispondenti.
      • SPECIFIC_RESERVATION significa che le VM dei tuoi customJob può consumare solo una prenotazione che le VM hanno scelto come target in modo specifico per nome.
      • NONE significa che le VM del tuo customJob non possono consumare nessuna prenotazione. La specifica di NONE ha lo stesso effetto dell'omissione di una specifica di affinità di prenotazione.
    • RESERVATION_NAME: il nome della tua prenotazione.
    • DISK_TYPE: facoltativo. Il tipo di disco di avvio da utilizzare per il job, ovvero pd-standard (valore predefinito) o pd-ssd. Scopri di più sui tipi di disco.
    • DISK_SIZE: facoltativo. La dimensione in GB del disco di avvio da utilizzare per il job. Il valore predefinito è 100.
    • REPLICA_COUNT: il numero di repliche dei worker da utilizzare. Nella maggior parte dei casi, imposta questo valore su 1 per primo worker pool.
    • Se l'applicazione di addestramento viene eseguita in un container personalizzato, specifica quanto segue:
      • CUSTOM_CONTAINER_IMAGE_URI: l'URI di un'immagine container in Artifact Registry o Docker Hub da eseguire su ciascuna replica worker.
      • CUSTOM_CONTAINER_COMMAND: facoltativo. Il comando da richiamare quando il container in esecuzione. 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:
      • EXECUTOR_IMAGE_URI: l'URI dell'immagine container che viene eseguita il codice fornito. Consulta le di container predefiniti disponibili addestramento.
      • PYTHON_PACKAGE_URIS: elenco separato da virgole di Cloud Storage URI che specificano i file del pacchetto Python, ovvero il programma di addestramento e dei pacchetti dipendenti. Il numero massimo di URI dei pacchetti è 100.
      • PYTHON_MODULE: il nome del modulo Python da eseguire dopo l'installazione del .
      • PYTHON_PACKAGE_ARGS: facoltativo. Argomenti della riga di comando da passare al modulo Python.
    • TIMEOUT: facoltativo. Il tempo di esecuzione massimo per il job.
  • Specifica LABEL_NAME e LABEL_VALUE per le eventuali etichette da applicare a questo job personalizzato.

Metodo HTTP e URL:

POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/customJobs

Corpo JSON della richiesta:

{
  "displayName": "JOB_NAME",
  "jobSpec": {
    "workerPoolSpecs": [
      {
        "machineSpec": {
          "machineType": "MACHINE_TYPE",
          "reservationAffinity": {
            "reservationAffinityType": "RESERVATION_AFFINITY_TYPE",
            "key": "compute.googleapis.com/reservation-name",
            "values": [
              "projects/PROJECT_ID/reservations/RESERVATION_NAME"
            ]
          }
        },
        "replicaCount": REPLICA_COUNT,
        "diskSpec": {
          "bootDiskType": DISK_TYPE,
          "bootDiskSizeGb": DISK_SIZE
        },

        // 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": EXECUTOR_IMAGE_URI,
          "packageUris": [
            PYTHON_PACKAGE_URIS
          ],
          "pythonModule": PYTHON_MODULE,
          "args": [
            PYTHON_PACKAGE_ARGS
          ]
        }
        // End of list of possible types for union field task.
      }
      // Specify one workerPoolSpec for single replica training, or multiple workerPoolSpecs
      // for distributed training.
    ],
    "scheduling": {
      "timeout": TIMEOUT
    }
  },
  "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-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/customJobs"

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-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/customJobs" | Select-Object -Expand Content

La risposta contiene informazioni sulle specifiche e sul TRAININGPIPELINE_ID.

Passaggi successivi