Exécuter des inférences conformes aux bonnes pratiques avec les recettes de démarrage rapide d'inférence GKE


Cette page explique comment utiliser le démarrage rapide GKE Inference pour simplifier le déploiement des charges de travail d'inférence d'IA/ML sur Google Kubernetes Engine (GKE). Inference Quickstart est un utilitaire qui vous permet de spécifier vos exigences commerciales en matière d'inférence et d'obtenir des configurations Kubernetes optimisées basées sur les bonnes pratiques et les benchmarks de Google pour les modèles, les serveurs de modèles, les accélérateurs (GPU, TPU) et le scaling. Cela vous évite d'avoir à ajuster et tester manuellement les configurations, ce qui peut prendre beaucoup de temps.

Cette page s'adresse aux ingénieurs en machine learning (ML), aux administrateurs et opérateurs de plate-forme, ainsi qu'aux spécialistes des données et de l'IA qui souhaitent comprendre comment gérer et optimiser efficacement GKE pour l'inférence d'IA/ML. Pour en savoir plus sur les rôles courants et les exemples de tâches que nous citons dans le contenu Google Cloud , consultez Rôles utilisateur et tâches courantes de GKE Enterprise.

Pour en savoir plus sur les concepts et la terminologie de la mise en service de modèles, et sur la façon dont les fonctionnalités d'IA générative de GKE peuvent améliorer et soutenir les performances de mise en service de vos modèles, consultez À propos de l'inférence de modèles sur GKE.

Avant de lire cette page, assurez-vous de connaître Kubernetes, GKE et le service de modèles.

Utiliser le démarrage rapide de l'inférence

Voici les principales étapes à suivre pour utiliser le démarrage rapide de l'inférence. Cliquez sur les liens pour obtenir des instructions détaillées.

  1. Afficher les bonnes pratiques personnalisées : sur la page "IA/ML GKE" de la console Google Cloud ou dans Google Cloud CLI dans le terminal, commencez par fournir des entrées telles que votre modèle open source préféré (par exemple, Llama, Gemma ou Mistral).
    • Vous pouvez spécifier la latence cible de votre application, en indiquant si elle est sensible à la latence (comme un chatbot) ou au débit (comme les analyses par lot).
    • En fonction de vos besoins, le démarrage rapide de l'inférence fournit des choix d'accélérateurs, des métriques de performances et des manifestes Kubernetes, qui vous donnent un contrôle total pour le déploiement ou d'autres modifications. Les manifestes générés font référence à des images de serveur de modèle publiques. Vous n'avez donc pas besoin de créer ces images vous-même.
  2. Déployer les fichiers manifestes : déployez les fichiers manifestes recommandés à l'aide de la console Google Cloud ou de la commande kubectl apply. Avant de déployer, vous devez vous assurer de disposer d'un quota d'accélérateurs suffisant pour les GPU ou TPU sélectionnés dans votre projet Google Cloud .
  3. Surveiller les performances : utilisez Cloud Monitoring pour surveiller les métriques de performances de la charge de travail fournies par GKE. Vous pouvez afficher les tableaux de bord du serveur de modèle et affiner votre déploiement selon vos besoins.

Avantages

Le guide de démarrage rapide de l'inférence vous aide à gagner du temps et des ressources en fournissant des configurations optimisées. Ces optimisations améliorent les performances et réduisent les coûts d'infrastructure de la manière suivante :

  • Vous recevez des bonnes pratiques détaillées et personnalisées pour définir les configurations de l'accélérateur (GPU et TPU), du serveur de modèle et du scaling. GKE met régulièrement à jour l'outil avec les derniers correctifs, images et benchmarks de performances.
  • Vous pouvez spécifier les exigences de latence et de débit de votre charge de travail à l'aide de l'interface utilisateur de la consoleGoogle Cloud ou d'une interface de ligne de commande, et obtenir des bonnes pratiques détaillées et personnalisées sous forme de fichiers manifestes de déploiement Kubernetes.

