Per personalizzare il modo in cui Vertex AI gestisce le inferenze online dal modello con addestramento personalizzato, puoi specificare un container personalizzato anziché un container predefinito quando crei una risorsa Model
. Quando utilizzi un container personalizzato, Vertex AI esegue un
container Docker a tua scelta su ogni nodo di inferenza.
Potresti voler utilizzare un container personalizzato per uno dei seguenti motivi:
- per pubblicare inferenze da un modello ML addestrato utilizzando un framework non disponibile come container predefinito
- per preelaborare le richieste di inferenza o post-elaborare le inferenze generate dal tuo modello
- per eseguire un server di inferenza scritto nel linguaggio di programmazione che preferisci
- per installare le dipendenze che vuoi utilizzare per personalizzare le inferenze
Questa guida descrive come creare un modello che utilizza un container personalizzato. Non fornisce istruzioni dettagliate sulla progettazione e la creazione di un'immagine container Docker.
Prepara un'immagine container
Per creare un Model
che utilizza un container personalizzato, devi fornire un'immagine container Docker come base del container. Questa immagine container deve
soddisfare i requisiti descritti in Requisiti per i container
personalizzati.
Se prevedi di utilizzare un'immagine container esistente creata da una terza parte di cui ti fidi, potresti essere in grado di saltare una o entrambe le sezioni seguenti.
Crea un'immagine container
Progetta e crea un'immagine container Docker che soddisfi i requisiti dell'immagine container.
Per scoprire le nozioni di base sulla progettazione e la creazione di un'immagine container Docker, leggi la guida rapida della documentazione di Docker.
Esegui il push dell'immagine container in Artifact Registry
Esegui il push dell'immagine container in un repository Artifact Registry.
Scopri come eseguire il push di un'immagine container in Artifact Registry.
Crea un Model
Per creare un Model
che utilizza un container personalizzato, esegui una delle seguenti operazioni:
Le sezioni seguenti mostrano come configurare i campi API relativi ai contenitori personalizzati quando crei un Model
in uno di questi modi.
Campi API correlati ai container
Quando crei Model
, assicurati di configurare il campocontainerSpec
con i dettagli del container personalizzato, anziché con un container
predefinito.
Devi specificare un ModelContainerSpec
messaggio nel
campo Model.containerSpec
. All'interno di questo messaggio, puoi specificare i
seguenti campi secondari:
imageUri
(obbligatorio)L'URI Artifact Registry dell'immagine container.
Se utilizzi il comando
gcloud ai models upload
, puoi utilizzare il flag--container-image-uri
per specificare questo campo.command
(facoltativo)Un array di un eseguibile e argomenti per eseguire l'override dell'istruzione
ENTRYPOINT
del container. Per scoprire di più su come formattare questo campo e su come interagisce con il campoargs
, consulta il riferimento API perModelContainerSpec
.Se utilizzi il comando
gcloud ai models upload
, puoi utilizzare il flag--container-command
per specificare questo campo.args
(facoltativo)Un array di un eseguibile e argomenti per ignorare il
CMD
Per saperne di più su come formattare questo campo e su come interagisce con il campocommand
, consulta il riferimento API perModelContainerSpec
.Se utilizzi il comando
gcloud ai models upload
, puoi utilizzare il flag--container-args
per specificare questo campo.ports
(facoltativo)Un array di porte; Vertex AI invia controlli di attività, controlli di integrità e richieste di inferenza al tuo container sulla prima porta elencata o
8080
per impostazione predefinita. La specifica di porte aggiuntive non ha alcun effetto.Se utilizzi il comando
gcloud ai models upload
, puoi utilizzare il flag--container-ports
per specificare questo campo.env
(facoltativo)Un array di variabili di ambiente a cui possono fare riferimento l'istruzione
ENTRYPOINT
del container e i campicommand
eargs
. Per scoprire di più su come altri campi possono fare riferimento a queste variabili di ambiente, leggi il riferimento API perModelContainerSpec
.Se utilizzi il comando
gcloud ai models upload
, puoi utilizzare il flag--container-env-vars
per specificare questo campo.healthRoute
(facoltativo)Il percorso sul server HTTP del container a cui vuoi che Vertex AI invii i controlli di integrità.
Se non specifichi questo campo, quando implementi
Model
comeDeployedModel
in una risorsaEndpoint
, il valore predefinito è/v1/endpoints/ENDPOINT/deployedModels/DEPLOYED_MODEL
, dove ENDPOINT viene sostituito dall'ultimo segmento del camponame
diEndpoint
(dopoendpoints/
) e DEPLOYED_MODEL viene sostituito dal campoid
diDeployedModel
.Se utilizzi il comando
gcloud ai models upload
, puoi utilizzare il flag--container-health-route
per specificare questo campo.predictRoute
(facoltativo)Il percorso sul server HTTP del container a cui vuoi che Vertex AI inoltri le richieste di inferenza.
Se non specifichi questo campo, quando implementi
Model
comeDeployedModel
in una risorsaEndpoint
, il valore predefinito è/v1/endpoints/ENDPOINT/deployedModels/DEPLOYED_MODEL:predict
, dove ENDPOINT viene sostituito dall'ultimo segmento del camponame
diEndpoint
(dopoendpoints/
) e DEPLOYED_MODEL viene sostituito dal campoid
diDeployedModel
.Se utilizzi il comando
gcloud ai models upload
, puoi utilizzare il flag--container-predict-route
per specificare questo campo.sharedMemorySizeMb
(facoltativo)La quantità di memoria della VM da riservare in un volume di memoria condivisa per il modello in megabyte.
La memoria condivisa è un meccanismo di comunicazione tra processi (IPC) che consente a più processi di accedere e manipolare un blocco di memoria comune. La quantità di memoria condivisa necessaria, se presente, è un dettaglio di implementazione del tuo container e modello. Per le linee guida, consulta la documentazione del server di modelli.
Se utilizzi il comando
gcloud ai models upload
, puoi utilizzare il flag--container-shared-memory-size-mb
per specificare questo campo.startupProbe
(facoltativo)Specifica del probe che controlla se l'applicazione container è stata avviata.
Se utilizzi il comando
gcloud ai models upload
, puoi utilizzare il flag--container-startup-probe-exec, --container-startup-probe-period-seconds, --container-startup-probe-timeout-seconds
per specificare questo campo.healthProbe
(facoltativo)Specifica del probe che controlla se un container è pronto ad accettare il traffico.
Se utilizzi il comando
gcloud ai models upload
, puoi utilizzare il flag--container-health-probe-exec, --container-health-probe-period-seconds, --container-health-probe-timeout-seconds
per specificare questo campo.
Oltre alle variabili impostate nel campo Model.containerSpec.env
, Vertex AI imposta diverse altre variabili in base alla configurazione. Scopri di più sull'utilizzo di queste variabili di ambiente in questi campi e nell'istruzione ENTRYPOINT
del contenitore.
Esempi di importazione di modelli
Gli esempi seguenti mostrano come specificare i campi API correlati ai contenitori quando importi un modello.
gcloud
L'esempio seguente utilizza il comando gcloud ai models upload
:
gcloud ai models upload \
--region=LOCATION \
--display-name=MODEL_NAME \
--container-image-uri=IMAGE_URI \
--container-command=COMMAND \
--container-args=ARGS \
--container-ports=PORTS \
--container-env-vars=ENV \
--container-health-route=HEALTH_ROUTE \
--container-predict-route=PREDICT_ROUTE \
--container-shared-memory-size-mb=SHARED_MEMORY_SIZE \
--container-startup-probe-exec=STARTUP_PROBE_EXEC \
--container-startup-probe-period-seconds=STARTUP_PROBE_PERIOD \
--container-startup-probe-timeout-seconds=STARTUP_PROBE_TIMEOUT \
--container-health-probe-exec=HEALTH_PROBE_EXEC \
--container-health-probe-period-seconds=HEALTH_PROBE_PERIOD \
--container-health-probe-timeout-seconds=HEALTH_PROBE_TIMEOUT \
--artifact-uri=PATH_TO_MODEL_ARTIFACT_DIRECTORY
Il flag --container-image-uri
è obbligatorio; tutti gli altri flag che iniziano
con --container-
sono facoltativi. Per scoprire di più sui valori di questi campi,
consulta la sezione precedente di questa guida.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida di Vertex AI per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Vertex AI Java.
Per autenticarti in Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js nella guida rapida di Vertex AI per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Vertex AI Node.js.
Per autenticarti in Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI Python, consulta Installare l'SDK Vertex AI Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.
Per maggiori informazioni, leggi la Guida all'importazione dei modelli.
Inviare richieste di inferenza
Per inviare una richiesta di inferenza online al tuo Model
, segui le istruzioni riportate in
Ottenere inferenze da un modello addestrato personalizzato:
questa procedura funziona allo stesso modo indipendentemente dal fatto che utilizzi un container personalizzato.
Scopri di più sui requisiti di richiesta e risposta di previsione per i container personalizzati.
Passaggi successivi
- Per scoprire tutto ciò che devi considerare quando progetti un container personalizzato da utilizzare con Vertex AI, leggi Requisiti dei container personalizzati.