Per personalizzare il modo in cui AI Platform Prediction fornisce previsioni online dal tuo modello di machine learning (ML) addestrato, puoi specificare un container personalizzato anziché una versione di runtime quando crei una versione del modello. Quando utilizzi un container personalizzato, AI Platform Prediction esegue un container Docker a tua scelta su ogni nodo di previsione, invece di eseguire il codice della versione del runtime standard per fornire previsioni da artefatti del modello compatibili.
Puoi utilizzare un contenitore personalizzato per uno dei seguenti motivi:
- per fornire previsioni da un modello ML addestrato con un framework diverso da TensorFlow, scikit-learn o XGBoost
- per pre-elaborare le richieste di previsione o post-elaborare le previsioni generate dal modello
- per eseguire un server di previsione scritto in un linguaggio di programmazione a tua scelta
- per installare le dipendenze che vuoi utilizzare per personalizzare la previsione
Questa guida descrive come creare una versione del modello che utilizza un container personalizzato. Non fornisce istruzioni dettagliate sulla progettazione e sulla creazione di un'immagine container Docker. Per un esempio di creazione di un'immagine container e di utilizzo con AI Platform Prediction, consulta Getting started: Serving PyTorch predictions with a custom container.
Per utilizzare un container personalizzato, devi utilizzare un endpoint a livello di regione e un tipo di macchina di Compute Engine (N1) per la versione del tuo modello.
Preparazione di un'immagine container
Per creare una versione del modello che utilizza un container personalizzato, devi fornire un'immagine container Docker come base di quel 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 che ritieni attendibile, potresti essere in grado di ignorare una o entrambe le sezioni seguenti.
Crea un'immagine container
Progetta e crea un'immagine container Docker che soddisfi i requisiti per le immagini container.
Per informazioni di base sulla progettazione e la creazione di un'immagine container Docker, consulta la guida rapida della documentazione di Docker
Esegui il push dell'immagine container in Artifact Registry
Esegui il push dell'immagine container a un repository Artifact Registry che soddisfa i requisiti di pubblicazione delle immagini container.
Scopri come eseguire il push di un'immagine container ad Artifact Registry.
Creazione di un modello e di una versione del modello
Specifica diverse opzioni di configurazione quando crei un modello per assicurarti che tutte le versioni del modello create in un secondo momento sul modello siano compatibili con il container personalizzato.
Quindi, specifica la maggior parte della configurazione del container quando crei una versione del modello.
Crea un modello
Per creare un modello, segui le istruzioni per la creazione di una risorsa del modello. Devi creare il modello su un endpoint a livello di regione che corrisponda alla regione del repository Artifact Registry in cui è archiviata l'immagine container. Per saperne di più, leggi i requisiti per la pubblicazione di immagini container.
Crea una versione del modello
Quando crei una versione del modello che utilizza un container personalizzato, configura i seguenti campi dell'API specifici per il container oltre agli altri campi specificati per una versione del modello:
Version.container
Version.routes
(facoltativo)
Nelle sezioni seguenti viene descritto come configurare questi campi.
Inoltre, tieni presente le seguenti differenze specifiche per il container nel modo in cui configuri altri campi API:
Version.machineType
: devi impostare questo campo su un tipo di macchina di Compute Engine (N1).Version.deploymentUri
: questo campo diventa facoltativo. Scopri come il container può accedere agli artefatti specificati da questo campo.Version.runtimeVersion
,Version.framework
,Version.pythonVersion
,Version.predictionClass
eVersion.packageUris
: non devi specificare questi campi.
Configura Version.container
Devi specificare un messaggio ContainerSpec
nel campo Version.container
. All'interno di questo messaggio puoi specificare i seguenti sottocampi. Se utilizzi il comando gcloud beta ai-platform versions create
per creare la versione del modello, puoi utilizzare un flag della riga di comando per specificare ogni campo secondario.
image
(obbligatorio)L'URI Artifact Registry dell'immagine container.
Flag gcloud CLI:
--image
command
(facoltativo)Un array di un eseguibile e argomenti per eseguire l'override di
ENTRYPOINT
del container. Per scoprire di più su come formattare questo campo e su come interagisce con il campoargs
, leggi il riferimento API perContainerSpec
.Flag gcloud CLI:
--command
args
(facoltativo)Un array di un eseguibile e argomenti per eseguire l'override del valore
CMD
del container per scoprire di più su come formattare questo campo e sulla sua interazione con il campocommand
, leggi il riferimento API perContainerSpec
.Flag gcloud CLI:
--args
ports
(facoltativo)Un array di porte; AI Platform Prediction invia controlli di attività, controlli di integrità e richieste di previsione al tuo container sulla prima porta elencata, oppure
8080
per impostazione predefinita. La specifica di porte aggiuntive non ha alcun effetto.Flag gcloud CLI:
--ports
env
(facoltativo)Un array di variabili di ambiente a cui possono fare riferimento il comando del punto di ingresso del container, così come i campi
command
eargs
. Per scoprire di più su come altri campi possono fare riferimento a queste variabili di ambiente, leggi il riferimento API perContainerSpec
.Flag gcloud CLI:
--env-vars
Oltre alle variabili impostate nel campo Version.container.env
, AI Platform Prediction imposta diverse altre variabili in base alla tua configurazione.
Scopri di più sull'utilizzo di queste variabili di ambiente in questi campi e nel comando del punto di ingresso del container.
L'esempio seguente mostra come specificare questi campi quando crei una versione del modello utilizzando Google Cloud CLI:
gcloud beta ai-platform versions create VERSION \
--region=REGION \
--model=MODEL \
--machine-type=n1-standard-4 \
--image=IMAGE_URI \
--command=executable,param1,param2 \
--args=param3,param4 \
--ports=8081 \
--env-vars \
VAR1='value 1' \
VAR2='value 2'
Sostituisci quanto segue:
- VERSION: il nome della versione del modello
- REGION: la regione dell'endpoint di previsione di AI Platform in cui hai creato il modello
- MODEL: il nome del modello
- IMAGE_URI: l'URI dell'immagine container in Artifact Registry, che deve iniziare con REGION (come descritto nei requisiti per la pubblicazione delle immagini container)
Configura Version.routes
Puoi specificare un messaggio RouteMap
nel campo Version.routes
. All'interno di questo messaggio è possibile specificare i seguenti sottocampi. Se utilizzi il comando gcloud beta ai-platform versions create
per creare la versione del modello, puoi utilizzare un flag della riga di comando per specificare ogni campo secondario.
health
(facoltativo)Il percorso sul server HTTP del container a cui vuoi che AI Platform Prediction invii i controlli di integrità.
Se non specifichi questo campo, il valore predefinito è
/v1/models/MODEL/versions/VERSION
, dove MODEL e VERSION vengono sostituiti, rispettivamente, dai nomi del modello e della versione del modello.Flag gcloud CLI:
--health-route
predict
(facoltativo)Il percorso sul server HTTP del container in cui vuoi che AI Platform Prediction inoltri le richieste di previsione.
Se non specifichi questo campo, il valore predefinito è
/v1/models/MODEL/versions/VERSION:predict
, dove MODEL e VERSION vengono sostituiti, rispettivamente, dai nomi del modello e della versione del modello.Flag gcloud CLI:
--predict-route
L'esempio seguente mostra come specificare questi campi quando crei una versione del modello utilizzando gcloud CLI:
gcloud beta ai-platform versions create VERSION \
--region=REGION \
--model=MODEL \
--machine-type=n1-standard-4 \
--image=IMAGE_URI \
--command=executable,param1,param2 \
--args=param3,param4 \
--ports=8081 \
--env-vars \
VAR1='value 1' \
VAR2='value 2' \
--health-route=/health \
--predict-route=/predict
Sostituisci quanto segue:
- VERSION: il nome della versione del modello
- REGION: la regione dell'endpoint di previsione di AI Platform in cui hai creato il modello
- MODEL: il nome del modello
- IMAGE_URI: l'URI dell'immagine container in Artifact Registry, che deve iniziare con REGION (come descritto nei requisiti per la pubblicazione delle immagini container)
Invio di richieste di previsione
Per inviare una richiesta di previsione online alla versione del tuo modello, segui la guida alla previsione online: questa procedura funziona allo stesso modo indipendentemente dal fatto che utilizzi o meno un container personalizzato.
Tuttavia, quando utilizzi un container personalizzato, il corpo di ogni richiesta di previsione non deve soddisfare i requisiti del corpo della richiesta per le versioni del modello che utilizzano una versione del runtime. Ti consigliamo, se possibile, di progettare il container in modo che i corpi delle richieste presentino il formato standard. Scopri di più sui requisiti previsti per richieste e risposte per i container personalizzati.
Passaggi successivi
Per un esempio di creazione di un'immagine container e di utilizzo con AI Platform Prediction, consulta Getting started: Serving PyTorch predictions with a custom container.
Per informazioni su tutti gli aspetti da considerare quando progetti un container personalizzato da utilizzare con AI Platform Prediction, leggi Requisiti per i container personalizzati.
Per informazioni su come modificare le autorizzazioni di un container per accedere ad altri servizi Google Cloud, consulta Utilizzo di un account di servizio personalizzato.