Gestion des coûts des fonctions CortexAI avec Utilisation du compte¶
Les fonctions Snowflake Cortex AI (AI_COMPLETE, AI_SUMMARIZE, AI_TRANSLATE, AI_SENTIMENT et autres) consomment des crédits en fonction de l’utilisation des jetons ou des pages. Sans surveillance et sans contrôle, les coûts d’utilisation de ces fonctions peuvent augmenter rapidement en raison des éléments suivants :
Invites non optimisées générant des jetons excessifs
Requêtes de longue durée ou qui s’arrêtent
Absence de limites de dépenses par utilisateur
Mauvaise visibilité des modèles d’utilisation
Cette rubrique propose des stratégies pour surveiller, gérer et contrôler les coûts associés aux fonctions Snowflake CortexAI. À l’aide de la vue CORTEX_AI_FUNCTIONS_USAGE_HISTORY, vous pouvez suivre les modèles d’utilisation et mettre en œuvre des contrôles des coûts automatisés. Ces techniques peuvent vous aider à surveiller l’utilisation, à envoyer des alertes en cas de dépassement des limites de dépenses, à contrôler l’accès aux fonctions en fonction de limites mensuelles et à interrompre les requêtes qui s’emballent.
Vue de l’historique d’utilisation¶
La vue SNOWFLAKE.ACCOUNT_USAGE.CORTEX_AI_FUNCTIONS_USAGE_HISTORY fournit une télémétrie détaillée pour toutes les fonctions Cortex AI invoquées via SQL. La vue a un temps de latence maximum de 60 minutes, bien que les données puissent être disponibles en seulement 10 minutes après le début de l’exécution de la fonction. Pour plus d’informations sur cette vue, voir Vue CORTEX_AI_FUNCTIONS_USAGE_HISTORY.
Surveillance de base de l’utilisation¶
Les requêtes suivantes vous aident à comprendre vos modèles d’utilisation des fonctions AI. Exécutez-les vous-même régulièrement, ou intégrez-les dans des tableaux de bord pour une visibilité continue.
Consommation de crédit quotidienne par fonction et modèle¶
Suivez les tendances des dépenses quotidiennes pour identifier les pics d’utilisation et comprendre quelles fonctions et quels modèles consomment le plus de crédits.
Consommation mensuelle de crédit par utilisateur¶
Identifiez les principaux consommateurs et suivez les dépenses par utilisateur au fil du temps. Cette requête s’appuie sur la vue USERS pour fournir les informations relatives à l’utilisateur, notamment son adresse e-mail et son rôle par défaut, afin de faciliter l’identification et le suivi.
Contrôle des coûts¶
Définissez des mécanismes automatisés pour détecter les dépenses excessives et prendre des mesures correctives. Ces requêtes peuvent être utilisées indépendamment les unes des autres ou combinées pour une gouvernance complète des coûts.
Alerte de dépenses mensuelles au niveau du compte¶
Configurez une alerte automatique qui surveille la consommation mensuelle totale de crédits pour les fonctions AI sur l’ensemble de votre compte. Lorsque les dépenses dépassent un seuil défini, l’alerte envoie une notification par e-mail aux administrateurs désignés. La configuration de l’alerte nécessite les conditions préalables suivantes :
Le rôle ACCOUNTADMIN ou les privilèges appropriés pour créer des intégrations de notification et des alertes
Un entrepôt pour exécuter la vérification de la condition d’alerte
Les adresses e-mail vérifiées des destinataires de l’alerte
Tout d’abord, créez une intégration de notification si celle-ci n’existe pas déjà. Cet exemple remplace toute intégration existante nommée ai_cost_alerts.
Ensuite, créez un tableau permettant de consigner la date d’envoi des alertes pour chaque mois. Ceci est utilisé pour éviter les alertes en double au sein d’un mois.
Créez maintenant une procédure stockée pour vérifier si une alerte a déjà été envoyée durant le mois en cours, enregistrez l’état de l’alerte et envoyez la notification par e-mail.
Enfin, créez une alerte qui vérifie toutes les heures si l’utilisation dépasse le seuil de dépenses et qui appelle la procédure pour envoyer une notification si nécessaire. Vous devez ajuster la limite de 1 000 crédits, qui apparaît à deux endroits dans l’exemple ci-dessous, au seuil souhaité.
Astuce
À des fins de test, définissez d’abord la limite sur 0 pour déclencher l’alerte immédiatement. Recréez l’alerte avec le seuil souhaité après avoir confirmé qu’elle fonctionne comme prévu.
Après avoir testé avec un seuil de 0, exécutez la requête SQL suivante pour permettre à l’alerte de se déclencher à nouveau au cours du mois en cours.
Vous pouvez vous assurer que l’alerte fonctionne en interrogeant l’historique de l’alerte et la table d’état de l’alerte comme suit :
Limites de dépenses mensuelles par utilisateur¶
Cet exemple met en œuvre des limites de dépenses mensuelles par utilisateur. Un AI_FUNCTIONS_USER_ROLE personnalisé est attribué aux utilisateurs, qui leur donne accès aux fonctions Cortex AI. Une table stocke le budget mensuel de jetons des utilisateurs individuels. Lorsqu’un utilisateur dépasse son budget pour le mois, une tâche horaire révoque son accès aux fonctions AI en supprimant AI_FUNCTIONS_USER_ROLE. Une tâche mensuelle rétablit le rôle au début du mois suivant.
Important
Par défaut, tous les utilisateurs ont accès aux fonctions AI (et à d’autres fonctionnalités de Snowflake Cortex), car le rôle de base de données SNOWFLAKE.CORTEX_USER est attribué au rôlePUBLIC. Pour appliquer des limites par utilisateur, vous devez révoquer SNOWFLAKE.CORTEX_USER du rôle PUBLIC et ne l’attribuer que via AI_FUNCTIONS_USER_ROLE. Utilisez la requête SQL suivante pour révoquer le rôle de PUBLIC :
Assurez-vous que tous les utilisateurs qui ont besoin d’accéder aux fonctionnalités Cortex ne disposent que du AI_FUNCTIONS_USER_ROLE. L’utilisation de tout autre rôle qui inclut SNOWFLAKE.CORTEX_USER permet aux utilisateurs de contourner les contrôles de limite de dépenses mis en œuvre dans cet exemple. Dans certains cas, vous pouvez utiliser un rôle plus spécifique ; par exemple, les utilisateurs qui n’ont besoin que d’accéder à Cortex Analyst peuvent se voir accorder le rôle SNOWFLAKE.CORTEX_ANALYST_USER au lieu de SNOWFLAKE.CORTEX_USER.
Pour configurer des limites de dépenses par utilisateur, créez d’abord un rôle qui contrôle l’accès aux fonctions AI, permettant de gérer cet accès séparément des autres privilèges.
Maintenant, configurez la table de contrôle d’accès, qui permet de savoir quels utilisateurs ont accès aux fonctions AI, de connaître leurs limites de dépenses individuelles et de consulter l’historique des révocations. Elle sert de source de vérité pour les processus de surveillance automatisés et de restauration d’accès.
Ensuite, créez une procédure stockée pour accorder à un utilisateur l’accès aux fonctions AI et l’enregistrer dans la table de contrôle d’accès avec sa limite de dépenses. Le code recherche l’ID de l’utilisateur depuis la vue Utilisation du compte pour activer les jointures efficaces dans les requêtes de surveillance.
Utilisez cette procédure stockée pour ajouter des utilisateurs et leurs quotas de crédit à la table de contrôle d’accès.
Créez ensuite la tâche d’actualisation mensuelle de l’accès. Cette tâche s’exécute le premier jour de chaque mois pour restaurer l’accès aux fonctions AI pour tous les utilisateurs autorisés. Lorsque l’accès d’un utilisateur a été révoqué pour cause de dépassement de sa limite au cours du mois précédent, cette tâche lui accorde un nouveau budget pour le nouveau mois.
Enfin, créez une tâche horaire pour surveiller les dépenses des utilisateurs et révoquer l’accès de tout utilisateur qui dépasse sa limite mensuelle.
Détection et annulation des requêtes incontrôlées¶
Les requêtes de fonctions AI qui s’exécutent sur une longue durée peuvent entraîner des coûts importants. Cet exemple met en œuvre un système automatisé pour détecter les requêtes qui dépassent un seuil de crédit et les annuler avant qu’elles ne consomment encore plus de ressources. Une alerte par e-mail est envoyée avec tous les détails de la requête.
Note
Lorsqu’une requête est annulée, le client est toujours facturé pour toutes les ressources consommées jusqu’au moment de l’annulation. L’annulation d’une requête incontrôlée empêche l’accumulation supplémentaire de coûts, mais ne remplace pas les crédits déjà dépensés.
Cette procédure trouve les requêtes de fonctions AI des 48 dernières heures qui ont dépassé le seuil de crédit et qui sont toujours en cours d’exécution, les annule et les signalent à un administrateur.
Astuce
If you already know that some of your queries will run a long time, define a special role for these queries, and then exclude that role from the cancellation logic. For example, to create the role:
Ajouter la condition suivante à la clause WHERE de la procédure pour exclure de l’annulation les requêtes exécutées par les utilisateurs disposant de ce rôle.
L’utilisateur peut désormais assumer le rôle pour exécuter une requête de longue durée sans qu’elle soit annulée :
Meilleures pratiques¶
Gardez les meilleures pratiques suivantes à l’esprit lorsque vous développez une stratégie de gestion des coûts pour l’utilisation des fonctions AI :
Commencer par la surveillance : avant de mettre en œuvre des contrôles automatisés, établissez des modèles d’utilisation de base à l’aide des requêtes dans Surveillance de base de l’utilisation.
Définir des limites initiales prudentes : commencez par des seuils inférieurs et ajustez à la hausse en fonction des modèles d’utilisation réels.
Utiliser les balises de requête : invitez les équipes à utiliser les paramètres de session QUERY_TAG pour permettre l’attribution des coûts par projet ou équipe.
Examiner la table régulièrement : examinez régulièrement la table de contrôle d’accès et ajustez les limites par utilisateur en fonction des besoins légitimes.
Tester les alertes : vérifiez que les notifications par e-mail fonctionnent correctement avant de vous y fier pour les alertes critiques.
Prendre en compte la latence : la vue ACCOUNT_USAGE a jusqu’à 60 minutes de latence ; tenez compte de cela dans votre stratégie de surveillance.