Per utilizzare un container personalizzato per la pubblicazione delle previsioni, devi fornire AI Platform Prediction con un'immagine container Docker che esegue un server HTTP. Questo che descrive i requisiti che un'immagine container deve soddisfare per essere compatibili con AI Platform Prediction. Il documento descrive inoltre come AI Platform Prediction interagisce con il container personalizzato una volta avviato in esecuzione. In altre parole, il presente documento descrive gli aspetti da considerare per progettando un'immagine container da utilizzare con AI Platform Prediction.
Per informazioni dettagliate sull'utilizzo di un'immagine container personalizzata per la pubblicazione di previsioni, consulta Utilizzare un container personalizzato.
Requisiti delle immagini container
Quando l'immagine container Docker viene eseguita come container, quest'ultimo deve eseguire HTTP(S). Nello specifico, il container deve ascoltare e rispondere all'attività controlli di integrità, controlli di integrità e richieste di previsione. Le seguenti sottosezioni a descrivere questi requisiti in dettaglio.
È possibile implementare il server HTTP in qualsiasi modo, utilizzando qualsiasi linguaggio di programmazione, purché soddisfi i requisiti riportati in questa sezione. Ad esempio, puoi scrivere un server HTTP personalizzato utilizzando un framework web come Flask o utilizzare il machine learning (ML) che gestisce un software che esegue un server HTTP, come TensorFlow Pubblicazione, TorchServe o KFServing del server.
Esecuzione del server HTTP
Puoi eseguire un server HTTP utilizzando un file ENTRYPOINT
istruzione, un CMD
istruzioni,
nel Dockerfile che usi per creare l'immagine container. Informazioni
l'interazione tra CMD
e
ENTRYPOINT
.
In alternativa, puoi specificare il campo containerSpec.command
e containerSpec.args
quando crei la versione del modello per eseguire l'override dei campi
rispettivamente ENTRYPOINT
e CMD
dell'immagine. Se specifichi uno di questi campi,
si utilizza un'immagine container che altrimenti non soddisferebbe i requisiti a causa
un ENTRYPOINT
o CMD
incompatibile (o inesistente).
Indipendentemente da quale sia il comando eseguito dal container all'avvio, assicurati che questo comando del punto di ingresso viene eseguito all'infinito. Ad esempio, non eseguire un comando che avvia un server HTTP in background e poi si chiude; Se sì, allora il container uscirà subito dopo l'avvio.
Il tuo server HTTP deve rimanere in ascolto delle richieste su 0.0.0.0
, su una porta del tuo
scelta. Quando crei una versione del modello, specifica questa porta nel
containerSpec.ports
.
Per informazioni su come il contenitore può accedere a questo valore, leggi la sezione di questo
documento sulla variabile di ambiente AIP_HTTP_PORT
.
Controlli di attività
AI Platform Prediction esegue un controllo di attività quando il container inizia per assicurarti che il server sia in esecuzione. Durante la creazione della versione , AI Platform Prediction utilizza un'attività TCP probe per tentare di stabilire una connessione TCP al container su alla porta configurata. Il probe effettua fino a quattro tentativi per stabilire una connessione, attendendo 10 secondi dopo ogni errore. Se la sonda non ha ancora stabilito a questo punto, AI Platform Prediction riavvia il container.
Il tuo server HTTP non deve eseguire alcun comportamento speciale per gestire questi controlli. Finché resta in ascolto delle richieste sulla porta configurata, Il probe di attività è in grado di stabilire una connessione.
Controlli di integrità
AI Platform Prediction esegue a intermittenza controlli di integrità sul server HTTP
mentre è in esecuzione per assicurarti che sia pronto a gestire le richieste di previsione.
Il servizio utilizza un probe di integrità per inviare richieste GET
HTTP a un
del controllo di integrità sul server. Specifica questo percorso nel campo routes.health
.
campo se
crei una versione del modello. Per scoprire in che modo il container può accedere a questo valore,
leggi la sezione di questo documento sull'ambiente AIP_HEALTH_ROUTE
la variabile personalizzata.
Configura il server HTTP in modo che risponda a ogni richiesta di controllo di integrità come segue:
Se il server è pronto a gestire le richieste di previsione, rispondi al prompt. richiesta di controllo di integrità con codice di stato
200 OK
. I contenuti della risposta il corpo non conta; AI Platform Prediction li ignora.Questa risposta indica che il server è integro.
Se il server non è pronto a gestire le richieste di previsione, non rispondere. alla richiesta di controllo di integrità o rispondere con un codice di stato, ad eccezione di
200 OK
. Ad esempio, rispondi con il codice di stato503 Service Unavailable
.Questa risposta indica che il server non è integro.
Se il probe di integrità riceve una risposta non integro dal server, invia fino a tre controlli di integrità aggiuntivi a intervalli di 10 secondi. Durante questo periodo, AI Platform Prediction considera comunque il tuo server integro. Se la sonda riceve una risposta integro a uno qualsiasi di questi controlli, il probe torna alla sua programmazione intermittente di controlli di integrità. Tuttavia, se il probe riceve 4 risposte non integre consecutive, poi AI Platform Prediction si interrompe l'indirizzamento del traffico di previsione al container. (Se la versione del modello è scalata usano più nodi di previsione, poi AI Platform Prediction instrada la previsione ad altri container integri).
AI Platform Prediction non riavvia il container. il probe di integrità continua a inviare richieste di controllo di integrità intermittente al server in stato non integro. Se riceve una risposta sana, poi contrassegna quel container come integro inizia a instradare di nuovo il traffico di previsione.
Indicazioni pratiche
In alcuni casi, è sufficiente che il server HTTP nel tuo contenitore abbia sempre
rispondi con il codice di stato 200 OK
ai controlli di integrità. Se il container carica
prima di avviare il server, il container non è integro durante
e durante i periodi in cui si verifica un errore del server HTTP. Tutti gli altri
volte, risponde in modo sano.
Per una configurazione più sofisticata, potresti voler progettare intenzionalmente server HTTP per rispondere ai controlli di integrità con stato non integro in determinati volte. Ad esempio, potresti voler bloccare il traffico di previsione verso un nodo per un periodo di tempo, in modo che il container possa eseguire la manutenzione.
Richieste di previsione
Quando un client invia una richiesta projects.predict
all'API AI Platform Training and Prediction, AI Platform Prediction inoltra questa richiesta come
Richiesta HTTP POST
a un percorso di previsione configurabile sul tuo server. Specifica
questo percorso nel routes.predict
campo
quando crei una versione del modello. Per informazioni su come il container può accedere
consulta la sezione di questo documento relativa all'attributo AIP_PREDICT_ROUTE
variabile di ambiente.
AI Platform Prediction non convalida le richieste di previsione e le risposte. questo elemento passa ogni richiesta di previsione senza modifiche al server HTTP nel tuo container, e trasmette le risposte del server al client.
Ogni richiesta di previsione e risposta deve avere dimensioni inferiori a 1,5 MB. Tuttavia, non sono tenuti a seguire gli altri requisiti per la richiesta organismi e requisiti per organismi di risposta; questi elementi I requisiti si applicano solo alle versioni del modello che non utilizzano un container personalizzato. Quando utilizzi un container personalizzato, il corpo di richiesta e risposta può assumere qualsiasi in un modulo di testo.
Tuttavia, ti consigliamo comunque di progettare il tuo server HTTP in modo che sia conforme alle ai requisiti di richiesta e risposta descritti nei link precedenti. In caso contrario, non c'è alcuna garanzia che altre funzionalità di AI Platform Prediction, come logging, monitoraggio e Spiegazioni IA: funzioneranno correttamente.
Requisiti di pubblicazione delle immagini container
Devi eseguire il push dell'immagine container in Artifact Registry in per usarlo con AI Platform Prediction. Scopri come eseguire il push di un container immagine in Artifact Registry.
In particolare, devi eseguire il push dell'immagine container a un repository che soddisfi le i requisiti relativi a località e autorizzazioni.
Località
Il repository deve utilizzare una proprietà
regione che corrisponde
endpoint regionale in cui prevedi di creare un
alla versione del modello. Ad esempio, se prevedi di creare una versione del modello
Endpoint us-central1-ml.googleapis.com
, seguito dal nome completo del container
l'immagine deve iniziare con us-central1-docker.pkg.dev/
.
Non utilizzare un repository multiregionale per l'immagine container.
Autorizzazioni
AI Platform Prediction deve disporre dell'autorizzazione per eseguire il pull dell'immagine container quando
per creare una versione del modello. Nello specifico, il servizio AI Platform
di accesso deve avere
autorizzazioni del ruolo Lettore Artifact Registry
(roles/artifactregistry.reader
)
per il repository dell'immagine container.
Se hai eseguito il push dell'immagine container nello stesso progetto Google Cloud in cui utilizzi AI Platform Prediction, non dovrai configurare autorizzazioni aggiuntive. Le autorizzazioni predefinite concesse all'agente di servizio sono sufficienti.
Se invece hai eseguito il push dell'immagine container a un progetto Google Cloud da quello in cui utilizzi AI Platform Prediction devi concedere il ruolo Lettore Artifact Registry per Artifact Registry repository dell'agente di servizio AI Platform.
Accesso agli artefatti del modello
Quando crei una versione del modello senza un container personalizzato, devi specificare
l'URI di una directory Cloud Storage con model
elementi come deploymentUri
campo. Quando
crei una versione del modello con un container personalizzato, fornendo artefatti del modello
Cloud Storage è facoltativo.
Se l'immagine container include gli artefatti del modello che devi pubblicare
non c'è bisogno di caricare file da Cloud Storage.
Tuttavia, se fornisci gli artefatti del modello specificando deploymentUri
, il container deve caricare questi artefatti all'avvio dell'esecuzione.
Quando AI Platform Prediction avvia il container, viene impostato il valore AIP_STORAGE_URI
a un URI Cloud Storage che inizia con gs://
.
Il comando entrypoint del container può scaricare la directory specificata da questo
per accedere agli artefatti del modello.
Tieni presente che il valore della variabile di ambiente AIP_STORAGE_URI
non è
identico all'URI Cloud Storage specificato nella
deploymentUri
quando crei la versione del modello. Piuttosto,
AIP_STORAGE_URI
punta a una copia della directory dell'artefatto del modello in un
in un altro bucket Cloud Storage gestito da AI Platform Prediction.
AI Platform Prediction compila questa directory quando crei una versione del modello.
Non puoi aggiornare il contenuto della directory. Se vuoi usare un nuovo modello
, devi creare una nuova versione del modello.
L'account di servizio utilizzato dal container
default ha l'autorizzazione
per leggere da questo URI. Se invece specifichi un servizio personalizzato
account quando crei un modello.
AI Platform Prediction concede automaticamente il servizio specificato
il Visualizzatore oggetti Storage (roles/storage.objectViewer
)
per gli indirizzi IP
nel bucket Cloud Storage.
Utilizza qualsiasi libreria che supporti le impostazioni Impostazioni predefinite dell'applicazione (ADC) per caricare artefatti del modello; non devi configurare esplicitamente l'autenticazione.
Poiché il container supporta ADC per l'agente di servizio AI Platform, o un account di servizio personalizzato, se disponi specificato, può anche accedere a qualsiasi altro servizio Google Cloud che account di servizio dispone delle autorizzazioni per.
Variabili di ambiente disponibili nel container
Durante l'esecuzione, il comando del punto di ingresso del container può fare riferimento all'ambiente le variabili configurate manualmente, nonché le variabili di ambiente impostata automaticamente da AI Platform Prediction. Questa sezione descrive ogni modo che ti consente di impostare le variabili di ambiente, oltre a fornire dettagli impostate automaticamente da AI Platform Prediction.
Variabili impostate nell'immagine container
Per impostare le variabili di ambiente nell'immagine container quando la crei, utilizza
ENV
di Docker
istruzioni per l'uso.
Non impostare variabili di ambiente che iniziano con il prefisso AIP_
.
Il comando del punto di ingresso del container può utilizzare queste variabili di ambiente, non possono farvi riferimento in nessuna API della versione del modello campi.
Variabili impostate da AI Platform Prediction
Quando AI Platform Prediction avvia l'esecuzione del container, imposta quanto segue
variabili di ambiente nell'ambiente del container. Ogni variabile inizia con
il prefisso AIP_
. Non impostare manualmente variabili di ambiente che utilizzano questo
.
Il comando del punto di ingresso del container può accedere a queste variabili. Per sapere quali
Anche i campi di AI Platform Training e API Prediction possono fare riferimento a queste variabili. Leggi
Riferimento API per
ContainerSpec
.
Nome variabile | Valore predefinito | Come configurare il valore | Dettagli |
---|---|---|---|
AIP_ACCELERATOR_TYPE | Non impostato | Quando crei una versione del modello, imposta acceleratorConfig.type
. |
Se applicabile, questa variabile specifica il tipo di acceleratore utilizzato l'istanza della macchina virtuale (VM) su cui è in esecuzione il container. |
AIP_FRAMEWORK | CUSTOM_CONTAINER |
Non configurabile | |
AIP_HEALTH_ROUTE | /v1/models/MODEL/versions/VERSION In questa stringa, sostituisci MODEL con il valore del AIP_MODEL_NAME e sostituisci VERSION con
il valore della variabile AIP_VERSION_NAME . |
Quando crei una versione del modello, imposta routes.health
. |
Questa variabile specifica il percorso HTTP sul container AI Platform Prediction invia controlli di integrità a. |
AIP_HTTP_PORT | 8080 |
Quando crei una versione del modello, imposta containerSpec.ports
. La prima voce in questo campo diventa il valore
AIP_HTTP_PORT . |
Il servizio AI Platform Prediction invia controlli di attività, controlli di integrità e a questa porta sul container. HTTP del container il server deve rimanere in ascolto delle richieste su questa porta. |
AIP_MACHINE_TYPE | Nessun valore predefinito, deve essere configurato | Quando crei una versione del modello, imposta machineType
. |
Questa variabile specifica il tipo di VM in esecuzione dal container attiva. |
AIP_MODE | PREDICTION |
Non configurabile | Questa variabile indica che il container è in esecuzione su AI Platform Prediction per fornire previsioni online. Puoi utilizzare questo variabile di ambiente per aggiungere logica personalizzata al container, può essere eseguito in più ambienti di elaborazione, ma utilizza solo un certo codice attivi quando viene eseguita su AI Platform Prediction. |
AIP_MODE_VERSION | 1.0.0 |
Non configurabile | Questa variabile indica la versione del container personalizzato (questo documento) che AI Platform Prediction prevede containerizzato. Questo documento viene aggiornato in base al controllo delle versioni semantico. |
AIP_MODEL_NAME | Nessun valore predefinito, deve essere configurato | Quando crei un modello (l'elemento padre della versione del modello che utilizza il parametro
container), specifica name
. |
Il valore non include il parametro
il prefisso projects/PROJECT_ID/models/
L'API AI Platform Training and Prediction produce l'output. |
AIP_PREDICT_ROUTE | /v1/models/MODEL/versions/VERSION:predict In questa stringa, sostituisci MODEL con il valore del AIP_MODEL_NAME e sostituisci VERSION con
il valore della variabile AIP_VERSION_NAME . |
Quando crei una versione del modello, imposta routes.predict
. |
Questa variabile specifica il percorso HTTP sul container AI Platform Prediction inoltra le previsioni richieste. |
AIP_PROJECT_NUMBER | Il progetto numero del progetto Google Cloud in cui stai utilizzando AI Platform Prediction | Non configurabile | |
AIP_STORAGE_URI |
|
Non configurabile | Questa variabile specifica la directory che contiene una copia degli artefatti del modello, se applicabile. |
AIP_VERSION_NAME | Nessun valore predefinito, deve essere configurato | Quando crei una versione del modello, imposta name
. |
Il valore non include il parametro
projects/PROJECT_ID/models/MODEL/versions/
il prefisso prodotto nell'output dall'API AI Platform Training and Prediction. |
Variabili impostate nella risorsa Versione
Quando crei una versione del modello, puoi impostare altre variabili di ambiente in
il container.env
.
Il comando del punto di ingresso del container può accedere a queste variabili. Per sapere quali
Anche i campi di AI Platform Training e API Prediction possono fare riferimento a queste variabili. Leggi
Riferimento API per
ContainerSpec
.
Passaggi successivi
- Scopri di più sulla pubblicazione di previsioni utilizzando un container.
- Per provare a fornire previsioni con un container personalizzato specifico, leggi il tutorial sulla pubblicazione Previsioni di PyTorch.