Ce document est la première partie d'une série destinée aux ingénieurs en machine learning (ML) qui débutent avec GKE et qui souhaitent commencer à exécuter des charges de travail d'inférence sur GKE le plus rapidement possible.
Dans cette série, nous n'essaierons pas de vous présenter toutes les options GKE disponibles. Nous vous fournissons plutôt les informations de base dont vous avez besoin pour déployer vos charges de travail sur GKE. Cette série comprend les documents suivants :
- Pourquoi utiliser GKE pour l'inférence d'IA/ML (ce document)
- À propos de l'inférence de modèles d'IA/ML sur GKE
- Concepts d'autoscaling simplifiés pour les charges de travail d'IA/de ML dans GKE
En tant que spécialiste de l'IA/du ML, vous pouvez utiliser Google Kubernetes Engine (GKE) pour gérer vos déploiements de modèles. GKE est un service qui vous permet d'automatiser le déploiement, le scaling et la surveillance de vos charges de travail d'inférence basées sur Kubernetes et de l'infrastructure de calcul sur laquelle elles s'exécutent. Ce document présente certains des principaux avantages de l'utilisation de GKE pour l'inférence de modèles, y compris les suivants :
- Performances cohérentes des applications
- Accès simplifié au matériel d'inférence spécialisé
- Scaling automatique de vos charges de travail d'inférence
- Surveillance et journalisation automatisées des performances et de l'état des charges de travail
- Portabilité et flexibilité grâce à l'utilisation de normes ouvertes et de technologies Open Source
Avant de commencer
Avant de lire ce document, vous devez connaître les points suivants :
- Concepts fondamentaux de Kubernetes : découvrez les conteneurs, les pods, les nœuds et les clusters, et comment ils sont liés les uns aux autres.
- Modes de fonctionnement de GKE : découvrez les clusters GKE Autopilot et Standard, leurs utilisations et leurs différences.
Empaqueter vos modèles pour des performances cohérentes
Une inférence de modèle cohérente et fiable est essentielle pour votre application d'IA. GKE peut réduire la complexité opérationnelle de la gestion de l'inférence à grande échelle. En empaquetant votre modèle entraîné, votre serveur d'inférence et toutes les dépendances dans un conteneur, vous créez un artefact standardisé et portable qui s'exécute de manière cohérente sur GKE. La conteneurisation permet de réduire les erreurs causées par des dépendances incompatibles ou des environnements incohérents. GKE déploie et gère automatiquement ces conteneurs. Il gère des tâches telles que le redémarrage des charges de travail en cas de plantage ou le re-provisionnement des ressources pour stabiliser les performances de vos charges de travail d'IA/ML.
Utiliser des GPU et des TPU pour réduire la latence de diffusion
La latence est un problème pour les charges de travail d'inférence, et certains modèles complexes s'appuient sur des accélérateurs matériels tels que les GPU et les TPU pour accélérer le service d'inférence. GKE simplifie l'utilisation de GPU ou de TPU pour vos charges de travail d'inférence sensibles à la latence. Vous choisissez les configurations matérielles spécifiques qui répondent le mieux à vos exigences en termes de performances et de coûts, et GKE provisionne et gère automatiquement le matériel que vous choisissez. Par exemple, GKE automatise l'installation des pilotes NVIDIA, une étape qui nécessite généralement une configuration manuelle dans Kubernetes.
GKE propose également des fonctionnalités de gestion des ressources qui vous permettent d'utiliser plus efficacement les ressources TPU et GPU pour le service d'inférence. Par exemple, vous pouvez utiliser GKE pour planifier ou partager des pools de GPU ou de TPU sur plusieurs modèles, ou vous pouvez utiliser des accélérateurs avec des VM Spot pour augmenter la rentabilité des charges de travail d'inférence tolérantes aux pannes. Ces fonctionnalités vous aident à maximiser l'utilisation des ressources d'accélérateur tout en optimisant la latence et le coût de diffusion.
Gérer automatiquement les fluctuations du trafic
Le trafic et la charge des charges de travail d'inférence en temps réel peuvent être imprévisibles et dynamiques. Un pic de demande peut entraîner une augmentation de la latence et une baisse des performances. GKE propose une approche multicouche de l'autoscaling afin que vous puissiez ajouter ou supprimer automatiquement des ressources pour répondre à la demande variable en termes d'inférence. Par exemple, vous pouvez utiliser l'autoscaler horizontal de pods (AHP) pour ajuster automatiquement le nombre de pods dans un déploiement, ou l'autoscaler de cluster pour ajuster automatiquement le nombre de nœuds dans un pool de nœuds existant. En utilisant les fonctionnalités d'autoscaling de GKE, vous pouvez faire correspondre efficacement la quantité de ressources dont votre charge de travail d'inférence a besoin à la quantité de demande d'application.
Surveiller l'état et les performances de votre charge de travail d'inférence
GKE est intégré à la suite d'observabilité Google Cloud (Cloud Logging et Cloud Monitoring). Vous pouvez utiliser les fonctionnalités d'observabilité intégrées pour surveiller l'état et les performances de vos charges de travail d'inférence. Ces fonctionnalités d'observabilité vous offrent des informations et une visibilité sur les performances de votre charge de travail après son déploiement. Par exemple, vous pouvez vous demander si votre modèle fonctionne comme prévu ou si votre charge de travail répond à vos exigences en termes de latence et de précision.
GKE génère automatiquement des rapports sur les métriques d'infrastructure, comme l'utilisation du processeur, de la mémoire et des accélérateurs. Pour répondre aux questions sur les performances spécifiques aux modèles, vous pouvez utiliser Google Cloud Managed Service pour Prometheus ou envoyer des métriques personnalisées depuis votre application d'inférence vers Cloud Monitoring. Par exemple, vous pouvez configurer la surveillance automatique des applications et surveiller les métriques d'inférence clés, telles que les requêtes par seconde (RPS). Vous pouvez également surveiller la dérive du concept en analysant les métriques spécifiques au modèle, telles que la distribution des données d'entrée, et déboguer les problèmes en effectuant une analyse de l'historique des journaux.
Utiliser GKE pour la portabilité et la flexibilité
En utilisant des normes ouvertes comme les conteneurs et des technologies Open Source comme Kubernetes, GKE vous permet de déplacer vos charges de travail de diffusion d'inférences vers différents emplacements, et d'utiliser différentes ressources et outils, à mesure que vos besoins évoluent. Par exemple, vous pouvez développer et tester votre application d'inférence sur GKE, puis déployer cette même application conteneurisée dans votre environnement sur site pour la production.
En conclusion, vous pouvez utiliser GKE pour simplifier la transition de vos modèles d'IA/de ML du développement à la production. GKE gère de nombreuses complexités liées à la gestion de l'infrastructure, ce qui vous permet de vous concentrer sur l'exécution de vos charges de travail d'inférence dans un environnement performant, évolutif et observable. Au cours de cette série, vous apprendrez à utiliser GKE pour transformer vos modèles d'IA/de ML en applications puissantes et prêtes pour la production.
Étapes suivantes
- À propos de l'inférence de modèles d'IA/ML sur GKE (document suivant de cette série)
- Découvrez comment diffuser un modèle avec un seul GPU dans GKE.
- Découvrez comment diffuser des LLM ouverts sur GKE avec une architecture préconfigurée.