Verwalten von Cortex-AI-Funktionskosten mit Kontonutzung¶
Snowflake Cortex-AI-Funktionen (AI_COMPLETE, AI_SUMMARIZE, AI_TRANSLATE, AI_SENTIMENT und andere) verbrauchen Credits auf Basis der Nutzung von Token oder Seiten. Ohne Überwachung und Kontrolle können die Kosten für die Nutzung dieser Funktionen aus folgenden Gründen schnell ansteigen:
Nicht optimierte Eingabeaufforderungen, die zu viele Token generieren
Zeitintensive oder unkontrollierte Abfragen
Fehlende Ausgabenlimits pro Benutzendem
Unzureichender Einblick in die Nutzungsmuster
Unter diesem Thema werden Strategien zur Überwachung, Verwaltung und Kontrolle der mit Snowflake Cortex-AI-Funktionen verbundenen Kosten vorgeschlagen. Mit der Ansicht CORTEX_AI_FUNCTIONS_USAGE_HISTORY können Sie Nutzungsmuster verfolgen und eine automatische Kostenkontrolle implementieren. Mit diesen Techniken können Sie die Nutzung überwachen, bei Überschreitung von Ausgabenlimits warnen, den Zugriff auf Funktionen auf der Grundlage monatlicher Limits kontrollieren und unkontrollierbare Abfragen stoppen.
Ansicht des Nutzungsverlaufs¶
Die Ansicht SNOWFLAKE.ACCOUNT_USAGE.CORTEX_AI_FUNCTIONS_USAGE_HISTORY bietet detaillierte Telemetrie für alle Cortex-AI-Funktionen, die über SQL aufgerufen werden. Die Ansicht hat eine maximale Latenz von 60 Minuten, obwohl Daten bereits zehn Minuten nach Beginn der Ausführung der Funktion verfügbar sein können. Weitere Informationen zu dieser Ansicht finden Sie unter Ansicht CORTEX_AI_FUNCTIONS_USAGE_HISTORY.
Überwachung der grundlegenden Nutzung¶
Die folgenden Abfragen helfen Ihnen, Ihre Nutzungsmuster von AI-Funktionen zu verstehen. Führen Sie diese regelmäßig selbst aus, oder integrieren Sie sie in Dashboards, um die Sichtbarkeit zu erhalten.
Täglicher Credit-Verbrauch nach Funktion und Modell¶
Verfolgen Sie die täglichen Ausgabentrends, um Nutzungsspitzen zu erkennen und zu verstehen, welche Funktionen und Modelle die meisten Credits verbrauchen.
Monatlicher Credit-Verbrauch nach Benutzendem¶
Identifizieren Sie die Verbrauchenden, die die meisten Ressourcen nutzen, und verfolgen Sie die Ausgaben pro Benutzendem über die Zeit. Diese Abfrage wird mit der USERS-Ansicht verknüpft, um Benutzerdetails wie E-Mail-Adresse und Standardrolle bereitzustellen, um die Identifizierung und Nachverfolgung zu erleichtern.
Kostenkontrolle¶
Definieren Sie automatisierte Mechanismen, um übermäßige Ausgaben zu erkennen und Korrekturmaßnahmen zu ergreifen. Diese Abfragen können unabhängig voneinander oder kombiniert werden, um eine umfassende Kostenkontrolle zu ermöglichen.
Monatlicher Ausgaben-Alert auf Kontoebene¶
Richten Sie einen automatischen Alert ein, der monatlich die Gesamtsumme für den Credit-Verbrauch bezüglich der AI-Funktionen über Ihr gesamtes Konto hinweg überwacht. Wenn die Ausgaben einen definierten Schwellenwert überschreiten, sendet der Alert eine E-Mail-Benachrichtigung an die entsprechenden Benutzenden mit Administratorrechten. Das Einrichten des Alerts erfordert die folgenden Voraussetzungen:
ACCOUNTADMIN-Rolle oder entsprechende Berechtigungen für das Erstellen von Benachrichtigungsintegrationen und Alerts
Ein Warehouse zur Ausführung der Prüfung der Alert-Bedingung
Verifizierte E-Mail-Adressen der Empfänger von Alerts
Erstellen Sie zunächst eine Benachrichtigungsintegration, falls noch keine vorhanden ist. Dieses Beispiel ersetzt jede vorhandene Integration namens ai_cost_alerts.
Als Nächstes erstellen Sie eine Tabelle, um zu verfolgen, wann in jedem Monat Alerts gesendet wurden. Dies wird verwendet, um doppelte Alerts innerhalb eines Monats zu vermeiden.
Erstellen Sie nun eine gespeicherte Prozedur, um zu prüfen, ob in diesem Monat bereits ein Alert gesendet wurde, um den Alert-Status zu erfassen und um die Benachrichtigung per E-Mail zu versenden.
Erstellen Sie schließlich einen Alert, der die Nutzung jede Stunde anhand des Ausgabenschwellenwerts prüft und die Prozedur aufruft, um die Benachrichtigung bei Bedarf zu senden. Sie sollten das Limit von 1.000 Credits, das im folgenden Beispiel an zwei Stellen angezeigt wird, auf den gewünschten Schwellenwert einstellen.
Tipp
Zu Testzwecken setzen Sie das Limit zunächst auf 0, um den Alert sofort auszulösen. Erstellen Sie den Alert mit dem gewünschten Schwellenwert neu, nachdem Sie sicher sind, dass er wie erwartet funktioniert.
Nachdem Sie mit einem Schwellenwert von 0 getestet haben, führen Sie die folgende SQL aus, damit der Alert im aktuellen Monat erneut ausgelöst werden kann.
Sie können sicherstellen, dass der Alert funktioniert, indem Sie den Alert-Verlauf und die Tabelle mit dem Alert-Status wie folgt abfragen:
Monatliche Ausgabenlimits pro Benutzendem¶
In diesem Beispiel werden monatliche Ausgabenlimits pro Benutzendem implementiert. Benutzenden wird eine eigene kundenspezifische AI_FUNCTIONS_USER_ROLE zugewiesen, die Zugang zu Cortex-AI-Funktionen bietet. In einer Tabelle wird das monatliche Token-Budget der einzelnen Benutzenden gespeichert. Wenn ein Benutzender sein Budget für den Monat überschreitet, wird ihm durch eine stündliche Aufgabe der Zugriff auf die AI-Funktionen durch Entfernen der AI_FUNCTIONS_USER_ROLE entzogen. Eine monatliche Aufgabe stellt die Rolle zu Beginn des nächsten Monats wieder her.
Wichtig
Standardmäßig haben alle Benutzenden Zugriff auf die AI-Funktionen (und weitere Snowflake Cortex-Features), da die SNOWFLAKE.CORTEX_USER-Datenbankrolle der PUBLIC-Rolle zugewiesen wird. Um Limits pro Benutzendem durchzusetzen, müssen Sie für SNOWFLAKE.CORTEX_USER PUBLIC widerrufen und nur über die AI_FUNCTIONS_USER_ROLE gewähren. Verwenden Sie die folgende SQL, um die Rolle PUBLIC zu widerrufen:
Stellen Sie sicher, dass alle Benutzenden, die Zugriff auf Cortex-Features benötigen, nur die AI_FUNCTIONS_USER_ROLE erhalten. Die Verwendung einer beliebigen anderen Rolle, die SNOWFLAKE.CORTEX_USER einschließt, ermöglicht es Benutzenden, die in diesem Beispiel implementierten Kontrollen für Ausgabenlimits zu umgehen. In einigen Fällen können Sie eine spezifischere Rolle verwenden. So kann beispielsweise Benutzenden, die nur Zugriff auf Cortex Analyst benötigen, die SNOWFLAKE.CORTEX_ANALYST_USER-Rolle anstelle vonSNOWFLAKE.CORTEX_USER zugewiesen werden.
Um Limits für die Ausgaben pro Benutzendem festzulegen, erstellen Sie zunächst eine Rolle, die den Zugriff auf die AI-Funktionen steuert, sodass dieser Zugriff getrennt von anderen Berechtigungen verwaltet werden kann.
Richten Sie nun die Zugriffssteuerungstabelle ein, die verfolgt, welche Benutzenden AI-Funktionszugriff haben und die ihre individuellen Ausgabenlimits und deren Sperrverlauf verfolgt. Sie dient als Quelle der Wahrheit für die automatisierten Überwachungs- und Wiederherstellungsprozesse für den Zugriff.
Als Nächstes erstellen Sie eine gespeicherte Prozedur, um AI-Funktionszugriff für einen Benutzenden zu gewähren und registrieren ihn in der Zugriffssteuerungstabelle mit dem entsprechenden Ausgabenlimit. Der Code sucht die Benutzer-ID in der Account Usage-Ansicht, um effiziente Verknüpfungen bei der Überwachung von Abfragen zu ermöglichen.
Verwenden Sie diese gespeicherte Prozedur, um Benutzende und deren Credit-Kontingente zur Zugriffssteuerungstabelle hinzuzufügen.
Erstellen Sie als Nächstes die Aufgabe für die monatliche Aktualisierung des Zugriffs. Diese Aufgabe wird am ersten Tag jedes Monats ausgeführt, um den AI-Funktionszugriff für alle berechtigten Benutzenden wiederherzustellen. Wenn der Zugriff eines Benutzenden aufgrund einer Überschreitung seines Limits im Vormonat widerrufen wurde, wird ihm durch diese Aufgabe ein neues Budget für den neuen Monat gewährt.
Erstellen Sie schließlich eine stündliche Aufgabe, um die Ausgaben der Benutzenden zu überwachen und jedem Benutzenden den Zugriff zu entziehen, der sein monatliches Limit überschreitet.
Erkennen und Abbrechen von unkontrollierten Abfragen¶
Für zeitintensive AI-Funktionsabfragen können erhebliche Kosten anfallen. In diesem Beispiel wird ein automatisiertes System implementiert, das Abfragen, die einen Credit-Schwellenwert überschreiten, erkennt und abbricht, bevor sie noch mehr Ressourcen verbrauchen. Es wird eine E-Mail-Benachrichtigung mit vollständigen Abfragedetails gesendet.
Bemerkung
Wenn eine Abfrage abgebrochen wird, werden dem Client immer noch alle bis zum Zeitpunkt des Abbruchs verbrauchten Ressourcen in Rechnung gestellt. Das Abbrechen einer aus dem Ruder gelaufenen Abfrage verhindert weitere Kosten, stellt aber keine bereits ausgegebenen Credits zurück.
Diese Prozedur findet AI-Funktionsabfragen der letzten 48 Stunden, die den Credit-Schwellenwert überschritten haben und noch ausgeführt werden, bricht diese ab und meldet sie an einen Benutzenden mit Administratorrechten.
Tipp
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:
Fügen Sie die folgende Bedingung zur WHERE-Klausel der Prozedur hinzu, um auszuschließen, dass Abfragen, die von Benutzenden mit dieser Rolle ausgeführt werden, abgebrochen werden.
Nun kann der Benutzende die Rolle übernehmen, um eine zeitintensive Abfrage auszuführen, ohne dass sie abgebrochen wird:
Best Practices¶
Beachten Sie bei der Entwicklung einer Kostenmanagementstrategie für die Verwendung von AI-Funktionen die folgenden Best Practices:
Mit der Überwachung beginnen: Bevor Sie automatisierte Kontrollen implementieren, legen Sie anhand der Abfragen in Überwachung der grundlegenden Nutzung grundlegende Nutzungsmuster fest.
Konservative Anfangslimits festlegen: Beginnen Sie mit niedrigeren Schwellenwerten, und passen Sie sie basierend auf den tatsächlichen Nutzungsmustern nach oben an.
Abfrage-Tags verwenden: Ermutigen Sie Teams, QUERY_TAG-Sitzungsparameter zu verwenden, um die Zuordnung der Kosten nach Projekt oder Team zu ermöglichen.
Regelmäßig überprüfen: Überprüfen Sie die Zugriffssteuerungstabelle regelmäßig, und passen Sie die Limits pro Benutzendem auf der Grundlage berechtigter Anforderungen an.
Test-Alerts: Überprüfen Sie, ob E-Mail-Benachrichtigungen korrekt funktionieren, bevor Sie sich bei kritischen Alerts darauf verlassen.
Latenz berücksichtigen: Die ACCOUNT_USAGE-Ansicht hat eine Latenzzeit von bis zu 60 Minuten. Berücksichtigen Sie dies in Ihrer Überwachungsstrategie.