Cas d'utilisation

Le démarrage rapide de l'inférence convient aux scénarios suivants :

  • Découvrez les architectures d'inférence GKE optimales : si vous passez d'un autre environnement, tel qu'un environnement sur site ou un autre fournisseur de cloud, et que vous souhaitez obtenir les architectures d'inférence recommandées les plus récentes sur GKE pour vos besoins spécifiques en termes de performances.
  • Accélérer les déploiements d'inférence d'IA/ML : si vous êtes un utilisateur Kubernetes expérimenté et que vous souhaitez commencer rapidement à déployer des charges de travail d'inférence d'IA, le guide de démarrage rapide sur l'inférence vous aide à découvrir et à implémenter les meilleures pratiques de déploiement sur GKE, avec des configurations YAML détaillées basées sur les bonnes pratiques.
  • Découvrez les TPU pour améliorer les performances : si vous utilisez déjà Kubernetes sur GKE avec des GPU, vous pouvez utiliser le démarrage rapide de l'inférence pour découvrir les avantages de l'utilisation de TPU afin d'améliorer potentiellement les performances.

Fonctionnement

Le démarrage rapide de l'inférence fournit des bonnes pratiques personnalisées basées sur les benchmarks internes exhaustifs de Google sur les performances d'un seul réplica pour les combinaisons de modèles, de serveurs de modèles et de topologies d'accélérateurs. Ces benchmarks représentent graphiquement la latence par rapport au débit, y compris la taille de la file d'attente et les métriques du cache KV, qui tracent les courbes de performances pour chaque combinaison.

Comment sont générées les bonnes pratiques personnalisées ?

Nous mesurons la latence en délai normalisé par jeton de sortie (NTPOT) en millisecondes et le débit en jetons de sortie par seconde, en saturant les accélérateurs. Pour en savoir plus sur ces métriques de performances, consultez À propos de l'inférence de modèle sur GKE.

L'exemple de profil de latence suivant illustre le point d'inflexion où le débit se stabilise (en vert), le point post-inflexion où la latence se dégrade (en rouge) et la zone idéale (en bleu) pour un débit optimal à la latence cible. Le guide de démarrage rapide de l'inférence fournit des données de performances et des configurations pour cette zone idéale.

Profil de latence avec un repère vert indiquant moins de 2 000 jetons de sortie par seconde et un repère rouge indiquant plus de 2 000 jetons de sortie par seconde

En fonction des exigences de latence d'une application d'inférence, le démarrage rapide de l'inférence identifie les combinaisons appropriées et détermine le point de fonctionnement optimal sur la courbe de latence-débit. Ce point définit le seuil de l'autoscaler horizontal de pods (AHP), avec une marge pour tenir compte de la latence de scale-up. Le seuil global indique également le nombre initial de répliques nécessaires, bien que le AHP ajuste dynamiquement ce nombre en fonction de la charge de travail.

Analyse comparative

Les configurations et les données de performances fournies sont basées sur des benchmarks qui utilisent l'ensemble de données ShareGPT pour envoyer du trafic avec la distribution d'entrées et de sorties suivante.

Jetons d'entrée Jetons de sortie
Min Médiane Moyenne P90 P99 Max Min Médiane Moyenne P90 P99 Max
4 108 226 635 887 1 024 1 132 195 488 778 1 024

Avant de commencer

