Runtime TensorFlow ottimizzato

Il runtime TensorFlow ottimizzato ottimizza i modelli per un'inferenza più rapida e a costi inferiori rispetto ai container predefiniti di TensorFlow Serving basati su open source. A questo scopo, il runtime TensorFlow ottimizzato utilizza le tecnologie open source e proprietarie 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 distribuzione del modello ML e la velocità di inferenza possono essere inferiori rispetto a quando si utilizza un runtime TensorFlow basato su open source. Per sfruttare il runtime TensorFlow ottimizzato quando utilizzi Vertex AI Prediction, non devi modificare il codice. Scegli, invece, un'immagine container di pubblicazione che la utilizzi.

Il runtime di TensorFlow ottimizzato è compatibile con le versioni precedenti con i container predefiniti di TensorFlow Serving. Se esegui modelli TensorFlow con un container predefinito, puoi passare a un container di runtime TensorFlow ottimizzato con il minimo sforzo.

Anche se le prestazioni del modello migliorano quando utilizzi il runtime TensorFlow ottimizzato, l'impatto sulle prestazioni potrebbe variare a seconda dei diversi tipi di modelli.

Panoramica del runtime TensorFlow ottimizzato

Il runtime TensorFlow ottimizzato utilizza ottimizzazioni del modello e nuove tecnologie proprietarie di Google per migliorare la velocità e ridurre il costo di 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 delle previsioni. Puoi utilizzare questi log per risolvere i problemi che potrebbero verificarsi durante l'ottimizzazione.

Gli argomenti seguenti descrivono i miglioramenti dell'ottimizzazione nel runtime di TensorFlow ottimizzato.

Ottimizzazioni del modello

Le seguenti tre ottimizzazioni del modello sono incluse nel runtime di TensorFlow ottimizzato.

Precompilazione del modello XLA

Quando viene eseguito un modello TensorFlow, tutte le operazioni vengono eseguite singolarmente. L'esecuzione delle singole operazioni comporta un piccolo overhead. Il runtime TensorFlow ottimizzato può rimuovere parte di questo overhead sfruttando XLA per precompilare tutto o una parte del grafico TensorFlow in kernel più grandi.

La precompilazione del modello XLA è facoltativa e disattivata per impostazione predefinita. Per scoprire come abilitare la precompilazione XLA del modello durante un deployment, consulta Abilitare la precompilazione XLA del modello.

Ottimizzazioni della compressione del modello

Il runtime TensorFlow ottimizzato può eseguire alcuni modelli più velocemente con un piccolo impatto sulla precisione del modello, che consente l'ottimizzazione della compressione dei modelli. Quando l'ottimizzazione della compressione dei modelli è abilitata, il runtime di TensorFlow ottimizzato utilizza tecniche come la quantizzazione e l'eliminazione dei pesi per eseguire i modelli più velocemente.

La funzionalità di ottimizzazione della compressione dei modelli è disattivata per impostazione predefinita. Per informazioni su come abilitare l'ottimizzazione della compressione dei modelli durante un deployment, consulta Abilitare l'ottimizzazione della compressione dei modelli.

Prestazioni dei modelli tabulari migliorate sulle GPU

I modelli tabulari TensorFlow vengono solitamente utilizzati sulle CPU perché non possono utilizzare gli acceleratori in modo efficace. Il runtime TensorFlow ottimizzato risolve questo problema eseguendo parti del modello che richiedono molte risorse di calcolo. Il resto del modello viene eseguito sulle CPU riducendo al minimo la comunicazione tra host e acceleratore. L'esecuzione delle parti costose del modello su GPU e il resto sulle CPU rende la pubblicazione dei modelli tabulari più veloce e ha 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 ottimizzati che supportano le Cloud TPU possono partizionare e ottimizzare automaticamente i modelli per l'esecuzione su TPU. Per ulteriori informazioni, vedi Eseguire il deployment in Cloud TPU.

Utilizzo del runtime TensorFlow (TFRT)

Il runtime TensorFlow ottimizzato può utilizzare il runtime di TensorFlow (TFRT). TFRT utilizza in modo efficiente CPU host multithread, supporta modelli di programmazione asincroni ed è ottimizzato per l'efficienza di basso livello.

La CPU TFRT è abilitata in tutte le immagini container della CPU runtime di TensorFlow ottimizzate, tranne la versione 2.8. Per disabilitare la CPU TFRT, imposta il flag use_tfrt su false.

La GPU TFRT è disponibile per le immagini container GPU TensorFlow runtime ottimizzate per la notte e per le immagini container GPU TensorFlow runtime ottimizzate stabili versioni 2.13 e successive. Per abilitare la GPU TFRT, imposta i flag use_tfrt e allow_precompilation su true. TFRT su un'immagine container GPU riduce al minimo l'overhead del trasferimento di dati tra la CPU host e la GPU. Una volta abilitato, TFRT funziona insieme alla compilazione XLA. Poiché la precompilazione XLA è abilitata, potresti riscontrare alcuni effetti collaterali, come l'aumento della latenza sulla prima richiesta. Per maggiori informazioni, consulta Abilitare la precompilazione XLA del modello.

