Entorno de ejecución optimizado de TensorFlow

El entorno de ejecución optimizado de TensorFlow optimiza los modelos para una inferencia más rápida y de menor costo que los contenedores precompilados de TensorFlow Serving basados en código abierto. El entorno de ejecución optimizado de TensorFlow lo hace mediante las tecnologías de código abierto y de propiedad de Google.

Cuanto más grande sea un modelo de aprendizaje automático (AA), más podrá costar entregarlo. Con el entorno de ejecución optimizado de TensorFlow, el costo de entregar tu modelo de AA y la velocidad de inferencia pueden ser menores en comparación a cuando usas un entorno de ejecución de TensorFlow basado en código abierto. Para aprovechar el entorno de ejecución optimizado de TensorFlow cuando usas Vertex AI Prediction, no necesitas modificar el código. En su lugar, debes elegir una imagen de contenedor de entrega que la use.

El entorno de ejecución optimizado de TensorFlow es retrocompatible los contenedores precompilados de TensorFlow Serving. Si ejecutas modelos de TensorFlow con un contenedor precompilado, puedes cambiar a un contenedor del entorno de ejecución optimizado de TensorFlow con un esfuerzo mínimo.

Si bien el rendimiento de tu modelo mejora cuando usas el entorno de ejecución optimizado de TensorFlow, debes esperar que el impacto en el rendimiento varíe para diferentes tipos de modelos.

Descripción general del entorno de ejecución optimizado de TensorFlow

El entorno de ejecución optimizado de TensorFlow usa optimizaciones de modelos y nuevas tecnologías propiedad de Google para mejorar la velocidad y reducir el costo de la inferencia en comparación con los contenedores precompilados de TensorFlow Serving basados en código abierto.

La optimización ocurre cuando Vertex AI sube un modelo antes de ejecutarse. Después de implementar un modelo en un extremo, el registro de optimización se agrega al registro de predicción. Puedes usar estos registros para solucionar los problemas que puedan ocurrir durante la optimización.

En los siguientes temas, se describen las mejoras de optimización en el entorno de ejecución optimizado de TensorFlow.

Optimizaciones de modelos

Las siguientes tres optimizaciones de modelos se incluyen en el entorno de ejecución optimizado de TensorFlow.

Precompilación XLA de modelos

Cuando se ejecuta un modelo de TensorFlow, todas las operaciones se ejecutan de forma individual. Hay una pequeña sobrecarga con la ejecución de operaciones individuales. El entorno de ejecución optimizado de TensorFlow puede quitar parte de esta sobrecarga a través del aprovechamiento de XLA para precompilar todo o una parte del grafo de TensorFlow en kernels más grandes.

La precompilación XLA de modelos es opcional y está inhabilitada de forma predeterminada. Para obtener información sobre cómo habilitar la precompilación XLA de modelos durante una implementación, consulta Habilita la precompilación de XLA.

Optimizaciones para la compresión de modelos

El entorno de ejecución optimizado de TensorFlow puede ejecutar algunos modelos más rápido con un impacto mínimo en su precisión, lo que permite la optimización de la compresión de modelos. Cuando la optimización de compresión de modelos está habilitada, el entorno de ejecución optimizado de TensorFlow usa técnicas como la cuantización y la reducción del peso para ejecutar modelos más rápido.

La función de optimización de la compresión de modelos está inhabilitada de forma predeterminada. Para obtener información sobre cómo habilitar la optimización de la compresión de modelos durante una implementación, consulta Habilita la optimización de la compresión de modelos.

Se mejoró el rendimiento de los modelos tabulares en las GPU

Los modelos tabulares de TensorFlow se suelen entregar en las CPU porque no pueden usar aceleradores de manera efectiva. El entorno de ejecución optimizado de TensorFlow aborda esto a través de la ejecución de partes del modelo costosos en términos de procesamiento en las GPU. El resto del modelo se ejecuta en CPU a través de la minimización de la comunicación entre el host y el acelerador. Ejecutar las partes costosas del modelo en GPU y el resto en las CPU hace que la entrega de modelos tabulares sea más rápida y tenga un costo menor.

El entorno de ejecución optimizado de TensorFlow optimiza la entrega de los siguientes tipos de modelos tabulares.

Optimización automática del modelo para Cloud TPU

Los contenedores compilados previamente del entorno de ejecución optimizados de TensorFlow que admiten Cloud TPU pueden particionar y optimizar automáticamente tus modelos para que se ejecuten en TPU. Para obtener más información, consulta Implementa en Cloud TPU.

Uso del entorno de ejecución de TensorFlow (TFRT)

El entorno de ejecución optimizado de TensorFlow puede usar el entorno de ejecución de TensorFlow (TFRT). El TFRT usa CPU host multiproceso de forma eficiente, admite modelos de programación asíncrona y está optimizado para lograr una eficiencia de bajo nivel.

