Environnement d'exécution TensorFlow optimisé

L'environnement d'exécution TensorFlow optimisé optimise les modèles pour une inférence plus rapide et moins coûteuse que les conteneurs TensorFlow Serving prédéfinis Open Source. Pour ce faire, l'environnement d'exécution TensorFlow optimisé exploite les technologies propriétaires et Open Source de Google.

Plus le modèle de machine learning (ML) est grand, plus sa diffusion est coûteuse. Avec l'environnement d'exécution TensorFlow optimisé, le coût de diffusion de votre modèle de ML et la vitesse d'inférence peuvent être inférieurs à ceux d'un environnement d'exécution TensorFlow basé sur Open Source. Pour profiter de l'environnement d'exécution TensorFlow optimisé lorsque vous utilisez Vertex AI Prediction, vous n'avez pas besoin de modifier le code. À la place, vous choisissez une image de conteneur de diffusion qui l'utilise.

L'environnement d'exécution TensorFlow optimisé est rétrocompatible avec les conteneurs TensorFlow Serving prédéfinis. Si vous exécutez des modèles TensorFlow avec un conteneur prédéfini, vous pouvez facilement passer à un conteneur de l'environnement d'exécution TensorFlow optimisé.

Bien que les performances de votre modèle s'améliorent lorsque vous utilisez l'environnement d'exécution TensorFlow optimisé, vous devez vous attendre à ce que l'impact sur les performances varie en fonction des différents types de modèles.

Présentation de l'environnement d'exécution TensorFlow optimisé

L'environnement d'exécution TensorFlow optimisé utilise des optimisations de modèles et de nouvelles technologies Google propriétaires pour améliorer la vitesse et réduire le coût d'inférence par rapport aux conteneurs TensorFlow Serving prédéfinis basés sur l'Open Source.

L'optimisation a lieu lorsque Vertex AI importe un modèle avant qu'il ne soit exécuté. Après avoir déployé un modèle sur un point de terminaison, le journal d'optimisation est ajouté au journal de prédiction. Vous pouvez utiliser ces journaux pour résoudre les problèmes pouvant survenir lors de l'optimisation.

Les rubriques suivantes décrivent les améliorations d'optimisation dans l'environnement d'exécution TensorFlow optimisé.

Optimisations des modèles

Les trois optimisations des modèles suivantes sont actuellement incluses dans l'environnement d'exécution TensorFlow optimisé.

Précompilation du modèle XLA

Lorsqu'un modèle TensorFlow s'exécute, toutes les opérations sont exécutées individuellement. L'exécution d'opérations individuelles est soumise à une légère surcharge. L'environnement d'exécution TensorFlow optimisé peut supprimer une partie de cette surcharge en utilisant XLA pour précompiler tout ou partie du graphe TensorFlow en noyaux plus volumineux.

La précompilation du modèle XLA est facultative et désactivée par défaut. Pour savoir comment activer la précompilation du modèle XLA lors d'un déploiement, consultez la section Activer la précompilation du modèle XLA.

Optimiser la compression des modèles

L'environnement d'exécution TensorFlow optimisé peut exécuter certains modèles plus rapidement avec un petit impact sur la précision des modèles, ce qui permet d'optimiser la compression des modèles. Lorsque l'optimisation de la compression des modèles est activée, l'environnement d'exécution TensorFlow optimisé utilise des techniques telles que la quantification et l'élimination des pondérations pour exécuter des modèles plus rapidement.

La fonctionnalité d'optimisation de la compression des modèles est désactivée par défaut. Pour savoir comment activer l'optimisation de la compression des modèles lors d'un déploiement, consultez la page Activer l'optimisation de la compression des modèles.

Améliorer les performances des modèles tabulaires sur les GPU

Les modèles tabulaires TensorFlow sont généralement diffusés sur des processeurs, car ils ne peuvent pas utiliser les accélérateurs de manière efficace. L'environnement d'exécution TensorFlow optimisé résout ce problème en exécutant des parties de calcul coûteuses du modèle sur les GPU. Le reste du modèle s'exécute sur les processeurs en minimisant la communication entre l'hôte et l'accélérateur. L'exécution des parties coûteuses du modèle sur des GPU et le reste sur les processeurs permet de diffuser les modèles tabulaires plus rapidement et à moindre coût.

L'environnement d'exécution TensorFlow optimisé permet de diffuser les types de modèles tabulaires suivants.

Optimisation automatique de modèles pour Cloud TPU

Les conteneurs d'exécution TensorFlow prédéfinis et compatibles avec les Cloud TPU peuvent partitionner et optimiser automatiquement vos modèles pour les exécuter sur des TPU. Pour en savoir plus, consultez la section Déployer sur Cloud TPU.

Utiliser l'environnement d'exécution TensorFlow (TFRT)

L'environnement d'exécution TensorFlow optimisé peut utiliser l'environnement d'exécution TensorFlow (TFRT). La bibliothèque TFRT utilise efficacement les processeurs hôtes multithread, est compatible avec les modèles de programmation asynchrone et est optimisée pour une efficacité de bas niveau.