Avant de commencer, effectuez les tâches suivantes :

  • Activez l'API Google Kubernetes Engine.
  • Activer l'API Google Kubernetes Engine
  • Si vous souhaitez utiliser Google Cloud CLI pour cette tâche, installez puis initialisez gcloud CLI. Si vous avez déjà installé gcloud CLI, assurez-vous de disposer de la dernière version en exécutant la commande gcloud components update.
  • Dans la console Google Cloud , sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud .

  • Assurez-vous que la facturation est activée pour votre projet Google Cloud .

  • Assurez-vous de disposer d'une capacité d'accélérateur suffisante pour votre projet :

  • Générez un jeton d'accès Hugging Face et un secret Kubernetes correspondant, si vous n'en avez pas déjà un. Pour créer un secret Kubernetes contenant le jeton Hugging Face, exécutez la commande suivante :

    kubectl create secret generic hf-secret \
        --from-literal=hf_api_token=HUGGING_FACE_TOKEN \
        --namespace=NAMESPACE
    

    Remplacez les valeurs suivantes :

    • HUGGING_FACE_TOKEN : jeton Hugging Face que vous avez créé précédemment.
    • NAMESPACE : espace de noms Kubernetes dans lequel vous souhaitez déployer votre serveur de modèle.
  • Certains modèles peuvent également vous demander d'accepter et de signer leur contrat de licence de consentement.

Se préparer à utiliser l'interface utilisateur GKE AI/ML

Si vous utilisez la console Google Cloud , vous devez également créer un cluster Autopilot, si aucun n'a déjà été créé dans votre projet. Suivez les instructions de la section Créer un cluster Autopilot.

Se préparer à utiliser l'interface de ligne de commande

Si vous utilisez gcloud CLI pour exécuter le guide de démarrage rapide sur l'inférence, vous devez également exécuter les commandes supplémentaires suivantes :

  1. Activez l'API gkerecommender.googleapis.com :

    gcloud services enable gkerecommender.googleapis.com
    
  2. Définissez le projet de quota de facturation que vous utilisez pour les appels d'API :

    gcloud config set billing/quota_project PROJECT_ID
    
  3. Vérifiez que votre version de gcloud CLI est au moins la version 526.0.0. Si ce n'est pas le cas, exécutez la commande suivante :

    gcloud components update
    

Limites

Avant de commencer à utiliser le guide de démarrage rapide de l'inférence, tenez compte des limites suivantes :

  • Le déploiement de modèles dans la consoleGoogle Cloud n'est possible que sur les clusters Autopilot.
  • Le guide de démarrage rapide de l'inférence ne fournit pas de profils pour tous les modèles compatibles avec un serveur de modèle donné.

Afficher les configurations optimisées pour l'inférence de modèle

Cette section explique comment générer et afficher des recommandations de configuration à l'aide de la console Google Cloud ou de la ligne de commande.

Console

  1. Accéder à la page IA/ML GKE dans la Google Cloud console

  2. Cliquez sur Déployer des modèles.
  3. Sélectionnez un modèle à afficher. Les modèles compatibles avec le guide de démarrage rapide de l'inférence sont affichés avec le tag Optimisé.

    • Si vous avez sélectionné un modèle de fondation, une page de modèle s'ouvre. Cliquez sur Déployer. Vous pouvez toujours modifier la configuration avant le déploiement proprement dit.
    • Vous êtes invité à créer un cluster Autopilot s'il n'y en a pas dans votre projet. Suivez les instructions de la section Créer un cluster Autopilot. Après avoir créé le cluster, revenez à la page GKE AI/ML de la console Google Cloud pour sélectionner un modèle.

    La page de déploiement du modèle est préremplie avec le modèle que vous avez sélectionné, ainsi que le serveur de modèle et l'accélérateur recommandés. Vous pouvez également configurer des paramètres tels que la latence maximale.

  4. Pour afficher le fichier manifeste avec la configuration recommandée, cliquez sur Afficher YAML.

gcloud

Utilisez la commande gcloud alpha container ai profiles pour explorer et afficher les combinaisons optimisées de modèle, de serveur de modèle, de version du serveur de modèle et d'accélérateurs :

Modèles

Pour explorer et sélectionner un modèle, utilisez l'option models.

  gcloud alpha container ai profiles models list

Serveurs de modèles

Pour explorer les serveurs de modèles recommandés pour le modèle qui vous intéresse, utilisez l'option model-servers. Exemple :

  gcloud alpha container ai profiles model-servers list \
      --model=meta-llama/Meta-Llama-3-8B