La CPU de TFRT está habilitada en todas las imágenes de contenedor de CPU del entorno de ejecución optimizado de TensorFlow, excepto la versión 2.8. Para inhabilitar la CPU de TFRT, establece la marca use_tfrt en false.

La GPU de TFRT está disponible en imágenes nocturnas del contenedor de GPU del entorno de ejecución optimizado de TensorFlow y en las versiones estables 2.13 y posteriores de las imágenes de contenedor de GPU de TensorFlow del entorno de ejecución optimizado. Para habilitar la GPU de TFRT, configura las marcas use_tfrt y allow_precompilation en true. TFRT en una imagen de contenedor de GPU minimiza la sobrecarga de transferencia de datos entre la CPU del host y la GPU. Después de habilitar TFRT, funciona junto con la compilación de XLA. Debido a que la precompilación de XLA está habilitada, es posible que experimentes algunos efectos secundarios, como un aumento de la latencia en la primera solicitud. Para obtener más información, consulta Habilita la precompilación de XLA de modelo.

Uso del entorno de ejecución de Google

Debido a que el entorno de ejecución optimizado de TensorFlow se compila mediante la pila interna de Google, puede aprovechar la ejecución en el entorno de ejecución propiedad de Google.

Imágenes de contenedor del entorno de ejecución optimizado de TensorFlow

Vertex AI Prediction proporciona dos tipos de imágenes de contenedor del entorno de ejecución optimizado de TensorFlow: estables y nocturnas.

Imágenes de contenedor estables

Los contenedores estables del entorno de ejecución optimizado de TensorFlow están vinculados a una versión específica de TensorFlow, al igual que los contenedores precompilados de TensorFlow Serving basados en código abierto. Los contenedores del entorno de ejecución optimizado de TensorFlow vinculados a una versión específica se conservan por el mismo tiempo que la compilación de código abierto vinculada a la misma versión. Las compilaciones del entorno de ejecución optimizado de TensorFlow tienen las mismas propiedades que las compilaciones de código abierto de TensorFlow, excepto por la inferencia más rápida.

Las compilaciones son retrocompatibles. Esto significa que deberías poder ejecutar modelos entrenados en versiones anteriores de TensorFlow con un contenedor más reciente. Los contenedores recientes deberían tener un mejor rendimiento que los más antiguos. En raras excepciones, un modelo entrenado en una versión anterior de TensorFlow podría no funcionar con un contenedor más reciente.

Imágenes de contenedores nocturnas

Las compilaciones nocturnas del entorno de ejecución optimizado de TensorFlow incluyen las mejoras y optimizaciones más recientes, pero puede que no sean tan confiables como las compilaciones estables. Se usan principalmente con fines experimentales. Los nombres de las compilaciones nocturnas incluyen la etiqueta nightly. A diferencia de las imágenes de contenedor estables, los contenedores nocturnos no están cubiertos por el Acuerdo de Nivel de Servicio (ANS) de Vertex AI.

Imágenes de contenedor disponibles

Están disponibles las siguientes imágenes de contenedor de Docker del tiempo de ejecución optimizado de TensorFlow estables y nocturnas.

Versión del marco de trabajo de AA Aceleradores compatibles (y la versión de CUDA, si corresponde) Fecha de finalización del parche y la compatibilidad Fin de la disponibilidad Imágenes compatibles
Por noche Solo CPU No aplicable No aplicable
  • 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
Por noche GPU (CUDA 12.x) No aplicable No aplicable
  • 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
Por noche Cloud TPU No aplicable No aplicable
  • 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 de abril de 2024 26 de abril de 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 de abril de 2024 26 de abril de 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 de abril de 2024 26 de abril de 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 de agosto de 2024 15 de agosto de 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 de agosto de 2024 15 de agosto de 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 de agosto de 2024 15 de agosto de 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 de agosto de 2024 15 de agosto de 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 de agosto de 2024 15 de agosto de 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 de agosto de 2024 15 de agosto de 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 de agosto de 2024 15 de agosto de 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 de mayo de 2024 15 de mayo de 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 de mayo de 2024 15 de mayo de 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 de noviembre de 2023 15 de noviembre de 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 de noviembre de 2023 15 de noviembre de 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 de noviembre de 2023 15 de noviembre de 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 de noviembre de 2023 15 de noviembre de 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 de noviembre de 2023 15 de noviembre de 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 de noviembre de 2023 15 de noviembre de 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 de noviembre de 2023 15 de noviembre de 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 de noviembre de 2023 15 de noviembre de 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 el entorno de ejecución optimizado de TensorFlow con un extremo privado

El uso de extremos privados para entregar predicciones en línea con Vertex AI proporciona una conexión segura con baja latencia al servicio de predicción en línea de Vertex AI que es más rápido que usar los extremos públicos. Es probable que el entorno de ejecución optimizado de TensorFlow entregue modelos sensibles a la latencia, por lo que puedes considerar usarlo con extremos privados. Si deseas obtener más información, consulta Usa extremos privados para la predicción en línea.

Implementa un modelo con el entorno de ejecución optimizado de TensorFlow

