Il runtime TensorFlow ottimizzato ottimizza i modelli per un'inferenza più rapida e a costi inferiori basato su open source container predefiniti di TensorFlow Serving. Il runtime di TensorFlow ottimizzato questo mediante l'utilizzo delle tecnologie di proprietà e open source di Google.
Più grande è un modello di machine learning (ML), maggiori sono i costi per la sua pubblicazione. Con il runtime TensorFlow ottimizzato, il costo di pubblicazione del modello ML e la velocità di inferenza possono essere inferiori rispetto all'utilizzo di un runtime TensorFlow basato su open source. Per sfruttare il runtime TensorFlow ottimizzato quando utilizzi Vertex AI Prediction, non è necessario modificare il codice. Puoi invece scegliere un'immagine container di pubblicazione che la utilizzi.
Il runtime TensorFlow ottimizzato è compatibile con le versioni precedenti container predefiniti di TensorFlow Serving. Se esegui la corsa Modelli TensorFlow con un container predefinito, puoi passare a un runtime TensorFlow ottimizzato il container con il minimo sforzo.
Mentre le prestazioni del modello migliorano quando utilizzi il runtime di TensorFlow ottimizzato, devono aspettarsi che l'impatto sulle prestazioni varia a seconda dei tipi di modelli.
Panoramica del runtime TensorFlow ottimizzato
Il runtime TensorFlow ottimizzato utilizza ottimizzazioni dei modelli e nuove tecnologie proprietarie di Google per migliorare la velocità e ridurre il costo dell'inferenza rispetto ai container di TensorFlow Serving predefiniti basati su open source.
L'ottimizzazione avviene quando Vertex AI carica un modello, prima che venga eseguito. Dopo aver eseguito il deployment di un modello in un endpoint, il log di ottimizzazione viene aggiunto al log di previsione. Puoi utilizzare questi log per risolvere i problemi che potrebbero verificarsi durante l'ottimizzazione.
I seguenti argomenti descrivono i miglioramenti all'ottimizzazione nel runtime TensorFlow ottimizzato.
Ottimizzazioni del modello
Le seguenti tre ottimizzazioni del modello sono incluse nel runtime di TensorFlow ottimizzato.
Precompilazione XLA del modello
Quando viene eseguito un modello TensorFlow, tutte le operazioni vengono eseguite singolarmente. L'esecuzione di singole operazioni comporta un piccolo overhead. Il runtime TensorFlow ottimizzato può rimuovere parte di questo overhead sfruttando XLA per precompilare tutto o parte del grafo TensorFlow in kernel più grandi.
La precompilazione del modello XLA è facoltativa e disattivata per impostazione predefinita. Per scoprire come abilita la precompilazione XLA del modello durante un deployment, consulta Abilitare XLA del modello precompilazione.
Ottimizzazioni della compressione del modello
Il runtime TensorFlow ottimizzato può eseguire alcuni modelli più velocemente con un impatto ridotto sulla precisione del modello, consentendo l'ottimizzazione della compressione del modello. Quando l'ottimizzazione della compressione del modello è attivata, il runtime TensorFlow ottimizzato utilizza tecniche come la quantizzazione e la potatura dei pesi per eseguire i modelli più velocemente.
La funzionalità di ottimizzazione della compressione del modello è disattivata per impostazione predefinita. Per scoprire come attivare l'ottimizzazione della compressione del modello durante un deployment, consulta Attivare l'ottimizzazione della compressione del modello.
Prestazioni dei modelli tabulari migliorate sulle GPU
I modelli tabulari di TensorFlow vengono in genere eseguiti su CPU perché non possono utilizzare gli acceleratori in modo efficace. Il runtime TensorFlow ottimizzato risolve il problema eseguendo le parti del modello con un elevato costo computazionale sulle GPU. Il resto del modello viene eseguito sulle CPU minimizzando la comunicazione tra host e acceleratore. Eseguire le parti costose del modello su GPU e il resto su CPU consente di pubblicare modelli tabulari più velocemente e a un costo inferiore.
Il runtime TensorFlow ottimizzato ottimizza la fornitura dei seguenti tipi di modelli tabulari.
Ottimizzazione automatica del modello per Cloud TPU
I container di runtime TensorFlow predefiniti che supportano Le Cloud TPU possono partizionare e ottimizzare automaticamente i tuoi modelli per l'esecuzione su TPU. Per saperne di più, consulta Eseguire il deployment su Cloud TPU.
Utilizzo del runtime TensorFlow (TFRT)
Il runtime TensorFlow ottimizzato può utilizzare il runtime di TensorFlow (TFRT). TFRT utilizza in modo efficiente le CPU con host multithread, supporta i modelli di programmazione asincrona ed è ottimizzato per l'efficienza delle operazioni di basso livello.
La CPU TFRT è abilitata in tutte le immagini del contenitore CPU del runtime TensorFlow ottimizzato, ad eccezione della versione 2.8. Per disattivare la CPU TFRT, imposta il flag use_tfrt
su false
.
La GPU TFRT è disponibile nelle immagini container GPU del runtime TensorFlow ottimizzate su base giornaliera e nelle immagini container GPU del runtime TensorFlow ottimizzate in modo stabile nelle versioni 2.13 e successive. Per attivare la GPU TFRT,
imposta i flag use_tfrt
e allow_precompilation
su true
.
TFRT su un'immagine contenitore GPU riduce al minimo il sovraccarico del trasferimento dei dati tra la CPU e la GPU dell'host. Una volta attivato, TFRT funziona insieme a XLA.
compilation. Poiché la precompilazione XLA è abilitata, potresti riscontrare
come l'aumento della latenza
sulla prima richiesta.
Per ulteriori informazioni, vedi Attivare la precompilazione XLA del modello.
Utilizzo del runtime Google
Poiché il runtime TensorFlow ottimizzato è creato utilizzando lo stack interno di Google, possono sfruttare l'esecuzione nell'ambiente di runtime proprietario di Google.
Immagini container del runtime TensorFlow ottimizzate
Vertex AI Prediction fornisce due tipi di immagini container di runtime TensorFlow ottimizzate: stabile e di notte.
Immagini container stabili
I container di runtime TensorFlow ottimizzati e stabili sono associati a una versione TensorFlow specifica, proprio come basato su open source container predefiniti di TensorFlow Serving. I container di runtime di TensorFlow ottimizzati associati a una versione specifica vengono mantenuti per la stessa durata della compilazione open source associata alla stessa versione. Le build del runtime TensorFlow ottimizzato hanno le stesse proprietà delle build di TensorFlow open source, tranne che per un'inferenza più rapida.
Le build sono compatibili con le versioni precedenti. Ciò significa che dovresti essere in grado di eseguire modelli addestrati su versioni precedenti di TensorFlow utilizzando un contenitore più recente. Recenti i container dovrebbero avere un rendimento migliore di quelli più vecchi. In rare eccezioni, un modello addestrato su una versione precedente di TensorFlow potrebbe non funzionare con una containerizzato.
Immagini container di notte
Le build del runtime TensorFlow ottimizzate su base giornaliera includono i miglioramenti e le ottimizzazioni più recenti, ma potrebbero non essere affidabili come le build stabili. Vengono utilizzati principalmente per scopi sperimentali. I nomi delle build notturne includono l'etichetta nightly
. A differenza delle immagini dei container stabili, i container notturni non sono coperti dall'Accordo sul livello del servizio (SLA) di Vertex AI.
Immagini container disponibili
Sono disponibili le seguenti immagini container Docker basate su runtime TensorFlow e ottimizzate per la notte.
Versione framework ML | Acceleratori supportati (e versione CUDA, se applicabile) | Data di fine della patch e del supporto | Fine disponibilità | Immagini supportate |
---|---|---|---|---|
ogni notte | Solo CPU | Non applicabile | Non applicabile |
|
ogni notte | GPU (CUDA 12.x) | Non applicabile | Non applicabile |
|
ogni notte | Cloud TPU | Non applicabile | Non applicabile |
|
2,16 | Solo CPU | 26 aprile 2024 | 26 aprile 2025 |
|
2,16 | GPU (CUDA 12.x) | 26 aprile 2024 | 26 aprile 2025 |
|
2,16 | Cloud TPU | 26 aprile 2024 | 26 aprile 2025 |
|
2,15 | Solo CPU | 15 agosto 2024 | 15 agosto 2025 |
|
2,15 | GPU (CUDA 12.x) | 15 agosto 2024 | 15 agosto 2025 |
|
2,15 | Cloud TPU | 15 agosto 2024 | 15 agosto 2025 |
|
2,14 | Solo CPU | 15 agosto 2024 | 15 agosto 2025 |
|
2,14 | GPU (CUDA 12.x) | 15 agosto 2024 | 15 agosto 2025 |
|
2,13 | Solo CPU | 15 agosto 2024 | 15 agosto 2025 |
|
2,13 | GPU (CUDA 11.x) | 15 agosto 2024 | 15 agosto 2025 |
|
2.12 | Solo CPU | 15 maggio 2024 | 15 maggio 2025 |
|
2,12 | GPU (CUDA 11.x) | 15 maggio 2024 | 15 maggio 2025 |
|
2,11 | Solo CPU | 15 novembre 2023 | 15 novembre 2024 |
|
2.11 | GPU (CUDA 11.x) | 15 nov 2023 | 15 novembre 2024 |
|
2,10 | Solo CPU | 15 novembre 2023 | 15 novembre 2024 |
|
2,10 | GPU (CUDA 11.x) | 15 nov 2023 | 15 nov 2024 |
|
2,9 | Solo CPU | 15 novembre 2023 | 15 nov 2024 |
|
2,9 | GPU (CUDA 11.x) | 15 nov 2023 | 15 nov 2024 |
|
2,8 | Solo CPU | 15 novembre 2023 | 15 nov 2024 |
|
2,8 | GPU (CUDA 11.x) | 15 nov 2023 | 15 novembre 2024 |
|
Usa il runtime TensorFlow ottimizzato con un endpoint privato
Utilizzo di endpoint privati per fornire previsioni online con Vertex AI fornisce una connessione sicura e a bassa latenza a Vertex AI online più rapido dell'uso degli endpoint pubblici. Il runtime TensorFlow ottimizzato probabilmente serve modelli sensibili alla latenza, quindi ti consigliamo di utilizzarlo con endpoint privati. Per ulteriori informazioni, vedi Utilizzare endpoint privati per la navigazione online per la previsione.
Esegui il deployment di un modello utilizzando il runtime di TensorFlow ottimizzato
La procedura per eseguire il deployment di un modello per la previsione utilizzando il runtime TensorFlow ottimizzato è quasi la stessa del processo per eseguire il deployment dei modelli utilizzando container TensorFlow Serving predefiniti basati su open source. Le uniche differenze sono che devi specificare un'immagine contenitore che utilizzi il runtime TensorFlow ottimizzato quando crei il modello e puoi attivare i flag di ottimizzazione descritti in precedenza in questo documento. Ad esempio, se hai eseguito il deployment del modello con
us-docker.pkg.dev/vertex-ai/prediction/tf2-cpu.2-8:latest
container, puoi
lo stesso modello con il runtime TensorFlow ottimizzato utilizzando
us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-8:latest
containerizzato.
Il seguente esempio di codice mostra come creare un modello con il contenitore di runtime TensorFlow ottimizzato.us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.nightly:latest
Per eseguire il deployment di questo modello, utilizza la stessa procedura utilizzata per eseguire il deployment di un modello con altri container di TensorFlow Serving predefiniti.
Per ulteriori informazioni su ModelServiceClient
utilizzato in questo esempio, consulta
Class ModelServiceClient.
Per ulteriori informazioni su come eseguire il deployment di modelli utilizzando Vertex AI, consulta
Eseguire il deployment di un modello mediante l'API Vertex AI.
Per ulteriori informazioni sulle impostazioni allow_precompilation
e
allow_compression
, consulta
Ottimizzazioni del modello
descritte in precedenza in questo documento.
from google.cloud.aiplatform import gapic as aip PROJECT_ID = PROJECT_ID REGION = LOCATION API_ENDPOINT = f"{REGION}-aiplatform.googleapis.com" PARENT = f"projects/{PROJECT_ID}/locations/{REGION}" client_options = {"api_endpoint": API_ENDPOINT} model_service_client = aip.ModelServiceClient(client_options=client_options) tf_opt_model_dict = { "display_name": "DISPLAY_NAME", "metadata_schema_uri": "", "artifact_uri": "MODEL_URI", "container_spec": { "image_uri": "us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.nightly:latest", "args": [ # The optimized TensorFlow runtime includes the following # options that can be set here. # "--allow_precompilation=true" - enable XLA precompilation # "--allow_compression=true" - enable # model compression optimization ], }, } tf_opt_model = model_service_client.upload_model( parent=PARENT, model=tf_opt_model_dict).result(timeout=180).model
Flag di ottimizzazione del modello
Quando esegui il deployment di un modello utilizzando il runtime TensorFlow ottimizzato, puoi attivare due funzionalità che potrebbero ottimizzare ulteriormente il servizio dei modelli TensorFlow.
Puoi attivare contemporaneamente la precompilazione XLA del modello e l'ottimizzazione della compressione del modello. Le sezioni seguenti descrivono come attivare queste opzioni utilizzando i flag durante il deployment.
Abilita precompilazione XLA del modello
Per configurare il runtime TensorFlow ottimizzato in modo che precompili i modelli, imposta il flag allow_precompilation
su true
. La precompilazione XLA del modello funziona per diversi tipi di modelli e
nella maggior parte dei casi migliora le prestazioni. La precompilazione XLA è ideale per le richieste con
batch di grandi dimensioni.
La precompilazione del modello XLA avviene quando arriva la prima richiesta con il nuovo dimensione del batch. Per assicurarti che il runtime venga inizializzato prima della prima richiesta, devi può includere un file di richieste di riscaldamento. Per ulteriori informazioni, consulta Preparazione di SavedModel nella documentazione di TensorFlow.
Il completamento della precompilazione XLA richiede diversi secondi a seconda della complessità del modello. Se utilizzi la precompilazione XLA del modello, devi considera quanto segue.
Se utilizzi un file di riscaldamento, prova a includere richieste con dimensioni dei batch che rappresentano le dimensioni dei batch che prevedi che il modello riceva. Fornire un gran numero di richieste nel file di riscaldamento rallenta l'avvio del server del modello.
Se prevedi che il modello riceva richieste con batch di dimensioni diverse, potresti voler abilitare il raggruppamento in batch lato server con un insieme di valori fissi per
allow_batch_sizes
. Per ulteriori informazioni su come attivare il rendering lato serverper i batch, vedi Abilita il batch di richieste lato server per TensorFlow nella documentazione di TensorFlow.
Poiché la precompilazione XLA aggiunge un overhead di memoria, alcuni modelli di grandi dimensioni potrebbero non riuscire con un errore di memoria insufficiente sulla GPU.
Ti consigliamo di testare la precompilazione XLA sul tuo modello prima di attivare questa funzionalità in produzione.
Attiva l'ottimizzazione della compressione del modello
Per configurare il runtime TensorFlow ottimizzato in modo da utilizzare l'ottimizzazione della compressione del modello, imposta la relativa
allow_compression
flag per true
. Testa l'impatto dell'attivazione di questo flag sull'accuratezza del modello e poi decidi se attivarlo in produzione.
Disattiva ottimizzazioni
Per configurare il runtime TensorFlow ottimizzato in modo da eseguire modelli senza ottimizzazione, impostane
disable_optimizer
flag per true
.
Limiti del runtime TensorFlow ottimizzato
Il runtime TensorFlow ottimizzato presenta le seguenti limitazioni:
- Il runtime TensorFlow ottimizzato non è compatibile con GPU NVIDIA meno recenti come Tesla P4 e Tesla P100.
- Al momento, il runtime TensorFlow ottimizzato supporta solo la spiegazione di Shapley campionata.
Prezzi
Il deployment di modelli mediante il runtime TensorFlow ottimizzato non comporta costi aggiuntivi. Il costo è uguale ad altri deployment di previsione per i quali l'addebito avviene in base alla di VM e acceleratori utilizzati. Per ulteriori informazioni, consulta la pagina relativa ai prezzi di Vertex AI.