La sortie ressemble à ceci :

  Supported model servers:
  -  vllm

Versions du serveur

Vous pouvez également utiliser l'option model-server-versions pour explorer les versions compatibles du serveur de modèle qui vous intéressent. Si vous ignorez cette étape, le guide de démarrage rapide de l'inférence utilise par défaut la dernière version. Exemple :

  gcloud alpha container ai profiles model-server-versions list \
      --model=meta-llama/Meta-Llama-3-8B \
      --model-server=vllm

La sortie ressemble à ceci :

  Supported model server versions:
  -  e92694b6fe264a85371317295bca6643508034ef
  -  v0.7.2

Accélérateurs

Pour explorer les accélérateurs recommandés pour la combinaison de modèle et de serveur de modèle qui vous intéresse, utilisez l'option accelerators. Exemple :

  gcloud alpha container ai profiles accelerators list \
      --model=deepseek-ai/DeepSeek-R1-Distill-Qwen-7B \
      --model-server-version=v0.7.2

La sortie ressemble à ceci :

  Supported accelerators:
  accelerator          | model                                   | model server | model server version                     | accelerator count | output tokens per second | ntpot ms
  ---------------------|-----------------------------------------|--------------|------------------------------------------|-------------------|--------------------------|---------
  nvidia-tesla-a100    | deepseek-ai/DeepSeek-R1-Distill-Qwen-7B | vllm         | v0.7.2                                   | 1                 | 3357                     | 72
  nvidia-h100-80gb     | deepseek-ai/DeepSeek-R1-Distill-Qwen-7B | vllm         | v0.7.2                                   | 1                 | 6934                     | 30

  For more details on each accelerator, use --format=yaml

Le résultat renvoie une liste de types d'accélérateurs et les métriques suivantes :

  • Débit, en jetons de sortie par seconde
  • Délai normalisé par jeton de sortie (NTPOT), en millisecondes

Les valeurs représentent les performances observées au point où le débit cesse d'augmenter et où la latence commence à augmenter de manière spectaculaire (c'est-à-dire le point d'inflexion ou de saturation) pour un profil donné avec ce type d'accélérateur. Pour en savoir plus sur ces métriques de performances, consultez À propos de l'inférence de modèle sur GKE.

Pour d'autres options, consultez la documentation de Google Cloud CLI.

Une fois que vous avez choisi un modèle, un serveur de modèle, une version de serveur de modèle et un accélérateur, vous pouvez créer un fichier manifeste de déploiement.

Déployer les configurations recommandées

Cette section explique comment générer et déployer des recommandations de configuration à l'aide de la console Google Cloud ou de la ligne de commande.

Console

  1. Accéder à la page IA/ML GKE dans la Google Cloud console

  2. Cliquez sur Déployer des modèles.
  3. Sélectionnez le modèle que vous souhaitez déployer. Les modèles compatibles avec le guide de démarrage rapide de l'inférence sont affichés avec le tag Optimisé.

    • Si vous avez sélectionné un modèle de fondation, une page de modèle s'ouvre. Cliquez sur Déployer. Vous pouvez toujours modifier la configuration avant le déploiement proprement dit.
    • Vous êtes invité à créer un cluster Autopilot s'il n'y en a pas dans votre projet. Suivez les instructions de la section Créer un cluster Autopilot. Après avoir créé le cluster, revenez à la page GKE AI/ML de la console Google Cloud pour sélectionner un modèle.

    La page de déploiement du modèle est préremplie avec le modèle que vous avez sélectionné, ainsi que le serveur de modèle et l'accélérateur recommandés. Vous pouvez également configurer des paramètres tels que la latence maximale.

  4. (Facultatif) Pour afficher le fichier manifeste avec la configuration recommandée, cliquez sur Afficher YAML.

  5. Pour déployer le fichier manifeste avec la configuration recommandée, cliquez sur Déployer. L'opération de déploiement peut prendre plusieurs minutes.

