Runtime TensorFlow ottimizzato

Il runtime TensorFlow ottimizzato ottimizza i modelli per un'inferenza più rapida e inferiore rispetto ai container di pubblicazione TensorFlow predefiniti open source. Il runtime ottimizzato di TensorFlow fa tutto questo utilizzando le tecnologie open source e proprietarie di Google.

Più è grande un modello di machine learning (ML), maggiore sarà il costo della sua pubblicazione. Con il runtime di TensorFlow ottimizzato, il costo di gestione 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 con Vertex AI Prediction, non devi modificare il codice. ma scegli un'immagine container pubblicata che la utilizza.

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

Le prestazioni del modello migliorano quando utilizzi il runtime di TensorFlow ottimizzato, ma l'impatto sulle prestazioni dovrebbe variare a seconda dei diversi tipi di modelli.

Panoramica del runtime TensorFlow ottimizzato

Il runtime TensorFlow ottimizzato utilizza le ottimizzazioni dei modelli e le nuove tecnologie Google proprietarie per migliorare la velocità e ridurre il costo di inferenza rispetto ai container di pubblicazione TensorFlow predefiniti 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 per l'ottimizzazione del runtime di TensorFlow ottimizzato.

Ottimizzazioni del modello

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

Precompilazione XLA del modello

Durante l'esecuzione di un modello TensorFlow, tutte le operazioni vengono eseguite singolarmente. L'esecuzione di operazioni individuali comporta un piccolo sovraccarico. Il runtime TensorFlow ottimizzato può eliminare parte di questo overhead sfruttando XLA per precompilare tutto o parte del grafico TensorFlow in kernel più grandi.

La precompilazione XLA del modello è facoltativa e disabilitata 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 dei modelli

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 ottimizzato di TensorFlow utilizza tecniche come la quantizzazione e l'eliminazione della ponderazione 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.

Miglioramento delle prestazioni dei modelli tabulari sulle GPU

I modelli tabulari TensorFlow vengono generalmente pubblicati sulle CPU perché non possono utilizzare gli acceleratori in modo efficace. Il runtime TensorFlow ottimizzato risolve questo problema eseguendo parti del modello costose a livello di calcolo sulle GPU. Il resto del modello viene eseguito su CPU riducendo al minimo le comunicazioni tra host e acceleratore. L'esecuzione delle parti costose del modello sulle GPU e del resto sulle CPU velocizza e riduce i costi di gestione dei modelli tabulari.

Il runtime TensorFlow ottimizzato ottimizza la pubblicazione dei seguenti tipi di modelli tabulari.

Ottimizzazione automatica del modello per Cloud TPU

I container di runtime TensorFlow ottimizzati predefiniti che supportano le Cloud TPU possono partizionare e ottimizzare automaticamente i modelli per l'esecuzione sulle TPU. Per maggiori informazioni, vedi Eseguire il deployment in Cloud TPU.

Utilizzo del runtime TensorFlow (TFRT)

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

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

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

Utilizzo del runtime di Google

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

Immagini del container di runtime TensorFlow ottimizzate

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

Immagini container stabili

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

Le build sono compatibili con le versioni precedenti. Questo significa che dovresti poter eseguire modelli addestrati su versioni precedenti di TensorFlow usando un container più recente. I container recenti dovrebbero garantire prestazioni migliori di quelli meno recenti. In rare eccezioni, un modello addestrato su una versione precedente di TensorFlow potrebbe non funzionare con un container più recente.

Immagini dei container notturni

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 la notte 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 di container Docker di runtime TensorFlow ottimizzate e di notte.

Versione framework ML Acceleratori supportati (e versione CUDA, se applicabile) Data di fine della patch e del supporto Fine disponibilità Immagini supportate
di 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
di 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
di 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,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 novembre 2023 15 novembre 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 novembre 2023 15 novembre 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 novembre 2023 15 novembre 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 novembre 2023 15 novembre 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 novembre 2023 15 novembre 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 novembre 2023 15 novembre 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 novembre 2023 15 novembre 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 novembre 2023 15 novembre 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

Utilizza il runtime TensorFlow ottimizzato con un endpoint privato

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

Esegui il deployment di un modello utilizzando il runtime TensorFlow ottimizzato

Il processo per eseguire il deployment di un modello per la previsione utilizzando il runtime di TensorFlow ottimizzato è quasi uguale al processo per il deployment di modelli utilizzando container predefiniti di TensorFlow Serving basati su open source. Le uniche differenze sono il fatto che specifichi un'immagine container che utilizza il runtime di TensorFlow ottimizzato quando crei il modello e puoi abilitare i flag di ottimizzazione descritti in precedenza in questo argomento. 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 gestire 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 container 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 lo stesso processo utilizzato per eseguire il deployment di un modello con altri container di pubblicazione TensorFlow predefiniti.

Per maggiori informazioni sul ModelServiceClient utilizzato in questo esempio, consulta Class ModelServiceClient. Per maggiori informazioni su come eseguire il deployment di modelli utilizzando Vertex AI, consulta Eseguire il deployment di un modello utilizzando l'API Vertex AI. Per ulteriori informazioni sulle impostazioni allow_precompilation e allow_compression, consulta la sezione Ottimizzazioni dei modelli descritta in precedenza in questo argomento.

    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 gestione dei modelli TensorFlow.

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

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

Abilita precompilazione XLA del modello

Per configurare il runtime TensorFlow ottimizzato in modo da 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 funziona al meglio per le richieste con batch di grandi dimensioni.

La precompilazione XLA del modello avviene quando arriva la prima richiesta con la nuova dimensione batch. Per assicurarti che il runtime venga inizializzato prima della prima richiesta, puoi includere un file di richieste di riscaldamento. Per ulteriori informazioni, consulta il riscaldamento di SaveModel sul sito web di TensorFlow.

Il completamento della precompilazione XLA richiede da alcuni secondi a diversi minuti, a seconda della complessità del modello. Se utilizzi la precompilazione XLA del modello, dovresti prendere in considerazione quanto segue.

  • Se utilizzi un file di riscaldamento, prova a includere richieste con dimensioni batch che rappresentano le dimensioni batch che ti aspetti che il modello riceva. Fornire un numero elevato di richieste nel file di riscaldamento rallenta l'avvio del server del modello.

  • Se prevedi che il tuo modello riceva richieste con dimensioni batch diverse, ti consigliamo di abilitare il raggruppamento lato server con un set di valori fissi per allow_batch_sizes. Per saperne di più su come attivare la funzionalità lato server

    per il batch di richieste, consulta Abilitare il batch di richieste lato server per TensorFlow sul sito web di TensorFlow.

  • Poiché la precompilazione XLA aggiunge un sovraccarico di memoria, alcuni modelli di grandi dimensioni potrebbero non riuscire con un errore di memoria esaurita sulla GPU.

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

Abilita ottimizzazione della compressione dei modelli

Per configurare il runtime TensorFlow ottimizzato in modo da utilizzare l'ottimizzazione della compressione dei modelli, imposta il flag allow_compression su true. Verifica in che modo l'abilitazione 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 flag disable_optimizer su true.

Limiti di runtime di TensorFlow ottimizzati

Il runtime TensorFlow ottimizzato presenta le seguenti limitazioni:

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

Prezzi

Il deployment di modelli con il runtime TensorFlow ottimizzato non include costi aggiuntivi. Il costo è uguale a quello di altri deployment di previsione in cui ti viene addebitato l'importo in base al numero di VM e acceleratori utilizzati. Per maggiori informazioni, consulta la pagina relativa ai prezzi di Vertex AI.