Guide du débutant pour Get Inferences

Ce guide du débutant est une introduction à l'obtention d'inférences à partir de modèles personnalisés sur Vertex AI.

Objectifs de la formation

Niveau d'expérience sur Vertex AI : débutant

Durée de lecture estimée : 15 minutes

Objectifs d'apprentissage :

  • Avantages de l'utilisation d'un service d'inférence géré.
  • Fonctionnement des inférences par lot dans Vertex AI
  • Fonctionnement des inférences en ligne dans Vertex AI.

Pourquoi utiliser un service d'inférence géré ?

Imaginez que vous ayez pour tâche de créer un modèle prenant en entrée l'image d'une plante afin de prédire l'espèce. Vous pouvez commencer par entraîner un modèle dans un notebook, en testant différents hyperparamètres et architectures. Une fois votre modèle entraîné, vous pouvez appeler la méthode predict dans le framework de ML de votre choix et tester la qualité du modèle.

Ce workflow est idéal pour les tests, mais lorsque vous souhaitez utiliser le modèle pour obtenir des inférences sur de nombreuses données ou pour obtenir des inférences à faible latence à la volée, vous avez besoin de plus qu'un notebook. Par exemple, supposons que vous essayiez de mesurer la biodiversité d'un écosystème particulier et que, au lieu que des humains identifient et comptent manuellement les espèces de plantes dans la nature, vous voulez utiliser ce modèle de ML pour classer de grands lots d'images. Si vous utilisez un notebook, vous pouvez rencontrer des contraintes de mémoire. En outre, l'obtention d'inférences pour toutes ces données sera probablement un job de longue durée susceptible d'expirer dans votre notebook.

Ou si vous souhaitiez utiliser ce modèle dans une application où les utilisateurs pourraient importer des images de plantes et les faire identifier immédiatement ? Vous aurez besoin d'un emplacement pour héberger le modèle en dehors d'un notebook, que votre application pourra appeler pour une inférence. De plus, il est peu probable que le trafic vers votre modèle soit constant. Vous aurez donc besoin d'un service capable d'effectuer un autoscaling si nécessaire.

Dans tous ces cas, un service d'inférence géré réduira les frictions liées à l'hébergement et à l'utilisation de vos modèles de ML. Ce guide présente comment obtenir des inférences à partir de modèles de ML sur Vertex AI. Notez qu'il existe d'autres personnalisations, fonctionnalités et méthodes d'interface avec le service qui ne sont pas abordées ici. L'objectif de ce guide est de fournir une vue d'ensemble. Pour en savoir plus, consultez la documentation sur les inférences Vertex AI.

Présentation du service d'inférence géré

Vertex AI est compatible avec les inférences par lot et en ligne.

L'inférence par lot est une requête asynchrone. Elle est idéale lorsque vous n'avez pas besoin d'une réponse immédiate et que vous voulez traiter des données accumulées avec une seule requête. Dans l'exemple évoqué dans l'introduction, il s'agirait du cas d'utilisation de caractérisation de la biodiversité.

Si vous souhaitez obtenir des inférences à faible latence à partir des données transmises à votre modèle à la volée, vous pouvez utiliser l'inférence en ligne. Dans l'exemple évoqué dans l'introduction, il s'agit du cas d'utilisation dans lequel vous souhaitez intégrer votre modèle dans une application qui aide les utilisateurs à identifier immédiatement les espèces végétales.

Importer le modèle dans Vertex AI Model Registry.

Pour utiliser le service d'inférence, vous devez d'abord importer votre modèle de ML entraîné dans Vertex AI Model Registry. Il s'agit d'un registre dans lequel vous pouvez gérer le cycle de vie de vos modèles.

Créer une ressource de modèle

Lorsque vous entraînez des modèles avec le service d'entraînement personnalisé Vertex AI, vous pouvez importer automatiquement votre modèle dans le registre une fois le job d'entraînement terminé. Si vous avez ignoré cette étape ou entraîné votre modèle en dehors de Vertex AI, vous pouvez l'importer manuellement à l'aide de la console Google Cloud ou du SDK Vertex AI pour Python en pointant vers un emplacement Cloud Storage contenant vos artefacts de modèle enregistrés. Le format de ces artefacts de modèle peut être savedmodel.pb, model.joblib, etc., suivant le framework de ML que vous utilisez.

L'importation d'artefacts dans Vertex AI Model Registry crée une ressource Model, qui est visible dans la console Google Cloud  :

ressource de modèle

Sélectionner un conteneur

Lorsque vous importez un modèle dans Vertex AI Model Registry, vous devez l'associer à un conteneur pour que Vertex AI diffuse les requêtes d'inférence.

