Requisiti per i container personalizzati

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 stato 503 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'altra 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
  • Se non imposti deploymentUri quando crei una versione del modello: una stringa vuota
  • Se imposti il campo deploymentUri quando crea una versione del modello: un URI Cloud Storage (a partire dal con gs://) specificando una directory in un bucket gestito AI Platform Prediction
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