Le processeur TFRT est activé dans toutes les images de conteneur du processeur d'exécution de l'environnement d'exécution TensorFlow optimisé, à l'exception de la version 2.8. Pour désactiver le processeur TFRT, définissez l'option use_tfrt sur false.

Le GPU TFRT est disponible sur les images de conteneur d'environnement d'exécution TensorFlow avec GPU optimisées la nuit ainsi que sur les images de conteneur d'environnement d'exécution TensorFlow avec GPU stables versions 2.13 et ultérieures. Pour activer le GPU TFRT, définissez les options use_tfrt et allow_precompilation sur true. Sur une image de conteneur GPU, cette bibliothèque TFRT réduit la charge de transfert de données entre le processeur hôte et le GPU. Une fois que vous avez activé TFRT, celui-ci fonctionne avec la compilation XLA. Comme la précompilation XLA est activée, vous pouvez rencontrer certains effets secondaires, tels qu'une latence accrue sur la première requête. Pour en savoir plus, consultez la section Activer la précompilation du modèle XLA.

Utiliser l'environnement d'exécution Google

Étant donné que l'environnement d'exécution TensorFlow optimisé a été créé à l'aide de la pile interne de Google, vous pouvez exploiter l'environnement d'exécution propriétaire de Google.

Images de conteneurs de l'environnement d'exécution TensorFlow optimisé

Vertex AI Prediction fournit deux types d'images de conteneurs d'exécution TensorFlow optimisées : stables et nocturnes.

Images de conteneurs stables

Les conteneurs stables de l'environnement d'exécution TensorFlow optimisé sont liés à une version spécifique de TensorFlow, au même titre que les conteneurs TensorFlow Serving prédéfinis basés sur l'Open Source. Les conteneurs de l'environnement d'exécution TensorFlow optimisés qui sont liés à une version spécifique sont conservés pendant la même durée que le build Open Source qui est lié à la même version. Les versions de l'environnement d'exécution TensorFlow optimisé ont les mêmes propriétés que les versions TensorFlow Open Source, mais avec une inférence plus rapide.

Les compilations sont rétrocompatibles. Cela signifie que vous devez pouvoir exécuter des modèles entraînés sur d'anciennes versions de TensorFlow à l'aide d'un conteneur plus récent. Les conteneurs récents doivent fonctionner mieux que les anciens. Dans de rares cas, un modèle entraîné sur une version plus ancienne de TensorFlow peut ne pas fonctionner avec un conteneur plus récent.

Images de conteneurs nocturnes

Les versions nocturnes de l'environnement d'exécution TensorFlow optimisé incluent les améliorations et les optimisations les plus récentes, mais peuvent ne pas être aussi fiables que les versions stables. Elles sont principalement utilisées à des fins de tests. Les noms des versions nocturnes incluent le libellé nightly. Contrairement aux images de conteneur stables, les conteneurs nocturnes ne sont pas couverts par le Contrat de niveau de service de Vertex AI.

Images de conteneurs disponibles

Les images de conteneur Docker d'exécution TensorFlow suivantes, optimisées pour la nuit et stables sont disponibles.

Version du framework de ML Accélérateurs compatibles (et version CUDA, le cas échéant) Date de fin de correctif et de fin de compatibilité Fin de disponibilité Images compatibles
nightly CPU uniquement Non applicable Non applicable
  • 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
nightly GPU (CUDA 12.x) Non applicable Non applicable
  • 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
nightly Cloud TPU Non applicable Non applicable
  • 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 CPU uniquement 26 avril 2024 26 avril 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 avril 2024 26 avril 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 avril 2024 26 avril 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 CPU uniquement 15 août 2024 15 août 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 août 2024 15 août 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 août 2024 15 août 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 CPU uniquement 15 août 2024 15 août 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 août 2024 15 août 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 CPU uniquement 15 août 2024 15 août 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 août 2024 15 août 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 CPU uniquement 15 mai 2024 15 mai 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 mai 2024 15 mai 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 CPU uniquement 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 CPU uniquement 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 CPU uniquement 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 CPU uniquement 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

Utiliser un environnement d'exécution TensorFlow optimisé avec un point de terminaison privé

L'utilisation de points de terminaison privés pour diffuser des prédictions en ligne avec Vertex AI fournit une connexion sécurisée à faible latence au service de prédiction en ligne Vertex AI. Cette connexion est plus rapide que l'utilisation de points de terminaison publics. L'environnement d'exécution TensorFlow optimisé diffuse probablement des modèles sensibles à la latence. Vous pouvez donc envisager de l'utiliser avec des points de terminaison privés. Pour en savoir plus, consultez la section Utiliser des points de terminaison privés pour la prédiction en ligne.

Déployer un modèle à l'aide de l'environnement d'exécution TensorFlow optimisé

