TensorFlow Serving

Ce document explique comment configurer le déploiement de Google Kubernetes Engine afin de pouvoir collecter des métriques à partir de TensorFlow Serving à l'aide de Google Cloud Managed Service pour Prometheus. Ce document vous explique comment :

  • configurer TF Serving pour générer des rapports sur les métriques ;
  • configurer une ressource PodMonitoring pour Managed Service pour Prometheus afin de collecter les métriques exportées ;
  • accéder à un tableau de bord dans Cloud Monitoring pour consulter les métriques ;

Ces instructions ne s'appliquent que si vous utilisez une collecte gérée avec Managed Service pour Prometheus. Si vous utilisez une collecte autodéployée, consultez la documentation de TF Serving pour obtenir des informations sur l'installation.

Ces instructions sont fournies à titre d'exemple et devraient fonctionner dans la plupart des environnements Kubernetes. Si vous rencontrez des difficultés pour installer une application ou un exportateur en raison de règles de sécurité ou d'organisation restrictives, nous vous recommandons de consulter la documentation Open Source pour obtenir de l'aide.

Pour en savoir plus sur TensorFlow Serving, consultez TF Serving. Pour en savoir plus sur la configuration de TF Serving sur Google Kubernetes Engine, consultez le guide GKE pour TF Serving.

Prérequis

Pour collecter des métriques à partir de TF Serving à l'aide de Managed Service pour Prometheus et de la collecte gérée, votre déploiement doit répondre aux exigences suivantes:

  • Votre cluster doit exécuter Google Kubernetes Engine version 1.21.4-gke.300 ou ultérieure.
  • Vous devez exécuter Managed Service pour Prometheus en ayant activé la collecte gérée. Pour en savoir plus, consultez la page Premiers pas avec la collecte gérée.

TF Serving expose les métriques au format Prometheus lorsque l'indicateur --monitoring_config_file est utilisé pour spécifier un fichier contenant un tampon de protocole MonitoringConfig.

Voici un exemple de tampon de protocole MonitoringConfig:

prometheus_config {
  enable: true,
  path: "/monitoring/prometheus/metrics"
}

Si vous suivez le guide de configuration de Google Kubernetes Engine, Diffuser un modèle avec un seul GPU dans GKE, le protocole MonitoringConfig est défini dans la configuration par défaut.

Si vous configurez vous-même TF Serving, procédez comme suit pour spécifier le tampon de protocole MonitoringConfig:

  1. Créez un fichier nommé monitoring_config.txt contenant le tampon de protocole MonitoringConfig dans le répertoire du modèle, avant d'importer le répertoire dans le bucket Cloud Storage.

  2. Importez le répertoire du modèle dans le bucket Cloud Storage:

    gcloud storage cp MODEL_DIRECTORY gs://CLOUD_STORAGE_BUCKET_NAME --recursive
    
  3. Définissez la variable d'environnement PATH_TO_MONITORING_CONFIG sur le chemin d'accès du fichier monitoring_config.txt importé, par exemple:

    export PATH_TO_MONITORING_CONFIG=/data/tfserve-model-repository/monitoring_config.txt
    
  4. Ajoutez l'indicateur et la valeur suivants à la commande du conteneur dans le fichier YAML de déploiement de votre conteneur:

    "--monitoring_config=$PATH_TO_MONITORING_CONFIG"
    

    Par exemple, votre commande peut ressembler à ceci:

    command: [ "tensorflow_model_server", "--model_name=$MODEL_NAME", "--model_base_path=/data/tfserve-model-repository/$MODEL_NAME", "--rest_api_port=8000", "--monitoring_config_file=$PATH_TO_MONITORING_CONFIG" ]
    

Modifier la configuration de TF Serving

Modifiez la configuration de TF Serving comme indiqué dans l'exemple suivant:

# Copyright 2025 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: tfserve-deployment
  labels:
    app: tfserve-server
spec:
  selector:
    matchLabels:
      app: tfserve
  replicas: 1
  template:
    metadata:
      labels:
        app: tfserve
      annotations:
        gke-gcsfuse/volumes: 'true'
    spec:
      nodeSelector:
        cloud.google.com/gke-accelerator: nvidia-l4
      containers:
        - name: tfserve-server
          image: 'tensorflow/serving:2.13.1-gpu'
          command:
            - tensorflow_model_server
            - '--model_name=$MODEL_NAME'
            - '--model_base_path=/data/tfserve-model-repository/$MODEL_NAME'
            - '--rest_api_port=8000'