Conteneurs prédéfinis

Vertex AI fournit des conteneurs prédéfinis que vous pouvez utiliser pour les inférences. Les conteneurs prédéfinis sont organisés par framework de ML et par version de framework, et fournissent des serveurs d'inférence HTTP que vous pouvez utiliser pour diffuser des inférences avec une configuration minimale. Ils n'effectuent que l'opération d'inférence du framework de machine learning. Par conséquent, si vous devez prétraiter vos données, vous devez le faire avant de lancer la requête d'inférence. De même, tout post-traitement doit se produire après l'exécution de la requête d'inférence. Pour obtenir un exemple d'utilisation d'un conteneur prédéfini, consultez le notebook Diffuser des modèles d'image PyTorch avec des conteneurs prédéfinis sur Vertex AI.

Conteneurs personnalisés

Si votre cas d'utilisation nécessite des bibliothèques qui ne sont pas incluses dans les conteneurs prédéfinis ou si vous souhaitez effectuer des transformations de données personnalisées dans le cadre de la requête d'inférence, vous pouvez utiliser un conteneur personnalisé que vous créez et transférez vers Artifact Registry. Bien que les conteneurs personnalisés permettent une plus grande personnalisation, ils doivent exécuter un serveur HTTP. Plus précisément, le conteneur doit écouter les vérifications de l'activité, les vérifications de l'état et les requêtes d'inférence, et y répondre. Dans la plupart des cas, si elle est possible, l'utilisation d'un conteneur prédéfini est l'option recommandée et la plus simple. Pour obtenir un exemple d'utilisation d'un conteneur personnalisé, consultez le notebook Classification d'image PyTorch sur un seul GPU à l'aide de Vertex Training avec un conteneur personnalisé.

Routines d'inférence personnalisées

Si votre cas d'utilisation nécessite des transformations personnalisées de pré et post-traitement, et que vous ne souhaitez pas avoir à créer ni à gérer de conteneur personnalisé, vous pouvez utiliser les routines d'inférence personnalisées. Les routines d'inférence personnalisées vous permettent de fournir vos transformations de données sous forme de code Python. En arrière-plan, le SDK Vertex AI pour Python crée un conteneur personnalisé que vous pouvez tester localement et déployer sur Vertex AI. Pour obtenir un exemple d'utilisation des routines d'inférence personnalisées, consultez le notebook Routines d'inférence personnalisées avec Sklearn.

Obtenir des inférences par lot

Une fois que votre modèle est dans Vertex AI Model Registry, vous pouvez envoyer une tâche d'inférence par lot à partir de la console Google Cloud ou du SDK Vertex AI pour Python. Vous devrez spécifier l'emplacement des données sources, ainsi que l'emplacement dans Cloud Storage ou BigQuery dans lequel vous souhaitez enregistrer les résultats. Vous pouvez également spécifier le type de machine sur lequel vous souhaitez exécuter cette tâche, ainsi que les accélérateurs facultatifs. Comme le service d'inférences est entièrement géré, Vertex AI provisionne automatiquement les ressources de calcul, effectue la tâche d'inférence et assure la suppression des ressources de calcul une fois la tâche d'inférence terminée. Vous pouvez suivre l'état de vos jobs d'inférence par lot dans la console Google Cloud .

état de l'inférence par lot

Obtenir des inférences en ligne

Si vous souhaitez obtenir des inférences en ligne, vous devez effectuer l'étape supplémentaire de déploiement de votre modèle sur un point de terminaison Vertex AI. Cette opération permet d'associer les artefacts de modèle aux ressources physiques pour une diffusion à faible latence et de créer une ressource DeployedModel.

inférence en ligne

Une fois le modèle déployé sur un point de terminaison, il accepte les requêtes comme n'importe quel autre point de terminaison REST, ce qui signifie que vous pouvez l'appeler depuis une fonction Cloud Run, un chatbot, une application Web, etc. Vous pouvez déployer plusieurs modèles sur un seul point de terminaison et répartir le trafic entre eux. Cette fonctionnalité est utile si vous souhaitez par exemple déployer une nouvelle version de modèle mais que vous ne souhaitez pas diriger immédiatement l'ensemble du trafic vers le nouveau modèle. Vous pouvez également déployer le même modèle sur plusieurs objets.

Ressources pour obtenir des inférences à partir de modèles personnalisés sur Vertex AI

Pour en savoir plus sur l'hébergement et la diffusion de modèles sur Vertex AI, consultez les ressources suivantes ou reportez-vous au dépôt GitHub des exemples Vertex AI.