Déployer un modèle pour des prédictions en temps réel, à faible latence (<100ms) et avec une haute disponibilité.
→Déployer le modèle vers un point de terminaison en ligne géré Azure ML (Managed Online Endpoint).
Pourquoi: Les points de terminaison en ligne gérés sont un service entièrement géré optimisé pour l'inférence en temps réel, offrant l'auto-scaling, l'équilibrage de charge, les déploiements bleu-vert et la surveillance intégrée.
Référence↗
Scorer un grand volume de données (millions d'enregistrements) de manière asynchrone, l'efficacité des coûts étant une priorité.
→Déployer le modèle vers un point de terminaison de lot Azure ML (Batch Endpoint).
Pourquoi: Les points de terminaison de lot sont conçus pour le scoring asynchrone et à haut débit de grands ensembles de données. Ils peuvent utiliser des clusters de calcul évolutifs qui se réduisent à zéro lorsqu'ils sont inactifs, optimisant ainsi les coûts.
Déployer une nouvelle version de modèle tout en minimisant les risques. Nécessité de basculer progressivement le trafic vers la nouvelle version et de permettre un retour arrière facile.
→Utiliser un seul point de terminaison en ligne géré avec deux déploiements (par exemple, "bleu" pour l'ancien modèle, "vert" pour le nouveau). Utiliser la répartition du trafic pour contrôler le pourcentage de requêtes allant à chaque déploiement.
Pourquoi: Ce modèle de déploiement bleu-vert permet des déploiements sûrs et sans interruption. Vous pouvez valider le nouveau modèle sur une petite partie du trafic en direct avant de vous engager dans un basculement complet.
Empaqueter un modèle avec ses dépendances et artefacts de manière standardisée et indépendante du cadre pour le déploiement.
→Utiliser le format de modèle MLflow. Lors de l'enregistrement du modèle, inclure le fichier conda.yaml ou requirements.txt et tous les artefacts de code nécessaires.
Pourquoi: MLflow fournit une convention de packaging de modèles standard qu'Azure ML comprend nativement. Cela simplifie le déploiement car Azure ML peut construire automatiquement l'environnement requis.
Un modèle déployé a une latence élevée car il charge de grands fichiers auxiliaires (par exemple, un grand featurizer) à chaque requête de prédiction.
→Déplacer la logique de chargement des fichiers de la fonction `run()` vers la fonction `init()` dans le script de scoring.
Pourquoi: La fonction `init()` ne s'exécute qu'une seule fois au démarrage du conteneur. Charger les actifs ici les rend globalement disponibles pour tous les appels à `run()`, évitant ainsi un chargement redondant à chaque requête.
Un point de terminaison en temps réel connaît un trafic variable (pics élevés, creux bas). Nécessité de maintenir les performances de manière rentable.
→Configurer l'auto-scaling sur le déploiement du point de terminaison en ligne géré. Définir un nombre minimum et maximum d'instances et une règle de mise à l'échelle basée sur l'utilisation du CPU ou la latence des requêtes.
Pourquoi: L'auto-scaling ajuste automatiquement le nombre d'instances de calcul pour correspondre à la charge de trafic, garantissant les performances pendant les pics et économisant des coûts pendant les accalmies.
Un déploiement de modèle nécessite des bibliothèques système spécifiques, des versions CUDA personnalisées ou un serveur d'inférence personnalisé non présents dans les images Azure ML par défaut.
→Créer un Dockerfile personnalisé qui étend une image d'inférence de base Azure ML, ajouter les dépendances requises, la construire et la pousser vers Azure Container Registry. Référencer cette image dans l'environnement de déploiement.
Pourquoi: L'extension d'une image de base offre un contrôle total sur l'environnement d'exécution tout en maintenant la compatibilité avec l'infrastructure de service d'Azure ML.
Automatiser le cycle de vie ML de bout en bout, y compris le réentraînement, l'évaluation et le déploiement, déclenché par des changements de code ou de données.
→Utiliser Azure DevOps ou GitHub Actions intégrés à l'interface CLI v2 d'Azure ML pour créer un pipeline CI/CD. Le pipeline doit inclure une porte de qualité qui compare le nouveau modèle à une référence avant le déploiement.
Pourquoi: Ce modèle MLOps automatise le flux de travail ML, garantissant cohérence, qualité et itération rapide. La porte de qualité empêche les régressions de performance du modèle.
La performance d'un modèle en production se dégrade en raison de changements dans la distribution des données d'entrée. Le modèle doit être réentraîné automatiquement lorsqu'une dérive significative est détectée.
→Configurer un moniteur de dérive des données Azure ML sur le point de terminaison. Mettre en place une alerte qui déclenche une Azure Logic App ou une Azure Function, qui à son tour démarre le pipeline de réentraînement.
Pourquoi: Cela crée un système MLOps en boucle fermée qui maintient automatiquement la pertinence du modèle en réponse aux changements des schémas de données, sans intervention manuelle.
Une version de modèle nouvellement déployée s'avère défectueuse en production. Nécessité de revenir rapidement à la version stable précédente.
→Si vous utilisez un déploiement bleu-vert, basculez 100 % du trafic vers le déploiement stable. Alternativement, mettez à jour le point de terminaison pour redéployer la version précédente du modèle à partir du registre de modèles.
Pourquoi: Le basculement du trafic offre un retour arrière instantané. Redéployer une version du registre est également un moyen rapide et fiable de restaurer un état connu et fonctionnel.
Nécessité de surveiller à la fois la santé opérationnelle (latence, erreurs) et la qualité prédictive (dérive des données, précision) d'un modèle déployé.
→Activer l'intégration d'Application Insights sur le point de terminaison pour les métriques opérationnelles. Configurer la collecte de données Azure ML et la surveillance de la dérive des données pour les métriques de qualité du modèle.
Pourquoi: Cette approche à deux volets offre une vue complète de la santé du modèle. App Insights suit les performances du système, tandis que la collecte de données/la surveillance de la dérive suit les performances prédictives du modèle.
Le point de terminaison du modèle échoue en raison de données d'entrée mal formées ou inattendues de la part des clients.
→Implémenter une logique de validation des entrées dans la fonction `run()` du script de scoring. Vérifier les types de données, les plages et les structures, et retourner une erreur significative (par exemple, HTTP 400) pour les requêtes invalides.
Pourquoi: La validation côté serveur protège le modèle des plantages et fournit un feedback clair et immédiat aux consommateurs d'API, rendant le service plus robuste.