Utilizzo del runtime Google

Poiché il runtime TensorFlow ottimizzato è creato utilizzando lo stack interno di Google, può sfruttare i vantaggi dell'esecuzione nell'ambiente di runtime proprietario di Google.

Immagini container di runtime TensorFlow ottimizzate

Vertex AI Prediction fornisce due tipi di immagini container di runtime TensorFlow ottimizzate: stabili e notturne.

Immagini container stabili

I container di runtime TensorFlow ottimizzati e stabili sono associati a una versione TensorFlow specifica, proprio come i container predefiniti di TensorFlow Serving basati su open source. I container di runtime TensorFlow ottimizzati associati a una versione specifica vengono gestiti per la stessa durata della build open source associata alla stessa versione. Le build di runtime di TensorFlow ottimizzate hanno le stesse proprietà delle build di TensorFlow open source, tranne che con un'inferenza più veloce.

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 container più recente. I container recenti 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 un container più recente.

Immagini dei container di notte

Le build di runtime TensorFlow ottimizzate per la notte includono i miglioramenti e le ottimizzazioni più recenti, ma potrebbero non essere affidabili quanto le build stabili. Vengono usati principalmente per scopi sperimentali. I nomi delle build per le notti includono l'etichetta nightly. A differenza delle immagini 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
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.nightly:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.nightly:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.nightly:latest
ogni notte GPU (CUDA 12.x) Non applicabile Non applicabile
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.nightly:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.nightly:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.nightly:latest
ogni notte Cloud TPU Non applicabile Non applicabile
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-tpu.nightly:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-tpu.nightly:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-tpu.nightly:latest
2,16 Solo CPU 26 aprile 2024 26 aprile 2025
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-16:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-16:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-16:latest
2,16 GPU (CUDA 12.x) 26 aprile 2024 26 aprile 2025
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-16:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-16:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-16:latest
2,16 Cloud TPU 26 aprile 2024 26 aprile 2025
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-tpu.2-16:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-tpu.2-16:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-tpu.2-16:latest
2,15 Solo CPU 15 agosto 2024 15 agosto 2025
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-15:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-15:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-15:latest
2,15 GPU (CUDA 12.x) 15 agosto 2024 15 agosto 2025
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-15:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-15:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-15:latest
2,15 Cloud TPU 15 agosto 2024 15 agosto 2025
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-tpu.2-15:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-tpu.2-15:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-tpu.2-15:latest
2,14 Solo CPU 15 agosto 2024 15 agosto 2025
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-14:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-14:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-14:latest
2,14 GPU (CUDA 12.x) 15 agosto 2024 15 agosto 2025
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-14:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-14:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-14:latest
2,13 Solo CPU 15 agosto 2024 15 agosto 2025
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-13:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-13:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-13:latest
2,13 GPU (CUDA 11.x) 15 agosto 2024 15 agosto 2025
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-13:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-13:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-13:latest
2,12 Solo CPU 15 maggio 2024 15 maggio 2025
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-12:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-12:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-12:latest
2,12 GPU (CUDA 11.x) 15 maggio 2024 15 maggio 2025
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-12:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-12:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-12:latest
2,11 Solo CPU 15 nov 2023 15 nov 2024
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-11:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-11:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-11:latest
2,11 GPU (CUDA 11.x) 15 nov 2023 15 nov 2024
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-11:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-11:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-11:latest
2,10 Solo CPU 15 nov 2023 15 nov 2024
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-10:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-10:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-10:latest
2,10 GPU (CUDA 11.x) 15 nov 2023 15 nov 2024
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-10:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-10:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-10:latest
2,9 Solo CPU 15 nov 2023 15 nov 2024
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-9:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-9:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-9:latest
2,9 GPU (CUDA 11.x) 15 nov 2023 15 nov 2024
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-9:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-9:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-9:latest
2,8 Solo CPU 15 nov 2023 15 nov 2024
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-8:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-8:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-8:latest
2,8 GPU (CUDA 11.x) 15 nov 2023 15 nov 2024
  • us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-8:latest
  • europe-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-8:latest
  • asia-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-gpu.2-8:latest

Usa il runtime TensorFlow ottimizzato con un endpoint privato

L'utilizzo di endpoint privati per fornire previsioni online con Vertex AI fornisce una connessione sicura e a bassa latenza al servizio di previsione online di Vertex AI più veloce rispetto all'utilizzo di endpoint pubblici. È probabile che il runtime TensorFlow ottimizzato gestisca modelli sensibili alla latenza, quindi potresti valutare di utilizzarlo con endpoint privati. Per ulteriori informazioni, consulta Utilizzare endpoint privati per la previsione online.

