Utilizzare le prenotazioni con la previsione

Per assicurarti che le risorse VM siano disponibili quando i job di previsione ne hanno bisogno, puoi usano le prenotazioni Compute Engine. Le prenotazioni offrono un elevato livello di garanzia nell'ottenimento di per le risorse Compute Engine. Per saperne di più, consulta la pagina Prenotazioni di risorse a livello di zona di Compute Engine.

Panoramica

I job di addestramento e previsione personalizzati di Vertex AI possono utilizzare delle 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 addestramento e previsione personalizzati.
  • 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 Vertex AI, ti consigliamo aumentando il conteggio delle VM di almeno una VM aggiuntiva per ogni deployment simultaneo.
  • Assicurati che i vincoli dei criteri dell'organizzazione consentano le prenotazioni condivise. Consulta Consentire e limitare la creazione e la modifica delle prenotazioni condivise da parte dei progetti.
  • Le proprietà dell'istanza VM della tua prenotazione devono corrispondere esattamente alle tue al carico di lavoro Vertex AI per utilizzare la prenotazione. 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.
  • Quando si utilizza Compute Engine, i seguenti servizi e funzionalità non sono supportati con Vertex AI Prediction:

    • Chiavi di crittografia gestite dal cliente (CMEK)
    • Conformità al Federal Risk and Authorization Management Program (FedRAMP)

Fatturazione

Quando utilizzi le prenotazioni Compute Engine, ti viene addebitato quanto segue:

  • I prezzi di Compute Engine per le risorse Compute Engine, inclusi eventuali gli sconti per impegno di utilizzo (CUD) applicabili. Consulta la pagina Prezzi di Compute Engine.
  • Le tariffe per la gestione delle previsioni di Vertex AI, oltre alle all'utilizzo dell'infrastruttura. Consulta Prezzi delle previsioni.

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:

Consentire 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, nei 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 serviceShareType impostato su ALLOW_ALL.

Consenti 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.

Ottenere le previsioni utilizzando una prenotazione

Per utilizzare una prenotazione Compute Engine quando esegui il deployment di un modello per ottenere le previsioni, puoi utilizzare l'API REST o l'SDK Vertex AI per Python.

REST

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

  • LOCATION_ID: la regione in cui stai utilizzando Vertex AI.
  • PROJECT_ID: il tuo ID progetto.
  • ENDPOINT_ID: l'ID dell'endpoint.
  • MODEL_ID: l'ID del modello di cui eseguire il deployment.
  • DEPLOYED_MODEL_NAME: un nome per il DeployedModel. Puoi utilizzare il nome visualizzato Model anche per DeployedModel.
  • MACHINE_TYPE: facoltativo. Le risorse macchina utilizzate per ogni nodo e deployment continuo. L'impostazione predefinita è n1-standard-2. Scopri di più sui tipi di macchina.
  • RESERVATION_AFFINITY_TYPE: deve essere ANY, SPECIFIC_RESERVATION o NONE.
    • ANY significa che le VM di customJob vengono automaticamente può utilizzare qualsiasi prenotazione con proprietà corrispondenti.
    • SPECIFIC_RESERVATION significa che le VM dei tuoi customJob può consumare solo una prenotazione che le VM target specificatamente 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 prenotazione.
  • MIN_REPLICA_COUNT: il numero minimo di nodi per questo deployment. Il numero di nodi può essere aumentato o diminuito in base al carico della previsione, fino al numero massimo di nodi e mai meno di questo numero. Questo valore deve essere maggiore o uguale a 1.
  • MAX_REPLICA_COUNT: il numero massimo di nodi per questo deployment. Il numero di nodi può essere aumentato o diminuito in base al carico della previsione, fino a questo numero di nodi e mai inferiore al numero minimo di nodi.
  • TRAFFIC_SPLIT_THIS_MODEL: la percentuale del traffico di previsione per questo endpoint da inoltrare al modello di cui viene eseguito il deployment con questa operazione. Il valore predefinito è 100. Tutto il traffico la somma delle percentuali deve essere 100. Scopri di più sulle suddivisioni del traffico.
  • DEPLOYED_MODEL_ID_N: facoltativo. Se viene eseguito il deployment di altri modelli su questo endpoint, devono aggiornare le rispettive percentuali di suddivisione del traffico in modo che la somma di tutte le percentuali arrivi a 100.
  • TRAFFIC_SPLIT_MODEL_N: il valore percentuale di suddivisione del traffico per l'ID del modello di cui è stato eseguito il deployment chiave.
  • PROJECT_NUMBER: il numero di progetto generato automaticamente del progetto

Metodo HTTP e URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:deployModel

Corpo JSON della richiesta:

{
  "deployedModel": {
    "model": "projects/PROJECT/locations/LOCATION_ID/models/MODEL_ID",
    "displayName": "DEPLOYED_MODEL_NAME",
    "dedicatedResources": {
      "machineSpec": {
        "machineType": "MACHINE_TYPE",
        "reservationAffinity": {
          "reservationAffinityType": "RESERVATION_AFFINITY_TYPE",
          "key": "compute.googleapis.com/reservation-name",
          "values": [
            "projects/PROJECT_ID/reservations/RESERVATION_NAME"
          ]
        }
      },
      "minReplicaCount": MIN_REPLICA_COUNT,
      "maxReplicaCount": MAX_REPLICA_COUNT
    },
  },
  "trafficSplit": {
    "0": TRAFFIC_SPLIT_THIS_MODEL,
    "DEPLOYED_MODEL_ID_1": TRAFFIC_SPLIT_MODEL_1,
    "DEPLOYED_MODEL_ID_2": TRAFFIC_SPLIT_MODEL_2
  },
}

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "name": "projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1beta1.DeployModelOperationMetadata",
    "genericMetadata": {
      "createTime": "2020-10-19T17:53:16.502088Z",
      "updateTime": "2020-10-19T17:53:16.502088Z"
    }
  }
}

Python

Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, consulta Installa l'SDK Vertex AI per Python. Per ulteriori informazioni, consulta SDK Vertex AI per Python documentazione di riferimento dell'API.

Per utilizzare una prenotazione specifica:

endpoint5.deploy(
    model = model,
    deployed_model_display_name=DEPLOYED_NAME,
    traffic_split=TRAFFIC_SPLIT,
    machine_type="MACHINE_TYPE",
    accelerator_type="ACCELERATOR_TYPE",
    accelerator_count=ACCELERATOR_COUNT,
    reservation_affinity_type="SPECIFIC_RESERVATION",
    reservation_affinity_key="compute.googleapis.com/reservation-name",
    reservation_affinity_values=["projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME"],
    min_replica_count=MIN_REPLICA_COUNT,
    max_replica_count=MAX_REPLICA_COUNT,
    sync=True
)

Per utilizzare una prenotazione:

endpoint5.deploy(
    model = model,
    deployed_model_display_name=DEPLOYED_NAME,
    traffic_split=TRAFFIC_SPLIT,
    machine_type="MACHINE_TYPE",
    accelerator_type="ACCELERATOR_TYPE",
    accelerator_count=ACCELERATOR_COUNT,
    reservation_affinity_type="ANY_RESERVATION",
    min_replica_count=MIN_REPLICA_COUNT,
    max_replica_count=MAX_REPLICA_COUNT,
    sync=True
)

Passaggi successivi