El proceso de implementación de un modelo para la predicción con el entorno de ejecución optimizado de TensorFlow es casi el mismo que el de implementar modelos mediante contenedores precompilados de TensorFlow Serving basados en código abierto. Las únicas diferencias son que especificas una imagen de contenedor que usa el entorno de ejecución optimizado de TensorFlow cuando creas tu modelo y puedes habilitar las marcas de optimización que se describieron antes en este documento. Por ejemplo, si implementaste tu modelo con el contenedor us-docker.pkg.dev/vertex-ai/prediction/tf2-cpu.2-8:latest, puedes entregar el mismo modelo con el entorno de ejecución optimizado de TensorFlow mediante el contenedor us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-8:latest.

En la siguiente muestra de código, se indica cómo crear un modelo con el contenedor del entorno de ejecución optimizado de TensorFlow us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.nightly:latest. A fin de implementar este modelo, usas el mismo proceso que usas para implementar un modelo con otros contenedores precompilados de TensorFlow Serving.

Para obtener más información sobre el ModelServiceClient que se usa en esta muestra, consulta Class ModelServiceClient. Para obtener más información sobre cómo implementar modelos con Vertex AI, consulta Implementa un modelo con la API de Vertex AI. Para obtener más información sobre la configuración de allow_precompilation y allow_compression, consulta las optimizaciones de modelos descritas antes en este 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

Marcas de optimización de modelos

Cuando implementas un modelo con el entorno de ejecución optimizado de TensorFlow, puedes habilitar dos funciones que podrían optimizar aún más la entrega de modelos de TensorFlow.

  1. Precompilación XLA de modelos
  2. Optimización que afecta la compresión del modelo

Puedes habilitar la precompilación XLA de modelos y la optimización de compresión de modelos al mismo tiempo. En las siguientes secciones, se describe cómo habilitar estas opciones mediante marcas durante la implementación.

Habilitar la precompilación XLA de modelos

Para configurar el entorno de ejecución optimizado de TensorFlow a fin de precompilar modelos, establece la marca allow_precompilation como true. La precompilación XLA de modelos funciona con diferentes tipos de modelos y, en la mayoría de los casos, mejora el rendimiento. La precompilación XLA funciona mejor para solicitudes con tamaños de lote grandes.

La precompilación XLA de modelos ocurre cuando llega la primera solicitud con el tamaño de lote nuevo. Para asegurarte de que el entorno de ejecución se inicialice antes de la primera solicitud, puedes incluir un archivo de solicitudes de preparación. Para obtener más información, consulta la preparación de modelos guardados en la documentación de TensorFlow.

La precompilación XLA tarda entre varios segundos y varios minutos en completarse, según la complejidad del modelo. Si usas la precompilación XLA de modelos, debes tener en cuenta lo siguiente.

  • Si usas un archivo de preparación, intenta incluir solicitudes con tamaños de lote que representen los tamaños de lote que esperas que reciba tu modelo. Proporcionar una gran cantidad de solicitudes en tu archivo de preparación ralentiza el inicio de tu servidor de modelos.

  • Si esperas que tu modelo reciba solicitudes con diferentes tamaños de lotes, te recomendamos habilitar el agrupamiento por lotes del servidor con un conjunto de valores fijos para allow_batch_sizes. Para obtener más información sobre cómo habilitar el

    el procesamiento por lotes, consulta Habilita el procesamiento por lotes de solicitudes del servidor para TensorFlow en la documentación de TensorFlow.

  • Debido a que la precompilación XLA agrega sobrecarga a la memoria, algunos modelos grandes pueden fallar con un error de memoria insuficiente en la GPU.

Te recomendamos probar la precompilación XLA en tu modelo antes de habilitar esta característica en producción.

Habilita la optimización para la compresión de modelos

Si quieres configurar el entorno de ejecución optimizado de TensorFlow para usar la optimización de la compresión de modelos, establece su marca allow_compression en true. Prueba cómo habilitar esta marca afecta la precisión de tu modelo y, luego, determinar si deseas habilitarla en producción.

Inhabilita las optimizaciones

Si quieres configurar el entorno de ejecución optimizado de TensorFlow para que ejecute modelos sin optimización, configura su marca disable_optimizer como true.

Límites del entorno de ejecución optimizado de TensorFlow

El entorno de ejecución optimizado de TensorFlow tiene las siguientes limitaciones:

  • El entorno de ejecución optimizado de TensorFlow no es compatible con las GPUs NVIDIA más antiguas, como Tesla P4 y Tesla P100.
  • Por el momento, el entorno de ejecución optimizado de TensorFlow solo admite la explicabilidad de Shapley con muestreo.

Precios

La implementación de modelos mediante el entorno de ejecución optimizado de TensorFlow no incluye cargos adicionales. Es igual a otras implementaciones de predicción en las que se te cobra según la cantidad de VM y aceleradores que se usen. Para obtener más información, consulta los precios de Vertex AI.