Utilizzo di un container personalizzato

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:

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:

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 campo args, leggi il riferimento API per ContainerSpec.

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 campo command, leggi il riferimento API per ContainerSpec.

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 e args. Per scoprire di più su come altri campi possono fare riferimento a queste variabili di ambiente, leggi il riferimento API per ContainerSpec.

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:

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:

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