+           - '--monitoring_config_file=$PATH_TO_MONITORING_CONFIG'
          ports:
            - name: http
              containerPort: 8000
            - name: grpc
              containerPort: 8500
          resources:
            ...
          volumeMounts:
            - name: gcs-fuse-csi-vol
              mountPath: /data
              readOnly: false
      serviceAccountName: $K8S_SA_NAME
      volumes:
        - name: gcs-fuse-csi-vol
          csi:
            driver: gcsfuse.csi.storage.gke.io
            readOnly: false
            volumeAttributes:
              bucketName: $GSBUCKET
              mountOptions: implicit-dirs

Vous devez ajouter toutes les lignes précédées du symbole + à votre configuration.

Pour appliquer les modifications de configuration à partir d'un fichier local, exécutez la commande suivante :

kubectl apply -n NAMESPACE_NAME -f FILE_NAME

Vous pouvez également utiliser Terraform pour gérer vos configurations.

Pour vérifier que TF Serving émet des métriques sur les points de terminaison attendus, procédez comme suit:

  1. Configurez le transfert de port à l'aide de la commande suivante :
      kubectl -n NAMESPACE_NAME port-forward POD_NAME 8000
    
  2. Accédez au point de terminaison localhost:8000/monitoring/prometheus/metrics à l'aide du navigateur ou de l'utilitaire curl dans une autre session de terminal.

Définir une ressource PodMonitoring

Pour la découverte des cibles, l'opérateur Managed Service pour Prometheus doit disposer d'une ressource PodMonitoring correspondant à TF Serving dans le même espace de noms.

Vous pouvez utiliser la configuration PodMonitoring suivante :

# Copyright 2025 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

apiVersion: monitoring.googleapis.com/v1
kind: PodMonitoring
metadata:
  name: tfserve
  labels:
    app.kubernetes.io/name: tfserve
    app.kubernetes.io/part-of: google-cloud-managed-prometheus
spec:
  endpoints:
  - port: 8000
    scheme: http
    interval: 30s
    path: /monitoring/prometheus/metrics
  selector:
    matchLabels:
      app: tfserve

Pour appliquer les modifications de configuration à partir d'un fichier local, exécutez la commande suivante :

kubectl apply -n NAMESPACE_NAME -f FILE_NAME

Vous pouvez également utiliser Terraform pour gérer vos configurations.

Vérifier la configuration

Vous pouvez utiliser l'Explorateur de métriques pour vérifier que vous avez correctement configuré TF Serving. L'ingestion de vos métriques par Cloud Monitoring peut prendre une ou deux minutes.

Procédez comme suit pour vérifier que les métriques ont bien été ingérées :

  1. Dans la console Google Cloud, accédez à la page  Explorateur de métriques :

    Accéder à l'explorateur de métriques

    Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est Monitoring.

  2. Dans la barre d'outils du volet de création de requêtes, sélectionnez le bouton nommé  MQL ou  PromQL.
  3. Vérifiez que PromQL est sélectionné dans le bouton d'activation Langage. Le bouton de langage se trouve dans la barre d'outils qui vous permet de mettre en forme votre requête.
  4. Saisissez et exécutez la requête suivante :
    up{job="tfserve", cluster="CLUSTER_NAME", namespace="NAMESPACE_NAME"}

Afficher les tableaux de bord

L'intégration à Cloud Monitoring comprend le tableau de bord Présentation de TensorFlow Serving-Prometheus. Les tableaux de bord sont installés automatiquement lorsque vous configurez l'intégration. Vous pouvez également afficher des aperçus statiques de tableaux de bord sans installer l'intégration.

Pour afficher un tableau de bord installé, procédez comme suit :

  1. Dans la console Google Cloud, accédez à la page Tableaux de bord .

    Accéder à la page Tableaux de bord

    Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est Monitoring.

  2. Sélectionnez l'onglet Liste des tableaux de bord.
  3. Choisissez la catégorie Intégrations.
  4. Cliquez sur le nom du tableau de bord, par exemple Présentation de TensorFlow Serving-Prometheus.

Pour afficher un aperçu statique du tableau de bord, procédez comme suit :

  1. Dans la console Google Cloud, accédez à la page Intégrations  :

    Accéder à la page Intégrations

    Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est Monitoring.

  2. Cliquez sur le filtre de plate-forme de déploiement Kubernetes Engine.
  3. Recherchez l'intégration TensorFlow Serving, puis cliquez sur Afficher les détails.
  4. Sélectionnez l'onglet Tableaux de bord.

Dépannage

Pour en savoir plus sur la résolution des problèmes d'ingestion de métriques, consultez la section Problèmes liés à la collecte par les exportateurs dans la section Résoudre les problèmes côté ingestion.