Questo documento spiega come utilizzare le prenotazioni Compute Engine per avere la certezza che i tuoi job di addestramento personalizzati dispongano delle risorse delle macchine virtuali (VM) necessarie per l'esecuzione.
Le prenotazioni sono una funzionalità di Compute Engine. Ti aiutano ad avere a disposizione le risorse per creare VM con lo stesso hardware (memoria e vCPU) e le risorse facoltative (GPU e dischi SSD locali) ogni volta che ne hai bisogno.
Quando crei una prenotazione, Compute Engine verifica che la capacità richiesta sia disponibile nella zona specificata. In questo caso, Compute Engine riserva le risorse, crea la prenotazione e si verifica quanto segue:
- Puoi utilizzare immediatamente le risorse riservate, che rimangono disponibili fino a quando non elimini la prenotazione.
- Ti viene addebitato il costo delle risorse riservate alla stessa tariffa on demand delle VM in esecuzione, inclusi eventuali sconti applicabili, fino all'eliminazione della prenotazione. Una VM che utilizza una prenotazione non comporta addebiti separati. Per saperne di più, consulta la pagina relativa alle prenotazioni di risorse di zona di Compute Engine.
Limitazioni e requisiti
Quando utilizzi le prenotazioni Compute Engine con Vertex AI, tieni conto delle seguenti limitazioni e requisiti:
- Vertex AI può utilizzare solo le prenotazioni delle VM con GPU collegate.
- Vertex AI non può utilizzare le prenotazioni delle VM con dischi SSD locali collegati manualmente.
- L'utilizzo delle prenotazioni Compute Engine con Vertex AI è supportato solo per l'addestramento e le previsioni personalizzate.
- Per utilizzare una prenotazione, le proprietà della VM devono corrispondere esattamente al tuo carico di lavoro Vertex AI. Ad esempio, se una prenotazione specifica un tipo di macchina
a2-ultragpu-8g
, il carico di lavoro Vertex AI può utilizzare la prenotazione solo se utilizza anche un tipo di macchinaa2-ultragpu-8g
. Consulta Requisiti. - Per utilizzare una prenotazione condivisa di VM GPU, devi farlo utilizzando il progetto del proprietario o un progetto consumer con cui la prenotazione è condivisa. Consulta Come funzionano 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.
-
I seguenti servizi e funzionalità non sono supportati quando utilizzi le prenotazioni Compute Engine con l'addestramento Vertex AI:
- Dynamic Workload Scheduler
- Eseguire job di addestramento su una risorsa permanente
Fatturazione
Quando utilizzi le prenotazioni Compute Engine, ti vengono addebitati i seguenti costi:
- Prezzi di Compute Engine per le risorse di Compute Engine, inclusi eventuali sconti per impegno di utilizzo (CUD) applicabili. Consulta la pagina Prezzi di Compute Engine.
- Tariffe di gestione dell'addestramento personalizzato di Vertex AI oltre all'utilizzo dell'infrastruttura. Consulta la sezione Prezzi dei modelli con addestramento personalizzato.
Prima di iniziare
- Esamina i requisiti e le limitazioni per le prenotazioni.
- Esamina i requisiti relativi alle quote e le limitazioni per le prenotazioni condivise.
Consentire l'utilizzo di una prenotazione
Prima di utilizzare una prenotazione di VM GPU, devi impostare le norme 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
- Consentire il consumo in una prenotazione esistente
Consentire il consumo durante la creazione di una prenotazione
Quando crei una prenotazione per un singolo progetto o una prenotazione condivisa di VM GPU, puoi 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 il
--reservation-sharing-policy
flag impostato suALLOW_ALL
. - Se utilizzi l'API REST, nel corpo della richiesta includi il
serviceShareType
campo impostato suALLOW_ALL
.
Consentire il consumo in una prenotazione esistente
Per consentire a Vertex AI di utilizzare una prenotazione esistente di VM GPU, consulta Modificare il criterio di condivisione di una prenotazione.Verificare che una prenotazione sia stata utilizzata
Per verificare che la prenotazione venga utilizzata, consulta Verificare il consumo delle prenotazioni nella documentazione di Compute Engine.Creare un job di addestramento personalizzato con una prenotazione
Per creare un job di addestramento personalizzato che utilizza una prenotazione Compute Engine di VM GPU, utilizza l'API REST.
REST
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- LOCATION: la regione in cui verrà eseguito il container o il pacchetto Python.
- PROJECT_ID: il progetto in cui è stata creata la prenotazione. Per utilizzare una prenotazione condivisa di un altro progetto, devi condividerla con quel progetto. Per ulteriori informazioni, consulta Modificare i progetti consumer in una prenotazione condivisa.
-
JOB_NAME: obbligatorio. Un nome visualizzato per
CustomJob
. - MACHINE_TYPE: il tipo di macchina da utilizzare per il job. L'impostazione predefinita è
n1-standard-2
. Per ulteriori informazioni sui tipi di macchine supportati, consulta Configurare le risorse di calcolo per l'addestramento personalizzato. - ACCELERATOR_TYPE: il tipo di acceleratore da collegare alla macchina. Per ulteriori informazioni sul tipo di GPU supportato da ogni tipo di macchina, consulta GPU per carichi di lavoro di calcolo.
- ACCELERATOR_COUNT: il numero di acceleratori da collegare alla macchina.
- Definisci il job di addestramento personalizzato:
RESERVATION_AFFINITY_TYPE: deve essere
ANY
,SPECIFIC_RESERVATION
oNONE
.ANY
indica che le VM del tuocustomJob
possono automaticamente utilizzare qualsiasi prenotazione con proprietà corrispondenti.SPECIFIC_RESERVATION
indica che le VM dicustomJob
possono utilizzare solo una prenotazione che le VM hanno come target specifico per nome.NONE
significa che le VM del tuocustomJob
non possono consumare nessuna prenotazione. La specifica diNONE
ha lo stesso effetto dell'omissione di una specifica di affinità di prenotazione.
- RESERVATION_NAME: il nome della prenotazione.
- DISK_TYPE: facoltativo. Il tipo di disco di avvio da utilizzare per il job,
pd-standard
(predefinito) opd-ssd
. Scopri di più sui tipi di dischi. - DISK_SIZE: facoltativo. Le dimensioni in GB del disco di avvio da utilizzare per il job. Il valore predefinito è 100.
- REPLICA_COUNT: il numero di repliche dei worker da usare. Nella maggior parte dei casi, imposta questo valore su
1
per il primo pool di worker. - Se l'applicazione di addestramento viene eseguita in un contenitore personalizzato, specifica quanto segue:
- CUSTOM_CONTAINER_IMAGE_URI: l'URI di un'immagine container in Artifact Registry o Docker Hub da eseguire su ogni replica del worker.
- CUSTOM_CONTAINER_COMMAND: facoltativo. Il comando da richiamare all'avvio del container. 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 esegue il codice fornito. Consulta i container predefiniti disponibili per l'addestramento.
- PYTHON_PACKAGE_URIS: elenco separato da virgole di URI di Cloud Storage che specificano i file del pacchetto Python, ovvero il programma di addestramento e i rispettivi pacchetti dipendenti. Il numero massimo di URI dei pacchetti è 100.
- PYTHON_MODULE: il nome del modulo Python da eseguire dopo l'installazione dei pacchetti.
- PYTHON_PACKAGE_ARGS: facoltativo. Argomenti della riga di comando da passare al modulo Python.
- TIMEOUT: facoltativo. Il tempo di esecuzione massimo del 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", "acceleratorType": "ACCELERATOR_TYPE", "acceleratorCount": ACCELERATOR_COUNT, "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
- Scopri di più sulle prenotazioni delle risorse di zona di Compute Engine.
- Scopri come utilizzare le prenotazioni con la previsione di Vertex AI.