Une fois qu'un modèle de machine learning est entraîné, l'étape suivante consiste à l'utiliser pour effectuer des prédictions sur de nouvelles données. Ce processus, appelé inférence, nécessite une stratégie qui dépend fortement des exigences de latence et de débit de votre application. L'inférence par lot, également appelée inférence hors connexion ou traitement asynchrone, est une méthode puissante et très efficace pour générer des prédictions sur un grand volume de données lorsque des réponses immédiates en temps réel ne sont pas requises.
L'inférence par lot consiste à utiliser un modèle de machine learning entraîné pour générer des prédictions sur un grand ensemble d'observations, ou "lot", en une seule fois.
Contrairement à l'inférence en ligne, où les prédictions sont effectuées sur des points de données uniques à mesure de leur arrivée, l'inférence par lot s'applique à des données collectées sur une période donnée. Cette approche privilégie un débit élevé et l'efficacité du calcul plutôt qu'une faible latence. Comme le traitement est effectué hors connexion et non en réponse directe à une requête utilisateur, on parle également d'inférence statique. Les prédictions sont générées et stockées pour une utilisation ultérieure.
Le choix entre l'inférence par lot et l'inférence en ligne est une décision architecturale fondamentale lors de la conception d'un système de machine learning. Chaque approche a un objectif différent et est optimisée pour des caractéristiques de performances différentes.
Fonctionnalité | Inférence par lot | Inférence en ligne |
Traitement des données | Traite un grand nombre de points de données en un seul job. | Traite un seul point de données ou un très petit groupe de points de données à mesure qu'ils arrivent. |
Optimisation principale | Débit élevé et rentabilité | Faible latence et réactivité immédiate. |
Latence | Latence élevée : les prédictions ne sont pas disponibles immédiatement (de quelques minutes à quelques heures). | Très faible latence : les prédictions sont renvoyées en quelques millisecondes. |
Appel | Déclenchement par programmation (par exemple, un job Cron) ou à la demande. | Déclenchement par une demande directe de l'utilisateur ou par un événement dans le système. |
Utilisation de ressources de calcul | Peut utiliser de puissantes ressources de calcul pendant une courte période, puis réduire l'échelle à zéro. | Nécessite qu'un serveur ou un point de terminaison soit constamment en cours d'exécution et prêt à accepter des requêtes. |
Exemple d'utilisation | Générer des recommandations de produits quotidiennes pour tous les utilisateurs d'un site d'e-commerce. | Prédire en temps réel si une transaction par carte de crédit est frauduleuse. |
Termes synonymes | Inférence hors ligne, traitement asynchrone, inférence statique. | Inférence en temps réel, traitement synchrone, inférence dynamique. |
Fonctionnalité
Inférence par lot
Inférence en ligne
Traitement des données
Traite un grand nombre de points de données en un seul job.
Traite un seul point de données ou un très petit groupe de points de données à mesure qu'ils arrivent.
Optimisation principale
Débit élevé et rentabilité
Faible latence et réactivité immédiate.
Latence
Latence élevée : les prédictions ne sont pas disponibles immédiatement (de quelques minutes à quelques heures).
Très faible latence : les prédictions sont renvoyées en quelques millisecondes.
Appel
Déclenchement par programmation (par exemple, un job Cron) ou à la demande.
Déclenchement par une demande directe de l'utilisateur ou par un événement dans le système.
Utilisation de ressources de calcul
Peut utiliser de puissantes ressources de calcul pendant une courte période, puis réduire l'échelle à zéro.
Nécessite qu'un serveur ou un point de terminaison soit constamment en cours d'exécution et prêt à accepter des requêtes.
Exemple d'utilisation
Générer des recommandations de produits quotidiennes pour tous les utilisateurs d'un site d'e-commerce.
Prédire en temps réel si une transaction par carte de crédit est frauduleuse.
Termes synonymes
Inférence hors ligne, traitement asynchrone, inférence statique.
Inférence en temps réel, traitement synchrone, inférence dynamique.
Un pipeline d'inférence par lot est un workflow structuré et automatisé qui transforme les données brutes en prédictions exploitables. Le processus peut être décomposé en ces étapes clés, qui sont généralement orchestrées par un gestionnaire de workflows ou un système de planification.
Le processus commence par l'accumulation de données au fil du temps. Ces données d'entrée, qui peuvent inclure des journaux d'activité utilisateur, des enregistrements de transactions ou des relevés de capteurs, sont collectées à partir de diverses sources et stockées dans un emplacement centralisé. Il s'agit souvent d'un lac de données basé sur un service tel que Google Cloud Storage ou d'un entrepôt de données tel que BigQuery.
Le pipeline d'inférence est lancé par un déclencheur. Ce déclencheur peut être :
Une fois déclenché, le job charge l'intégralité du lot de données brutes en entrée. Il effectue ensuite les étapes nécessaires de prétraitement et d'ingénierie des caractéristiques pour transformer les données au format exact attendu par le modèle de machine learning. Cela peut inclure des tâches telles que le nettoyage des valeurs manquantes, le scaling des caractéristiques numériques et l'encodage des variables catégorielles.
Le système récupère le modèle de machine learning entraîné à partir d'un dépôt central, tel que Vertex AI Model Registry. Le lot de données prétraité est ensuite transmis au modèle, qui exécute l'inférence sur chaque observation de l'ensemble pour générer une prédiction correspondante.
La sortie du modèle, c'est-à-dire l'ensemble des prédictions, est ensuite écrite dans un système de stockage. La destination est choisie en fonction de la façon dont les prédictions seront utilisées. Les destinations courantes incluent le chargement des résultats dans une table BigQuery pour l'analyse, dans une base de données Cloud SQL pour des recherches rapides par une application, ou leur enregistrement sous forme de fichiers dans Cloud Storage.
Les prédictions étant désormais stockées et prêtes, les systèmes en aval peuvent les utiliser. Un outil d'informatique décisionnelle peut interroger les résultats pour créer un tableau de bord du comportement client prédit. Le backend d'une application Web peut charger les recommandations de produits précalculées à afficher aux utilisateurs, ou une plate-forme d'automatisation du marketing peut extraire une liste de clients susceptibles de se désabonner pour les cibler avec une nouvelle campagne.
Pour de nombreux cas d'utilisation en entreprise, l'inférence par lot peut offrir des avantages significatifs par rapport au traitement en temps réel.
Rentabilité
Le traitement par lot vous permet d'optimiser votre utilisation des ressources de calcul. Vous pouvez exécuter des jobs volumineux sur du matériel puissant pendant une courte période, puis arrêter les ressources, ce qui vous évite les coûts liés au maintien d'un serveur en fonctionnement permanent.
Débit et évolutivité élevés
Les systèmes par lot sont conçus pour évoluer et traiter efficacement des téraoctets de données. Cela permet d'appliquer des modèles complexes à de très grands ensembles de données, ce qui pourrait être trop lent ou trop coûteux pour un système en ligne.
Simplicité des opérations
Les pipelines d'inférence par lot peuvent être plus simples à créer et à gérer que les systèmes d'inférence en ligne à faible latence et à haute disponibilité. Ils sont généralement plus résistants aux échecs passagers et peuvent être facilement réexécutés en cas d'échec d'un job.
Permet une ingénierie des caractéristiques complexe
Comme l'inférence par lot n'est pas soumise à des exigences de faible latence, vous pouvez effectuer des opérations d'ingénierie des caractéristiques plus complexes et gourmandes en calcul sur vos données d'entrée, ce qui permet souvent d'obtenir des modèles plus précis.
Meilleure utilisation des ressources
Vous pouvez planifier l'exécution de jobs par lot pendant les heures creuses, en profitant de la capacité de calcul inutilisée et de tarifs Spot potentiellement réduits pour les machines virtuelles.
L'inférence par lot est la méthode privilégiée pour de nombreux processus métier essentiels, où les prédictions améliorent un produit ou un service sans nécessiter une génération en temps réel. Cette approche peut être très efficace dans divers secteurs pour résoudre des problèmes de données à grande échelle.
Secteur d'activité | Problème à résoudre | Exemple de solution |
E-commerce et commerce de détail | Générez des recommandations de produits personnalisées pour l'ensemble de la base d'utilisateurs chaque jour afin qu'elles soient prêtes à être récupérées rapidement lorsque les utilisateurs visitent le site. | La prédiction par lots Vertex AI peut exécuter un modèle de recommandation et charger les résultats dans une base de données à recherche rapide comme Cloud SQL ou Bigtable. |
Télécommunications et SaaS | Identifier les clients qui risquent fortement de se désabonner le mois prochain en analysant les schémas d'utilisation dans l'ensemble de la base de données client. | BigQuery ML vous permet d'exécuter un modèle de classification directement sur les données client stockées dans l'entrepôt de données. Les résultats sont écrits dans une nouvelle table pour l'équipe chargée de la conservation des données. |
Finance et assurance | Prévoir les tendances des marchés financiers ou calculer les scores de risque pour un portefeuille d'actifs entier, une tâche gourmande en ressources de calcul qui est effectuée périodiquement. | La prédiction par lots de Vertex AI peut exécuter des modèles de séries temporelles complexes selon une programmation, en fournissant les données nécessaires pour les rapports et tableaux de bord stratégiques. |
Gestion de la chaîne logistique et d'approvisionnement | Optimisez les niveaux d'inventaire dans des centaines d'entrepôts en exécutant une simulation complexe de prévision de la demande basée sur les données de vente et logistiques hebdomadaires. | Google Kubernetes Engine (GKE) fournit l'environnement personnalisé et hautes performances nécessaire pour exécuter des modèles de simulation spécialisés avec des exigences spécifiques en termes de bibliothèques et de matériel. |
Santé | Analysez un grand lot quotidien d'images médicales (comme des radiographies ou des scanners) pour détecter les anomalies potentielles qui seront ensuite examinées par un radiologue. | GKE avec des accélérateurs GPU est idéal pour exécuter des modèles de vision par ordinateur de deep learning sur de grands ensembles d'images, et offre des performances et un contrôle optimaux. |
Mentions légales et conformité | Traitez et classez des millions de documents existants pour extraire les entités clés, évaluer les sentiments, et rendre l'ensemble du corpus consultable et analysable. | Dataflow permet de créer un pipeline TLN évolutif qui prétraite le texte et exécute l'inférence, tandis que GKE peut être utilisé pour les conditions plus personnalisées des modèles. |
Secteur d'activité
Problème à résoudre
Exemple de solution
E-commerce et commerce de détail
Générez des recommandations de produits personnalisées pour l'ensemble de la base d'utilisateurs chaque jour afin qu'elles soient prêtes à être récupérées rapidement lorsque les utilisateurs visitent le site.
La prédiction par lots Vertex AI peut exécuter un modèle de recommandation et charger les résultats dans une base de données à recherche rapide comme Cloud SQL ou Bigtable.
Télécommunications et SaaS
Identifier les clients qui risquent fortement de se désabonner le mois prochain en analysant les schémas d'utilisation dans l'ensemble de la base de données client.
BigQuery ML vous permet d'exécuter un modèle de classification directement sur les données client stockées dans l'entrepôt de données. Les résultats sont écrits dans une nouvelle table pour l'équipe chargée de la conservation des données.
Finance et assurance
Prévoir les tendances des marchés financiers ou calculer les scores de risque pour un portefeuille d'actifs entier, une tâche gourmande en ressources de calcul qui est effectuée périodiquement.
La prédiction par lots de Vertex AI peut exécuter des modèles de séries temporelles complexes selon une programmation, en fournissant les données nécessaires pour les rapports et tableaux de bord stratégiques.
Gestion de la chaîne logistique et d'approvisionnement
Optimisez les niveaux d'inventaire dans des centaines d'entrepôts en exécutant une simulation complexe de prévision de la demande basée sur les données de vente et logistiques hebdomadaires.
Google Kubernetes Engine (GKE) fournit l'environnement personnalisé et hautes performances nécessaire pour exécuter des modèles de simulation spécialisés avec des exigences spécifiques en termes de bibliothèques et de matériel.
Santé
Analysez un grand lot quotidien d'images médicales (comme des radiographies ou des scanners) pour détecter les anomalies potentielles qui seront ensuite examinées par un radiologue.
GKE avec des accélérateurs GPU est idéal pour exécuter des modèles de vision par ordinateur de deep learning sur de grands ensembles d'images, et offre des performances et un contrôle optimaux.
Mentions légales et conformité
Traitez et classez des millions de documents existants pour extraire les entités clés, évaluer les sentiments, et rendre l'ensemble du corpus consultable et analysable.
Dataflow permet de créer un pipeline TLN évolutif qui prétraite le texte et exécute l'inférence, tandis que GKE peut être utilisé pour les conditions plus personnalisées des modèles.
Vertex AI est la plate-forme de machine learning gérée de Google Cloud. Elle offre une approche simplifiée et sans serveur pour l'inférence par lot. Le processus consiste à configurer un job et à laisser la plate-forme gérer l'infrastructure sous-jacente.
Avant de commencer, vous avez besoin de trois éléments clés :
Vous pouvez lancer le job dans la console Google Cloud, à l'aide de l'outil de ligne de commande gcloud ou de façon programmatique à l'aide du SDK Vertex AI. Lorsque vous créez le job, vous devez fournir la configuration suivante :
Une fois que vous avez envoyé le job, Vertex AI prend le relais. Il provisionne automatiquement les ressources de calcul que vous avez spécifiées, exécute vos données d'entrée dans le modèle, génère les prédictions et les enregistre dans l'emplacement de sortie désigné. Une fois le job terminé, Vertex AI réduit automatiquement la capacité de toutes les ressources à zéro. Vous ne payez donc que le temps de calcul que vous utilisez. Vous pouvez surveiller la progression du job et afficher les journaux directement dans la console Google Cloud.
Une fois que le job passe à l'état "Réussite", vos prédictions sont prêtes. Vos applications en aval, vos outils d'analyse ou vos tableaux de bord d'informatique décisionnelle peuvent désormais accéder aux fichiers de sortie dans Cloud Storage ou à la nouvelle table dans BigQuery.
L'utilisation de Google Kubernetes Engine (GKE) pour l'inférence par lot offre une portabilité et un contrôle maximaux, ce qui en fait une solution idéale pour les équipes qui maîtrisent déjà Kubernetes ou qui ont des exigences spécifiques. La configuration implique de conteneuriser votre logique d'inférence et de gérer son exécution avec des ressources Kubernetes.
Étape 1 : Conteneurisez l'application d'inférence. La première étape consiste à empaqueter votre code de prédiction dans une image de conteneur.
Étape 2 : Configurez un job Kubernetes. Au lieu d'un déploiement de longue durée, vous définissez la tâche par lot à l'aide d'un fichier manifeste Kubernetes Job ou CronJob (fichier YAML). Ce fichier spécifie les éléments suivants :
Étape 3 : Exécutez le job sur le cluster GKE. Vous appliquez le fichier manifeste à votre cluster GKE à l'aide de kubectl. Le plan de contrôle de GKE planifie ensuite l'exécution d'un pod pour votre conteneur d'inférence sur un nœud approprié du cluster. Pour les tâches récurrentes, une ressource CronJob crée automatiquement un job en fonction d'une planification prédéfinie (par exemple, 0 2 * * * à 2h tous les jours).
Étape 4 : Implémentez le traitement des données et stockez les résultats. Contrairement à l'approche Vertex AI gérée, le code d'application de votre conteneur est responsable de la gestion de toutes les E/S de données. Votre script doit inclure la logique permettant de se connecter à la source de données (par exemple, un bucket Cloud Storage), de lire les données qu'elle contient, puis d'écrire les prédictions finales dans la destination de votre choix (par exemple, une base de données Cloud SQL).
Profitez de 300 $ de crédits gratuits et de plus de 20 produits Always Free pour commencer à créer des applications sur Google Cloud.