Pour afficher votre déploiement, accédez à la page Kubernetes Engine > Charges de travail.

gcloud

  1. Générez des fichiers manifestes : dans le terminal, utilisez l'option manifests pour générer des fichiers manifestes Deployment, Service et PodMonitoring :

    gcloud alpha container ai profiles manifests create
    

    Utilisez les paramètres obligatoires --model, --model-server et --accelerator-type pour personnaliser votre fichier manifeste.

    Vous pouvez également définir les paramètres suivants :

    • --target-ntpot-milliseconds : définissez ce paramètre pour spécifier votre seuil AHP. Ce paramètre vous permet de définir un seuil de scaling pour maintenir la latence P50 du temps normalisé par jeton de sortie (NTPOT), qui est mesurée au cinquantième quartile, en dessous de la valeur spécifiée. Choisissez une valeur supérieure à la latence minimale de votre accélérateur. Le HPA est configuré pour un débit maximal si vous spécifiez une valeur NTPOT supérieure à la latence maximale de votre accélérateur. Exemple :

      gcloud alpha container ai profiles manifests create \
          --model=google/gemma-2-27b-it \
          --model-server=vllm \
          --model-server-version=v0.7.2 \
          --accelerator-type=nvidia-l4 \
          --target-ntpot-milliseconds=200
      
    • --model-server-version : version du serveur de modèle. Si aucune version n'est spécifiée, la version la plus récente est utilisée par défaut.

    • --namespace : espace de noms dans lequel déployer les fichiers manifestes. L'espace de noms par défaut est "default".

    • --output : les valeurs valides incluent manifest, comments et all. Par défaut, ce paramètre est défini sur all. Vous pouvez choisir de n'afficher que le fichier manifeste pour déployer des charges de travail ou de n'afficher que les commentaires si vous souhaitez consulter les instructions pour activer des fonctionnalités.

    • --output-path : si cette option est spécifiée, le résultat est enregistré dans le chemin d'accès fourni au lieu d'être imprimé dans le terminal. Vous pouvez ainsi modifier le résultat avant de le déployer. Par exemple, vous pouvez l'utiliser avec l'option --output=manifest si vous souhaitez enregistrer votre fichier manifeste dans un fichier YAML. Exemple :

      gcloud alpha container ai profiles manifests create \
          --model deepseek-ai/DeepSeek-R1-Distill-Qwen-7B \
          --model-server vllm \
          --accelerator-type=nvidia-tesla-a100 \
          --output=manifest \
          --output-path  /tmp/manifests.yaml
      

    Pour plus d'options, consultez la documentation de Google Cloud CLI.

  2. Provisionnez votre infrastructure : assurez-vous que votre infrastructure est correctement configurée pour le déploiement, la surveillance et la mise à l'échelle des modèles en suivant ces étapes de provisionnement.

  3. Déployez les fichiers manifestes : exécutez la commande kubectl apply et transmettez le fichier YAML pour vos fichiers manifestes. Exemple :

    kubectl apply -f ./manifests.yaml
    

Provisionner votre infrastructure

