Gestion et mise à l’échelle des services¶
Une fois qu’un modèle est déployé dans Snowpark Container Services (SPCS), vous devez gérer son cycle de vie, sa consommation de ressources et sa fiabilité. Cette page couvre les opérations standard, l’observabilité et la configuration de la haute disponibilité pour les charges de travail de production.
Gestion des services¶
Snowpark Container Services propose une interface SQL de gestion des services. Vous pouvez utiliser les commandes DESCRIBE SERVICE et ALTER SERVICE avec les services SPCS créés par Snowflake Model Serving comme vous le feriez pour gérer n’importe quel autre service SPCS. Par exemple, vous pouvez :
Changer MIN_INSTANCES et d’autres propriétés d’un service
Supprimer un service
Partager un service avec un autre compte
Changer la propriété d’un service (le nouveau propriétaire doit avoir accès READ au modèle)
Note
Si le propriétaire d’un service perd l’accès au modèle sous-jacent pour une raison quelconque, le service cesse de fonctionner après un redémarrage. Il continuera à fonctionner jusqu’à ce qu’il soit redémarré.
Pour garantir la reproductibilité et la débogabilité, vous ne pouvez pas modifier la spécification d’un service d’inférence existant. Vous pouvez cependant copier la spécification, la personnaliser et utiliser la spécification personnalisée pour créer votre propre service pour héberger le modèle. Cependant, cette méthode ne protège pas le modèle sous-jacent contre la suppression. En outre, elle ne suit pas la lignée. Il est préférable de permettre à Snowflake Model Serving de créer des services.
Mettre à l’échelle les services¶
Note
À partir de snowflake-ml-python 1.25.0, vous pouvez définir les limites de mise à l’échelle de votre service d’inférence en définissant min_instances et max_instances dans la méthode create_service.
Comment fonctionne la mise à l’échelle automatique ?¶
Le service s’initialise avec le nombre de nœuds spécifié dans min_instances et s’adapte dynamiquement depuis votre plage définie en fonction du volume de trafic en temps réel et de l’utilisation du matériel.
Échelle à zéro (suspension automatique) : si min_instances est défini sur 0 (valeur par défaut), le service sera automatiquement suspendu si aucun trafic n’est détecté pendant 30 minutes.
Latence de la mise à l’échelle : les déclencheurs de mise à l’échelle s’activent généralement après une minute de remplissage de la condition requise. Notez que le temps de mise à l’échelle total comprend cette période de déclenchement plus le temps nécessaire pour provisionner et initialiser de nouvelles instances de service.
Bonnes pratiques en matière de configuration¶
Paramètre |
Stratégie recommandée |
|---|---|
min_instances |
Définissez ce paramètre sur 1 ou plus pour les charges de travail de production afin de garantir une disponibilité immédiate et d’éviter les retards liés au démarrage à froid. |
max_instances |
Définissez ce paramètre pour répondre aux pics de demande tout en limitant la consommation de ressources et les coûts. |
Suspension de services¶
Par défaut, le paramètre min_instances = 0 permet au service de se suspendre automatiquement après 30 minutes d’inactivité. Les requêtes entrantes déclencheront une reprise, avec un délai total déterminé par la disponibilité du pool de calcul et le temps de chargement du modèle (délai de démarrage).
Pour suspendre ou reprendre manuellement un service, utilisez la commande ALTER SERVICE.
Suppression de modèles¶
Vous pouvez gérer les modèles et les versions de modèles comme d’habitude avec l’interface SQL ou l’API Python, à la condition qu’un modèle ou une version de modèle utilisé(e) par un service (qu’il soit en cours d’exécution ou suspendu) ne puisse pas être supprimé(e). Pour supprimer un modèle ou une version de modèle, supprimez d’abord le service.
Surveiller les services¶
Lors de l’exécution de modèles dans Snowpark Container Services, vous pouvez surveiller la santé du service et résoudre les problèmes en accédant aux journaux et aux métriques des conteneurs. Les services Model Serving génèrent des journaux qui peuvent vous aider à comprendre le comportement des services, à diagnostiquer les erreurs et à optimiser les performances.
Pour obtenir des informations complètes sur la surveillance des services SPCS, y compris l’accès aux métriques et aux journaux, consultez Surveillance des services.
Dans Snowsight¶
Vous pouvez surveiller les services Model Serving dans Snowsight :
Dans le menu de navigation, sélectionnez Surveillance » Services et tâches.
Dans l’onglet Services, sélectionnez votre service pour voir la page de détails du service.
L’onglet Aperçu affiche les informations sur le service, notamment le pool de calcul, les points de terminaison et le nombre d’instances.
Les onglets Journaux, Métriques et Événements fournissent des journaux, des mesures de performances et des événements de service (tels que le provisionnement et les arrêts des instances). Filtrez les résultats par instance et par nom de conteneur, selon vos besoins.
Accès aux journaux des services¶
Vous pouvez accéder aux journaux de vos services Model Serving en utilisant l’une des méthodes suivantes :
Utilisation de la fonction d’aide au service¶
Model Serving comprend une fonction d’aide intégrée qui récupère les journaux du tableau des événements pour les services en cours d’exécution ou suspendus :
Interroger directement le tableau des événements¶
Si un tableau des événements est configuré pour votre compte, vous pouvez y effectuer directement une requête pour récupérer les journaux du service :
Utilisation de la fonction système (instances en cours d’exécution uniquement)¶
Pour le débogage en temps réel des conteneurs actifs, vous pouvez utiliser la fonction SYSTEM$GET_SERVICE_LOGS :
Note
Le nom de conteneur pour les services d’inférence de modèles est model-inference. Pour résoudre les problèmes liés à la création d’images, utilisez model-build comme nom de conteneur.
Accès aux métriques de service¶
Les services Model Serving émettent des métriques de performances et de santé qui peuvent vous aider à surveiller l’utilisation des ressources, les taux de requête, la latence et d’autres caractéristiques opérationnelles. Ces métriques sont capturées dans le tableau des événements et peuvent être interrogées pour analyser les performances du service au fil du temps.
Pour plus d’informations sur les métriques de service SPCS, consultez Accès aux métriques de service du tableau des événements.
Utilisation de la fonction d’aide au service¶
Les services Model Serving comprennent une fonction d’aide intégrée qui récupère les métriques du tableau des événements pour les services en cours d’exécution ou suspendus :
Interroger directement le tableau des événements¶
Vous pouvez interroger directement le tableau des événements pour récupérer et filtrer des métriques spécifiques :
Tolérance aux pannes¶
Dans tout système distribué, des échecs se produisent. Pour les charges de travail critiques, il appartient aux utilisateurs de configurer le service pour qu’il soit résistant aux échecs de nœuds et de zones.
Résilience face aux échecs de nœuds¶
Pour tolérer les échecs de nœuds standard, Snowflake recommande un sur-provisionnement de 50 % ou le maintien d’un minimum de 3 instances (la valeur la plus élevée étant retenue).
Exemple : si vous avez besoin de 4 instances pour prendre en charge le pic de trafic, vous devez provisionner 6 instances.
Résilience face aux échecs de zones¶
Pour les charges de travail critiques qui nécessitent une résilience face à un échec de zone complet, vous pouvez utiliser un :doc:` pool de calcul </sql-reference/sql/create-compute-pool>` distribué lors de la création d’un service. Les pools de calcul distribués sont créés avec le paramètre PLACEMENT_GROUP défini sur DISTRIBUTED. Pour plus d’informations sur les pools de calcul distribués, voir Placement du pool de calcul.
Guide de configuration¶
Convertir un pool existant¶
Avertissement
Vous ne pouvez pas modifier ce paramètre sur un pool actif. Vous devez d’abord le suspendre.
Rétablir un pool existant¶
Avertissement
Vous ne pouvez pas modifier ce paramètre sur un pool actif. Vous devez d’abord le suspendre.
Vérification¶
Pour confirmer que votre pool est correctement configuré pour HA, vérifiez la colonne placement_group :