Le processus de déploiement d'un modèle pour la prédiction à l'aide de l'environnement d'exécution TensorFlow optimisé est presque identique à celui permettant de déployer des modèles à l'aide de conteneurs TensorFlow Serving prédéfinis basés sur l'Open Source. Les seules différences sont les suivantes : vous spécifiez une image de conteneur qui utilise l'environnement d'exécution TensorFlow optimisé lors de la création de votre modèle, et vous pouvez activer les options d'optimisation décrites précédemment dans cette page. Par exemple, si vous avez déployé votre modèle avec le conteneur us-docker.pkg.dev/vertex-ai/prediction/tf2-cpu.2-8:latest, vous pouvez diffuser le même modèle avec l'environnement d'exécution TensorFlow optimisé à l'aide du conteneur us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.2-8:latest.

L'exemple de code suivant montre comment créer un modèle avec le conteneur d'exécution TensorFlow optimisé us-docker.pkg.dev/vertex-ai-restricted/prediction/tf_opt-cpu.nightly:latest. Pour déployer ce modèle, vous utilisez le même processus que celui que vous utilisez pour déployer un modèle avec d'autres conteneurs TensorFlow Serving prédéfinis.

Pour en savoir plus sur la méthode ModelServiceClient utilisée dans cet exemple, consultez la page Classe ModelServiceClient. Pour en savoir plus sur le déploiement de modèles à l'aide de Vertex AI, consultez la section Déployer un modèle à l'aide de l'API Vertex AI. Pour en savoir plus sur les paramètres allow_precompilation et allow_compression, consultez la section Optimisations des modèles décrite précédemment dans cette page.

    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

Options d'optimisation du modèle

Lorsque vous déployez un modèle à l'aide de l'environnement d'exécution TensorFlow optimisé, vous pouvez activer deux fonctionnalités qui pourraient optimiser davantage la diffusion de modèles TensorFlow.

  1. Précompilation du modèle XLA
  2. Optimisation affectant la compression du modèle

Vous pouvez activer simultanément la précompilation du modèle XLA et l'optimisation de la compression des modèles. Les rubriques suivantes expliquent comment activer ces fonctionnalités à l'aide d'options lors du déploiement.

Activer la précompilation du modèle XLA

Pour configurer l'environnement d'exécution TensorFlow optimisé afin de précompiler des modèles, définissez l'option allow_precompilation sur true. La précompilation de modèle XLA fonctionne pour différents types de modèles et, dans la plupart des cas, améliore les performances. La précompilation XLA est optimale pour les requêtes comportant des lots de grande taille.

La précompilation du modèle XLA se produit lorsqu'arrive la première requête avec la nouvelle taille de lot. Pour vous assurer que l'environnement d'exécution est initialisé avant la première requête, vous pouvez inclure un fichier de requêtes de préchauffage. Pour en savoir plus, consultez la page SavedModel Warmup sur le site Web de TensorFlow.

La précompilation XLA prend entre quelques secondes et plusieurs minutes, selon la complexité du modèle. Si vous utilisez la précompilation de modèle XLA, vous devez tenir compte des points suivants.

  • Si vous utilisez un fichier de préchauffage, essayez d'inclure des requêtes avec des tailles de lots qui correspondent aux tailles de lot attendues par votre modèle. La présence d'un grand nombre de requêtes dans votre fichier de préchauffage ralentit le démarrage de votre serveur de modèles.

  • Si vous souhaitez que votre modèle reçoive des requêtes avec différentes tailles de lot, vous pouvez activer le traitement par lots côté serveur avec un ensemble de valeurs fixes pour allow_batch_sizes. Pour en savoir plus sur l'activation du traitement par lots côté serveur,

    consultez la section Activer le traitement par lots des requêtes côté serveur pour TensorFlow sur le site Web de Tensorflow.

  • Comme la précompilation XLA ajoute de la surcharge de mémoire, certains modèles volumineux peuvent échouer avec une erreur de type mémoire insuffisante sur le GPU.

Il est recommandé de tester la précompilation XLA sur le modèle avant d'activer cette fonctionnalité en production.

Activer l'optimisation de la compression des modèles

Pour configurer l'environnement d'exécution TensorFlow optimisé afin d'utiliser l'optimisation de compression de modèles, définissez son option allow_compression sur true. Testez l'effet que produit l'activation de cette option sur la précision de votre modèle, puis déterminer si vous souhaitez l'activer en production.

Désactiver les optimisations

Pour configurer un environnement d'exécution TensorFlow optimisé afin d'exécuter des modèles sans optimisation, définissez son option disable_optimizer sur true.

Limites de l'environnement d'exécution TensorFlow optimisé

L'environnement d'exécution TensorFlow optimisé présente les limites suivantes :

  • L'environnement d'exécution TensorFlow optimisé n'est pas compatible avec des GPU NVIDIA plus anciens, tels que Tesla K80, Tesla P4 et Tesla P100.
  • L'environnement d'exécution TensorFlow optimisé n'est actuellement compatible qu'avec l'explicabilité échantillonnée Shapley.

Tarifs

Le déploiement de modèles à l'aide de l'environnement d'exécution TensorFlow optimisé n'engendre pas de frais supplémentaires. Son prix est identique aux autres déploiements de prédictions pour lesquels vous êtes facturé en fonction du nombre de VM et d'accélérateurs utilisés. Pour en savoir plus, consultez les tarifs de Vertex AI.