Per eseguire il deployment dei modelli addestrati su AI Platform Prediction e utilizzarli per la pubblicazione le previsioni, devi prima esportarle nel formato SavedModel di TensorFlow.
Questa pagina illustra alcuni aspetti importanti da considerare durante la creazione SavedModel. Per informazioni più dettagliate sull'esportazione in un SavedModel, consulta La guida di TensorFlow di SavedModels e la guida di TensorFlow per salvare Keras di machine learning. Per dettagli su come eseguire il deployment del SavedModel in AI Platform Prediction per la pubblicazione previsioni, leggi la guida al deployment modelli di machine learning. Per informazioni di base generali su il processo di previsione, consulta la panoramica della previsione .
Routine di previsione personalizzate
In alternativa all'implementazione di un modello SavedModel, puoi anche creare e implementare una routine di previsione personalizzata. Una routine di previsione personalizzata può combinare SavedModel (o un modello addestrato salvato in modo diverso) con altro addestramento artefatti e codice Python forniti per personalizzare il modo in cui AI Platform Prediction gestisce le richieste di previsione. Ad esempio, puoi sfruttare questa flessibilità pre-elaborare l'input della previsione prima che il modello faccia una previsione.
Per saperne di più, consulta la guida alle routine di previsione personalizzata.
Informazioni sui grafici di addestramento e sui grafici di pubblicazione
Dopo aver addestrato il modello ed esportato come SavedModel, ci sono alcune importanti passaggi da seguire per ottenere previsioni.
Esistono alcune differenze fondamentali tra un grafico di addestramento e un grafico di pubblicazione. I grafici di addestramento contengono caratteristiche non adatte alla pubblicazione, quali:
- lettori di file
- code di input
- strati dropout
- funzioni di perdita
- ottimizzatori
Poiché il processo di pubblicazione delle previsioni ha esigenze diverse rispetto al processo di addestramento, è buona prassi esportare un grafico separato specificamente per la pubblicazione delle previsioni.
Informazioni su SavedModel
SavedModel è il formato consigliato di TensorFlow per il salvataggio dei modelli, per eseguire il deployment di modelli TensorFlow addestrati AI Platform Prediction. L'esportazione del modello addestrato come SavedModel consente di salvare il grafico di addestramento con gli asset, le variabili e i metadati in un formato che Può essere utilizzato e ripristinato da AI Platform Prediction per le previsioni.
Dopo aver esportato un SavedModel, viene visualizzata una directory SavedModel che contiene le seguenti:
- grafici di addestramento, salvati Buffer di protocollo SavedModel
- file esterni, chiamati asset
- variabili, che vengono salvate come file di checkpoint
Quando esegui il deployment di SavedModel in AI Platform Prediction, devi includere
l'intera directory SavedModel, non solo il file buffer del protocollo SavedModel
che contiene il grafo e i relativi metadati. Solitamente questo file ha un'estensione di
.pb
o .pbtxt
.
SavedModel ti consente di salvare più versioni di un grafo che condividono gli stessi asset e le stesse variabili (o checkpoint). Ad esempio, potresti voler sviluppare due versioni dello stesso grafico: una da eseguire su CPU e un'altra su GPU.
Scopri di più sulla struttura di un SavedModel Google Cloud.
Esportazione da varie API TensorFlow
Esistono diversi modi per esportare SavedModels dal codice di addestramento TensorFlow. Nell'elenco che segue sono descritti i diversi modi a disposizione per vari API TensorFlow:
- Se hai utilizzato Keras per l'addestramento, utilizza
tf.keras.Model.save
per esportare un SavedModel - Se utilizzi uno strumento per la stima per l'addestramento, utilizza
tf.estimator.Estimator.export_saved_model
per esportare un SavedModel. - Altrimenti, usa
tf.saved_model.save
oppure usatf.saved_model.SavedModelBuilder
(tf.compat.v1.saved_model.Builder
in TensorFlow 2).
Compatibilità con AI Explanations
Se vuoi utilizzare AI Explains al tuo modello, scopri i requisiti aggiuntivi per SavedModel.
Controllare e modificare le dimensioni del modello
Il tuo SavedModel deve avere dimensioni massime pari a 500 MB se vuoi eseguirlo in una versione del modello che utilizza un tipo di macchina legacy (MLS1). Può essere fino a 10 GB se utilizzi un tipo di macchina Compute Engine (N1). Scopri di più sulla macchina tipi di previsioni online.
Questo limite di dimensioni include tutti gli asset e le variabili nella directory SavedModel, non solo il file del buffer del protocollo SavedModel (ovvero saved_model.pb
o saved_model.pbtxt
).
Per controllare le dimensioni del modello durante lo sviluppo, esporta un SavedModel e controlla le dimensioni del file della directory.
Se il SavedModel supera il limite di 500 MB:
- Assicurati di includere solo ciò che ti serve per la previsione nel grafico esportato.
- Riduci le dimensioni del modello riducendo la precisione dei pesi i tuoi dati.
Se segui questi passaggi, puoi ridurre il modello salvato al di sotto del limite di 500 MB e diminuire la latenza delle previsioni. I vantaggi includono una migliore delle prestazioni senza dover richiedere e attendere un aumento della quota.
Se hai ancora bisogno di una quota aggiuntiva, scopri come richiedere un aumento della quota.
Crea un grafico di previsione ottimale
L'addestramento produce più checkpoint che non vengono utilizzati per la pubblicazione delle predizioni. Assicurati di caricare una directory priva di questi elementi, contenente solo il modello da implementare.
Ad esempio, se esporti i riepiloghi durante il processo di addestramento per in TensorBoard, ti consigliamo di assicurarti che non siano inclusi il tuo SavedModel. Questi riepiloghi TensorBoard non sono necessari per grafico di previsione.
Riduci la precisione per ridurre le dimensioni del file
Ridurre la precisione delle variabili e dei dati di input è un compromesso che riduce le dimensioni del modello in modo significativo con un certo costo in termini di accuratezza della previsione. I dati ad alta precisione sono archiviati in modo meno efficiente rispetto a quelli a bassa precisione. Sebbene i dati a bassa precisione siano una fonte di rumore, una rete neurale può "ignorare" questo rumore e produrre comunque previsioni abbastanza precise.
Se l'utilizzo di questi metodi comporta una perdita di accuratezza nella previsione troppo elevata per il tuo caso d'uso, prova a richiedere un aumento della quota.
Riduci le dimensioni del file riducendo le dimensioni dei pesi, che per impostazione predefinita sono numeri in virgola mobile difficili da memorizzare in modo efficiente. Questi pesi memorizzati in modo inefficiente contribuiscono maggiormente alla dimensione complessiva del file del modello.
Quantifica i dati continui per ridurre le dimensioni del modello fino al 75% senza sacrificare una quantità significativa di accuratezza.
Utilizzare variabili meno precise. Ad esempio, modifica il tipo di dati (
dtype
) daint64
aint32
.Riduci le dimensioni di altre funzionalità di input nella cartella
assets
di Directory SavedModel. Ad esempio, utilizza vocabolari di dimensioni inferiori per i dati text.Scopri di più sulle tecniche per ottimizzare i modelli TensorFlow per il servizio e consulta esempi di applicazione di queste tecniche. Le tecniche collegate si applicano solo se utilizzi TensorFlow 1.
Strumenti per ispezionare i modelli salvati e i grafici
TensorFlow offre un'interfaccia a riga di comando utilizzabile per il controllo di integrità
aspetti del SavedModel, come la formattazione dell'input e SignatureDefs
.
Scopri di più sull'interfaccia a riga di comando SavedModel.
Lo strumento di trasformazione del grafico in TensorFlow può essere utilizzato per ottimizzare il deployment. Sebbene l'utilizzo di questo strumento sia spiegato nel contesto del deployment mobile, puoi utilizzarlo anche per ottimizzare i modelli per il deployment non mobile.
Creazione di funzioni di input di pubblicazione
Se esporti il SavedModel utilizzando
tf.keras.Model.save
,
non dovrai specificare una funzione di input.
In caso contrario, definisci una funzione di input per il servizio quando esporti il modello SavedModel. Tu può farlo nei seguenti punti in relazione al processo di addestramento complessivo:
- Alla fine del processo di addestramento.
- Come processo separato al termine dell'addestramento.
I seguenti esempi mostrano come eseguire questa operazione per uno strumento di stima addestrato. Espandi informazioni sulla pubblicazione di funzioni di input per Strumenti di stima.
Creare un grafico di pubblicazione durante l'addestramento
Questo accade in genere alla fine del processo di addestramento, ma rimane comunque correlato all'addestramento.
Definisci una funzione di input di pubblicazione. Nella funzione, assicurati che la dimensione più esterna degli elementi sia
None
. Questo valore corrisponde alla dimensione del batch e viene mostrato di seguito quando si definisce il valore degli elementi nelle caratteristiche indicate utilizzandotf.placeholder
. Il seguente codice di esempio proviene dal nostro campione del censimento:Esporta un SavedModel dal tuo strumento di stima utilizzando
tf.estimator.Estimator.export_saved_model
, passando il percorso del modello come parametroexport_dir_base
e nome della funzione di input di pubblicazione come parametroserving_input_fn
. Nell'esempio del censimento, il tipo di strumento di stima utilizzato ètf.estimator.DNNLinearCombinedClassifier
Creare il grafico di pubblicazione separatamente dall'addestramento
Se hai già addestrato il modello, puoi ottenere le previsioni senza bisogno di addestramento. Questa procedura è molto simile alla creazione di un grafico di pubblicazione
addestramento. La differenza principale è che crei il grafico di pubblicazione in una tabella
Script Python che esegui al termine dell'addestramento. L'idea di base è
creare Estimator
con lo stesso model_dir
usato nell'addestramento, quindi
chiamata
tf.estimator.Estimator.export_saved_model
come descritto nella sezione precedente.
Definisci una funzione di input di servizio nello script Python, in modo simile a come la definiamo durante l'addestramento:
Quando crei il
Estimator
, assicurati di impostare il parametromodel_dir
sia lo stesso usato per l'addestramento. In questo modo vengono eseguiti i punti di controllo modello salvato in precedenza disponibile perEstimator
.Infine, utilizza
Estimator
per chiamaretf.estimator.Estimator.export_saved_model
passando il percorso del modello come parametroexport_dir_base
e il nome della funzione di input di pubblicazione come parametroserving_input_fn
.
Tag e firme TensorFlow
Se esporti un SavedModel da
tf.keras
o da un modello TensorFlow,
stimatore,
il grafico esportato è pronto per la pubblicazione per impostazione predefinita.
In altri casi, quando crei un grafo di previsione di TensorFlow, devi specificare i valori corretti per i tag e le firme del grafo. TensorFlow offre per questi valori di tag e firma, utilizzate per i seguenti scopi:
- Per selezionare un grafico nel SavedModel per fornire le previsioni
- Per indicare che stai creando una firma di previsione per la tua previsione. grafico
Le firme definiscono gli input e gli output per il grafico. Quando crei un
per il grafico di previsione, devi specificare una firma valida
costante
come parametro method_name
in
build_signature_def
.
Per la previsione, la scelta migliore è in genere PREDICT_METHOD_NAME
.
Devi utilizzare un tag per specificare quale grafo nel tuo SavedModel viene utilizzato per fornire le predizioni. In add_meta_graph_and_variables
, aggiungi
tag_constants.SERVING
al tuo elenco tags
.
Guarda un esempio di come creare un grafico di previsione utilizzando le costanti corrette per i tag e le firme.
Passaggi successivi
- Scopri come eseguire il deployment del modello esportato in AI Platform Prediction per generare previsioni.