Esegui il deployment di un modello utilizzando il runtime di TensorFlow ottimizzato

Il processo per eseguire il deployment di un modello per la previsione utilizzando il runtime TensorFlow ottimizzato è quasi uguale a quello per eseguire il deployment di modelli utilizzando container di TensorFlow predefiniti basati su open source. Le uniche differenze sono che devi specificare un'immagine container che utilizza il runtime TensorFlow ottimizzato quando crei il tuo modello. Puoi abilitare i flag di ottimizzazione descritti in precedenza in questo documento. Ad esempio, se hai eseguito il deployment del modello con il container us-docker.pkg.dev/vertex-ai/prediction/tf2-cpu.2-8:latest, puoi pubblicare lo stesso modello con il runtime TensorFlow ottimizzato utilizzando il container us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-8:latest.

Il seguente esempio di codice mostra come creare un modello con il us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.nightly:latest container di runtime TensorFlow ottimizzato. Per eseguire il deployment di questo modello, utilizza la stessa procedura utilizzata per il deployment di un modello con altri container predefiniti di TensorFlow Serving.

Per ulteriori informazioni sul ModelServiceClient utilizzato in questo esempio, consulta Class ModelServiceClient. Per ulteriori informazioni su come eseguire il deployment dei modelli utilizzando Vertex AI, consulta Eseguire il deployment di un modello utilizzando l'API Vertex AI. Per maggiori informazioni sulle impostazioni allow_precompilation e allow_compression, consulta le ottimizzazioni dei modelli 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 abilitare due funzionalità che potrebbero ottimizzare ulteriormente la pubblicazione dei modelli TensorFlow.

  1. Precompilazione modello XLA
  2. Ottimizzazione che influisce sulla compressione del modello

Puoi abilitare contemporaneamente la precompilazione del modello XLA e l'ottimizzazione della compressione del modello. Le sezioni seguenti descrivono come abilitare queste opzioni usando i flag durante il deployment.

Abilita precompilazione XLA del modello

Per configurare il runtime TensorFlow ottimizzato per precompilare 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 è la soluzione migliore per le richieste con batch di grandi dimensioni.

La precompilazione del modello XLA avviene quando arriva la prima richiesta con la nuova dimensione del batch. Per assicurarti che il runtime venga inizializzato prima della prima richiesta, puoi includere un file di richieste di warmup. Per ulteriori informazioni, consulta la sezione Preparati per il modello SavedModel nella documentazione di TensorFlow.

Il completamento della precompilazione XLA richiede diversi secondi e minuti, a seconda della complessità del modello. Se utilizzi la precompilazione XLA del modello, devi considerare quanto segue.

  • Se utilizzi un file di warmup, prova a includere richieste con dimensioni del batch che rappresentano le dimensioni del batch che ti aspetti vengano ricevute dal modello. Se fornisci un numero elevato di richieste nel file di warmup, l'avvio del server del modello viene rallentato.

  • Se prevedi che il modello riceva richieste con batch di dimensioni diverse, ti consigliamo di abilitare il raggruppamento in batch lato server con un insieme di valori fissi per allow_batch_sizes. Per ulteriori informazioni sull'abilitazione del lato server

    per il batch, consulta Abilitare il batch di richieste lato server per TensorFlow nella documentazione di TensorFlow.

  • Poiché la precompilazione XLA aumenta l'overhead della memoria, alcuni modelli di grandi dimensioni potrebbero non riuscire con un errore di memoria insufficiente nella GPU.

Ti consigliamo di testare la precompilazione XLA sul tuo modello prima di abilitare questa funzionalità in produzione.

Abilita l'ottimizzazione della compressione dei modelli

Per configurare il runtime di TensorFlow ottimizzato in modo da utilizzare l'ottimizzazione della compressione del modello, imposta il relativo flag allow_compression su true. Verifica in che modo l'attivazione di questo flag influisce sulla precisione del modello, quindi determina se vuoi abilitarlo in produzione.

Disattiva ottimizzazioni

Per configurare il runtime TensorFlow ottimizzato per l'esecuzione di modelli senza ottimizzazione, imposta il relativo flag disable_optimizer su true.

Limiti di runtime di TensorFlow ottimizzati

Il runtime TensorFlow ottimizzato ha le seguenti limitazioni:

  • Il runtime TensorFlow ottimizzato non è compatibile con GPU NVIDIA precedenti come Tesla P4 e Tesla P100.
  • Al momento, il runtime di TensorFlow ottimizzato supporta solo la spiegabilità di Shapley campionato.

Prezzi

Il deployment di modelli mediante il runtime TensorFlow ottimizzato non comporta costi aggiuntivi. Il costo è lo stesso di altri deployment di previsione in cui l'addebito avviene in base al numero di VM e acceleratori utilizzati. Per ulteriori informazioni, consulta i prezzi di Vertex AI.