Utilizzo di un container personalizzato

Per personalizzare il modo in cui AI Platform Prediction genera le previsioni online dal tuo modello di machine learning (ML) addestrato, puoi specificare un contenitore 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 di versione di runtime standard per fornire previsioni da artefatto del modello compatibile.

Ti consigliamo di utilizzare un contenitore personalizzato per uno dei seguenti motivi:

  • per generare previsioni da un modello ML addestrato utilizzando un framework diverso da TensorFlow, scikit-learn o XGBoost
  • per pre-elaborare le richieste di previsione o post-elaborare le previsioni generate dal tuo modello
  • per eseguire un server di previsione scritto nel linguaggio di programmazione che preferisci
  • per installare le dipendenze che vuoi utilizzare per personalizzare la previsione

Questa guida descrive come creare una versione del modello che utilizza un contenitore personalizzato. Non fornisce istruzioni dettagliate su come progettare e creare un'immagine container Docker. Per esaminare un esempio di creazione di un'immagine container e utilizzarla con AI Platform Prediction, leggi Per iniziare: pubblicazione di previsioni PyTorch con un container personalizzato.

Per utilizzare un contenitore personalizzato, devi utilizzare un endpoint regionale e un tipo di macchina Compute Engine (N1) per la versione del 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 del container. Questa immagine del contenitore deve soddisfare i requisiti descritti nella sezione Requisiti per i container personalizzati.

Se prevedi di utilizzare un'immagine contenitore 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 delle immagini container.

Per conoscere le nozioni di base per progettare e creare un'immagine del contenitore Docker, consulta la guida introduttiva della documentazione di Docker.

Esegui il push dell'immagine del contenitore in Artifact Registry

Esegui il push dell'immagine container in un repository Artifact Registry che soddisfi i requisiti di pubblicazione delle immagini container.

Scopri come eseguire il push di un'immagine container in Artifact Registry.

Creazione di un modello e di una versione del modello

Specifica diverse opzioni di configurazione quando crei un modello per assicurarti che le eventuali versioni del modello che crei in un secondo momento siano compatibili con il tuo contenitore personalizzato.

Poi, specifica la maggior parte della configurazione del contenitore 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 regionale corrispondente alla regione del repository Artifact Registry in cui è archiviata l'immagine del contenitore. Per scoprire di più, leggi i requisiti per la pubblicazione delle immagini container.

Creare una versione del modello

Quando crei una versione del modello che utilizza un contenitore personalizzato, configura i seguenti campi dell'API specifici del contenitore, oltre agli altri campi specificati per una versione del modello:

Le sezioni seguenti descrivono come configurare questi campi.

Inoltre, tieni presente le seguenti differenze specifiche del contenitore per la configurazione di altri campi dell'API:

Configura Version.container

Devi specificare un messaggio ContainerSpec nel campo Version.container. In questo messaggio, puoi specificare i seguenti campi secondari. Se utilizzi il comando gcloud beta ai-platform versions create per creare la versione del modello, puoi utilizzare un flag a riga di comando per specificare ogni sottocampo.

image (obbligatorio)

L'URI di Artifact Registry dell'immagine container.

Flag gcloud CLI: --image

command (facoltativo)

Un array di un file eseguibile e di argomenti per eseguire l'override del ENTRYPOINT del contenitore. Per scoprire di più su come formattare questo campo e su come interagisce con il campo args, leggi la documentazione di riferimento dell'API per ContainerSpec.

Flag gcloud CLI: --command

args (facoltativo)

Un array di un file eseguibile e degli argomenti per eseguire l'override del valore CMD del contenitore. Per scoprire di più su come formattare questo campo e su come interagisce con il campo command, leggi la documentazione di riferimento dell'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 indicata o su 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 il comando del punto di ingresso del container, nonché i campi command e args, possono fare riferimento. Per scoprire di più su come altri campi possono fare riferimento a queste variabili di ambiente, consulta il riferimento all'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 configurazione. Scopri di più sull'utilizzo di queste variabili di ambiente in questi campi e nel comando entrypoint del contenitore.

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 RouteMap messaggio nel campo Version.routes. In 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 a riga di comando per specificare ogni sottocampo.

health (facoltativo)

Il percorso sul server HTTP del contenitore in cui vuoi che AI Platform Prediction invii i controlli di stato.

Se non specifichi questo campo, per impostazione predefinita viene utilizzato /v1/models/MODEL/versions/VERSION, dove MODEL e VERSION vengono sostituiti rispettivamente dai nomi del tuo modello e della versione del modello.

Flag gcloud CLI: --health-route

predict (facoltativo)

Il percorso sul server HTTP del contenitore in cui vuoi che AI Platform Prediction inoltri le richieste di previsione.

Se non specifichi questo campo, per impostazione predefinita viene utilizzato /v1/models/MODEL/versions/VERSION:predict, dove MODEL e VERSION vengono sostituiti rispettivamente dai nomi del tuo 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 la 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 modello, segui la guida alla previsione online: questa procedura è la stessa indipendentemente dall'utilizzo o meno di un contenitore personalizzato.

Tuttavia, quando utilizzi un contenitore 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 di runtime. Detto questo, ti consigliamo di progettare il tuo contenitore in modo che preveda corpi di richiesta con il formato standard, se possibile. Scopri di più sui requisiti per le richieste e le risposte di previsione per i container personalizzati.

Passaggi successivi