Suivez ces étapes pour vous assurer que votre infrastructure est correctement configurée pour le déploiement, la surveillance et la mise à l'échelle des modèles :

  1. Créer un cluster : vous pouvez diffuser votre modèle sur des clusters GKE Autopilot ou Standard. Nous vous recommandons d'utiliser un cluster Autopilot pour une expérience Kubernetes entièrement gérée. Pour choisir le mode de fonctionnement GKE le mieux adapté à vos charges de travail, consultez la section Choisir un mode de fonctionnement GKE.

    Si vous n'avez pas de cluster existant, procédez comme suit :

    Autopilot

    Suivez ces instructions pour créer un cluster Autopilot. GKE gère le provisionnement des nœuds avec une capacité de GPU ou de TPU en fonction des fichiers manifestes de déploiement, si vous disposez du quota nécessaire dans votre projet.

    Standard

    1. Créez un cluster zonal ou régional.
    2. Créez un pool de nœuds avec les accélérateurs appropriés. Suivez ces étapes en fonction du type d'accélérateur choisi :

  2. (Facultatif, mais recommandé) Activez les fonctionnalités d'observabilité : dans la section des commentaires du fichier manifeste généré, des commandes supplémentaires sont fournies pour activer les fonctionnalités d'observabilité suggérées. L'activation de ces fonctionnalités fournit plus d'insights pour vous aider à surveiller les performances et l'état des charges de travail et de l'infrastructure sous-jacente.

    Voici un exemple de commande permettant d'activer les fonctionnalités d'observabilité :

    gcloud beta container clusters update $CLUSTER_NAME \
        --project=$PROJECT_ID \
        --location=$LOCATION \
        --enable-managed-prometheus \
        --logging=SYSTEM,WORKLOAD \
        --monitoring=SYSTEM,DEPLOYMENT,HPA,POD,DCGM \
        --auto-monitoring-scope=ALL
    

    Pour en savoir plus, consultez Surveiller vos charges de travail d'inférence.

  3. (AHP uniquement) Déployez un adaptateur de métriques : un adaptateur de métriques, tel que l'adaptateur de métriques personnalisées Stackdriver, est nécessaire si des ressources AHP ont été générées dans les manifestes de déploiement. L'adaptateur de métriques permet à AHP d'accéder aux métriques du serveur de modèle qui utilisent l'API kube external metrics. Pour déployer l'adaptateur, consultez la documentation de l'adaptateur sur GitHub.

Tester les points de terminaison de votre déploiement

Si vous avez déployé le fichier manifeste à l'aide de la ligne de commande, le service déployé est exposé au point de terminaison suivant :

http://model-model_server-service:port/

Testez votre service. Dans un autre terminal, configurez le transfert de port en exécutant la commande suivante :

kubectl port-forward service/model-model_server-service 8000:8000

Pour obtenir des exemples de création et d'envoi d'une requête à votre point de terminaison, consultez la documentation vLLM.

Surveiller vos charges de travail d'inférence

Pour surveiller vos charges de travail d'inférence déployées, accédez à l'explorateur de métriques dans la console Google Cloud .

Activer l'autosurveillance

GKE inclut une fonctionnalité de surveillance automatique qui fait partie des fonctionnalités d'observabilité plus larges. Cette fonctionnalité analyse le cluster à la recherche de charges de travail qui s'exécutent sur des serveurs de modèles compatibles et déploie les ressources PodMonitoring qui permettent d'afficher les métriques de ces charges de travail dans Cloud Monitoring. Pour en savoir plus sur l'activation et la configuration de la surveillance automatique, consultez Configurer la surveillance automatique des applications pour les charges de travail.

Une fois la fonctionnalité activée, GKE installe des tableaux de bord prédéfinis pour surveiller les applications pour les charges de travail compatibles.

Si vous effectuez le déploiement à partir de la page "IA/ML GKE" de la console Google Cloud , les ressources PodMonitoring et AHP sont créées automatiquement pour vous à l'aide de la configuration targetNtpot.

Dépannage

  • Si vous définissez une latence trop faible, le guide de démarrage rapide de l'inférence risque de ne pas générer de recommandation. Pour résoudre ce problème, sélectionnez une latence cible comprise entre la latence minimale et maximale observée pour les accélérateurs sélectionnés.
  • Le guide de démarrage rapide pour l'inférence existe indépendamment des composants GKE. La version de votre cluster n'a donc pas d'incidence directe sur l'utilisation du service. Toutefois, nous vous recommandons d'utiliser un cluster récent ou à jour pour éviter toute divergence de performances.
  • Si vous obtenez une erreur PERMISSION_DENIED pour les commandes gkerecommender.googleapis.com indiquant qu'un projet de quota est manquant, vous devez le définir manuellement. Exécutez gcloud config set billing/quota_project PROJECT_ID pour résoudre ce problème.

Étapes suivantes