Runtime TensorFlow ottimizzato

Il runtime TensorFlow ottimizzato ottimizza i modelli per un'inferenza più rapida e a costi inferiori basato su open source container di TensorFlow predefiniti. 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 distribuzione del modello ML e la velocità l'inferenza può essere inferiore rispetto a quando si utilizza un modello TensorFlow runtime. Per sfruttare al meglio il runtime TensorFlow ottimizzato quando utilizzi Vertex AI Prediction non richiede la modifica del codice. Puoi invece scegliere un'immagine container di pubblicazione che la utilizzi.

Il runtime TensorFlow ottimizzato è compatibile con le versioni precedenti container di TensorFlow predefiniti. 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 TensorFlow ottimizzato, le prestazioni possono variare a seconda dei 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 basato su open source container di TensorFlow predefiniti.

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 alla di previsione. Puoi utilizzare questi log per risolvere eventuali problemi 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. C'è una piccola di overhead quando si eseguono singole operazioni. Il runtime di TensorFlow ottimizzato può rimuovere parte di questo overhead sfruttando XLA precompilare tutto o una 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 piccolo impatto sulla precisione del modello abilitando l'ottimizzazione della compressione del modello. Quando l'ottimizzazione della compressione del modello abilitata, il runtime di TensorFlow ottimizzato utilizza tecniche come la quantizzazione e la per eseguire più rapidamente i modelli.

La funzionalità di ottimizzazione della compressione dei modelli è disattivata per impostazione predefinita. Per scoprire come attivare l'ottimizzazione della compressione del modello durante un deployment, Abilita l'ottimizzazione della compressione dei modelli.

Prestazioni dei modelli tabulari migliorate sulle GPU

I modelli tabulari TensorFlow vengono solitamente pubblicati sulle CPU perché non possono utilizzare acceleratori in modo efficace. Il runtime TensorFlow ottimizzato risolve questo problema eseguendo le parti costose del modello sulle GPU. Il resto del modello viene eseguito sulle CPU minimizzando la comunicazione tra host e acceleratore. Gestiscono le auto più costose parti del modello sulle GPU e il resto sulle CPU rende la pubblicazione di 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 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 un'efficienza di basso livello.

La CPU TFRT è abilitata in tutte le immagini container della CPU di runtime di TensorFlow ottimizzate, ad eccezione di 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 di notte e immagini container GPU TensorFlow runtime ottimizzate, versioni 2.13 e successive. Per attivare 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 CPU host e GPU. 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 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, possono sfruttare l'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: 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 di TensorFlow predefiniti. Runtime TensorFlow ottimizzato i container associati a una versione specifica vengono mantenuti per la stessa durata la build open source associata alla stessa versione. Le build di runtime di TensorFlow ottimizzate hanno le stesse proprietà delle build TensorFlow open source, ad eccezione dei modelli l'inferenza.

Le build sono compatibili con le versioni precedenti. Ciò significa che dovresti essere in grado di eseguire modelli addestrato su versioni precedenti di TensorFlow utilizzando un container più recente. Recenti i container dovrebbero avere prestazioni migliori di quelli precedenti. In rare eccezioni, un modello addestrato su una versione precedente di TensorFlow potrebbe non funzionare con una containerizzato.

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 usate principalmente per a scopi sperimentali. I nomi delle build per le notti includono l'etichetta nightly. Non mi piace immagini container stabili, i container notturni non sono coperti Accordo sul livello del servizio di Vertex AI (accordo sul livello del servizio).

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

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 di TensorFlow ottimizzato probabilmente pubblica modelli sensibili alla latenza, perciò valuta e 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

Il processo per eseguire il deployment di un modello per la previsione utilizzando il runtime TensorFlow ottimizzato è quasi è uguale al processo di deployment dei modelli basati su open source container di TensorFlow predefiniti. L'unico devi specificare un'immagine container che utilizza il runtime TensorFlow ottimizzato quando crei il modello e puoi abilitare 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 us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.nightly:latest il container di runtime TensorFlow ottimizzato. Per eseguire il deployment di questo modello, usa lo stesso processo che utilizzi di eseguire il deployment di un modello container di TensorFlow predefiniti.

Per maggiori informazioni sul valore ModelServiceClient utilizzato in questo esempio, vedi 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 ulteriori informazioni su allow_precompilation e Impostazioni di allow_compression, vedi Ottimizzazioni del modello descritti 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 di TensorFlow ottimizzato, puoi abilitare due caratteristiche che potrebbe ottimizzare ulteriormente la distribuzione dei modelli TensorFlow.

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

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

Abilita precompilazione XLA del modello

Per configurare il runtime TensorFlow ottimizzato per precompilare i modelli, imposta allow_precompilation per 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 per i batch di grandi dimensioni.

La precompilazione del modello XLA avviene quando la prima richiesta con la nuova dimensione del batch in arrivo. Per assicurarti che il runtime venga inizializzato prima della prima richiesta, devi può includere un file di richieste di riscaldamento. Per ulteriori informazioni, vedi Riscaldamento SavedModel nella finestra 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 warmup, prova a includere richieste con dimensioni del batch che rappresentano le dimensioni dei batch che ti aspetti che il modello riceva. L'invio di un un numero elevato di richieste nel file di warmup rallenta l'avvio del modello di machine learning.

  • 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 sull'abilitazione del lato server

    per i batch, vedi Abilita 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 sulla GPU.

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

Abilita l'ottimizzazione della compressione dei modelli

Per configurare il runtime TensorFlow ottimizzato in modo da utilizzare l'ottimizzazione della compressione del modello, imposta la relativa allow_compression flag per true. Verifica in che modo l'attivazione di questo flag influisce la precisione del modello e poi stabilisci se vuoi abilitarlo in produzione.

Disattiva ottimizzazioni

Per configurare il runtime TensorFlow ottimizzato in modo da eseguire modelli senza ottimizzazione, impostane disable_optimizer flag per true.

Limiti di runtime di TensorFlow ottimizzati

Il runtime TensorFlow ottimizzato ha le seguenti limitazioni:

  • Il runtime TensorFlow ottimizzato non è compatibile con GPU NVIDIA meno recenti come Tesla P4 e Tesla P100.
  • Il runtime TensorFlow ottimizzato supporta solo dati campionati Shapley spiegabilità in questo momento.

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, vedi Prezzi di Vertex AI.