Large Language Model (LLM)-Funktionen (Snowflake Cortex)

Snowflake Cortex bietet Ihnen direkten Zugang zu branchenführenden Large Language Models, kurz LLMs (dt. große Sprachmodelle), die von Forschern in Unternehmen wie Mistral, Meta und Google trainiert wurden. Darüber hinaus bietet es Modelle, die Snowflake auf bestimmte Anwendungsfälle abgestimmt hat.

Da diese LLMs vollständig von Snowflake gehostet und verwaltet werden, ist für ihre Nutzung keine spezielle Einrichtung erforderlich. Ihre Daten bleiben in Snowflake und bieten Ihnen die Leistung, Skalierbarkeit und Governance, die Sie erwarten.

Snowflake Cortex-Features werden als SQL-Funktionen bereitgestellt und sind auch in Python verfügbar. Die verfügbaren Funktionen sind im Folgenden zusammengefasst.

  • COMPLETE: Gibt bei einer Eingabeaufforderung eine Antwort zurück, die die Eingabeaufforderung abschließt. Diese Funktion akzeptiert entweder eine einzelne Eingabeaufforderung oder eine Konversation mit mehreren Eingabeaufforderungen und Antworten.

  • EXTRACT_ANSWER: Gibt bei einer Frage und unstrukturierten Daten die Antwort auf die Frage zurück, wenn sie in den Daten gefunden werden kann.

  • SENTIMENT: Gibt einen Stimmungswert zwischen -1 und 1 zurück, der die erkannte positive oder negative Stimmung des gegebenen Textes darstellt.

  • SUMMARIZE: Gibt eine Zusammenfassung des gegebenen Textes zurück.

  • TRANSLATE: Übersetzt einen gegebenen Text aus einer beliebigen unterstützten Sprache in eine andere.

Erforderliche Berechtigungen

Die Datenbankrolle CORTEX_USER der SNOWFLAKE-Datenbank beinhaltet die Berechtigungen, die es dem Benutzer erlauben, Snowflake Cortex-LLM-Funktionen aufzurufen. Standardmäßig ist diese Datenbankrolle nur der Rolle ACCOUNTADMIN zugewiesen. ACCOUNTADMIN muss diese Rolle an die Benutzerrollen weitergeben, damit die Benutzer auf die Cortex-LLM-Funktionen zugreifen können.

Die Datenbankrolle SNOWFLAKE.CORTEX_USER kann einem Benutzer nicht direkt zugewiesen werden. Ein Benutzer mit der Rolle ACCOUNTADMIN muss sie zunächst einer Kontorolle zuweisen und dann die Kontorolle den Benutzern zuweisen. Weitere Informationen dazu finden Sie unter Verwenden von SNOWFLAKE-Datenbankrollen.

Im folgenden Beispiel nehmen Sie die Rolle ACCOUNTADMIN an und weisen dem Benutzer some_user die Datenbankrolle CORTEX_USER über die Kontorolle cortex_user_role zu, die Sie zu diesem Zweck erstellen.

USE ROLE ACCOUNTADMIN;

CREATE ROLE cortex_user_role;
GRANT DATABASE ROLE SNOWFLAKE.CORTEX_USER TO ROLE cortex_user_role;

GRANT ROLE cortex_user_role TO USER some_user;
Copy

Sie können den Zugriff auf die Snowflake Cortex-LLM-Funktionen auch über bestehende Rollen gewähren, die häufig von bestimmten Benutzergruppen verwendet werden. (siehe Benutzerrollen). Wenn Sie beispielsweise eine analyst-Rolle erstellt haben, die von Analysten in Ihrer Organisation als Standardrolle verwendet wird, können Sie diesen Benutzern mit einer einzigen GRANT-Anweisung schnell Zugriff auf die Snowflake Cortex-LLM-Funktionen gewähren.

GRANT DATABASE ROLE SNOWFLAKE.CORTEX_USER TO ROLE analyst;
Copy

Die Pseudorolle PUBLIC wird automatisch allen Benutzern und Rollen zugewiesen, sodass durch Zuweisen von cortex_user_role zu PUBLIC allen Benutzern in Ihrem Konto die Nutzung der Snowflake Cortex-Funktionen-LLM ermöglicht wird.

GRANT DATABASE ROLE SNOWFLAKE.CORTEX_USER TO ROLE PUBLIC;
Copy

Tipp

Achten Sie auf die Anzahl der Benutzer, denen Sie Zugriff gewähren, und auf die Auswirkungen, die deren Nutzung der Snowflake Cortex-LLM-Funktionen auf den Verbrauch an Computeressourcen haben kann. Legen Sie Richtlinien für den Verwendungszweck fest (insbesondere für die kostenintensivsten Modelle), bevor Sie breiten Zugang zu diesen Feature gewähren.

Es ist zu erwarten, dass die Nutzer die neuen Features erkunden, was zu einem vorübergehenden Anstieg der Kosten führen kann, bevor sich ein stabileres Nutzungsmuster einstellt.

Verfügbarkeit

Snowflake Cortex-LLM-Funktionen sind derzeit in den folgenden Regionen verfügbar.

Funktion
(Modell)
AWS US East
(N. Virginia)
AWS US West
(Oregon)
AWS Europe
(Frankfurt)
Azure East US 2
(Virginia)
Azure West Europe
(Niederlande)
COMPLETE
(mistral-large)

COMPLETE
(mixtral-8x7b)

COMPLETE
(llama2-chat-70b)

COMPLETE
(mistral-7b)

COMPLETE
(gemma-7b)

EXTRACT_ANSWER

SENTIMENT

SUMMARIZE

TRANSLATE

Hinweise zu Kosten

Snowflake Cortex-LLM-Funktionen verursachen Computekosten, die sich nach der Anzahl der verarbeiteten Token richten. Die folgende Tabelle zeigt die Kosten in Credits pro 1 Millionen Token für jede Funktion.

Bemerkung

Ein Token ist die kleinste Texteinheit, die von den Snowflake Cortex-LLM-Funktionen verarbeitet wird, und entspricht etwa vier Textzeichen. Das Verhältnis des ein-/ausgegebene Rohtextes zur Tokenanzahl kann je nach Modell variieren.

  • Bei Funktionen, die neuen Text in der Antwort generieren (COMPLETE, SUMMARIZE und TRANSLATE), werden sowohl Eingabe- als auch Ausgabe-Token gezählt.

  • Bei Funktionen, die nur Informationen aus der Eingabe extrahieren (EXTRACT_ANSWER und SENTIMENT), werden nur die Eingabe-Token gezählt.

  • Bei EXTRACT_ANSWER ergibt sich die Anzahl der abrechenbaren Token aus der Summe der Anzahl der Token in den Feldern from_text und question.

Allgemeine Informationen zu Computekosten finden Sie unter Erläuterungen zu den Computekosten.

Bemerkung

Snowflake empfiehlt, dass Sie Abfragen, die eine Snowflake Cortex-LLM-Funktion aufrufen, mit einem kleineren Warehouse (nicht größer als MEDIUM) ausführen, da größere Warehouses die Leistung nicht erhöhen. Die Kosten, die mit dem kontinuierlichen Ausführen eines Warehouses verbunden sind, fallen auch dann an, wenn eine Abfrage ausgeführt wird, die eine Snowflake Cortex-LLM-Funktion aufruft.

Funktion (Modell)

Snowflake-Credits pro 1 Million Token

COMPLETE (mistral-large)

5,10

COMPLETE (mixtral-8x7b)

0,50

COMPLETE (llama2-70b-chat)

0,45

COMPLETE (mistral-7b)

0,12

COMPLETE (gemma-7b)

0,12

EXTRACT_ANSWER

0,08

SENTIMENT

0,08

SUMMARIZE

0,10

TRANSLATE

0,33

Die Nutzung von Snowflake Cortex-LLM-Funktionen wird in der Organization Usage-Ansicht METERING_DAILY_HISTORY von Snowflake mit Servicetyp AI_SERVICES angezeigt. Um den Credit-Verbrauch durch KI-Dienste für alle Konten einer Organisation anzuzeigen, verwenden Sie die folgende Abfrage.

SELECT * FROM SNOWFLAKE.ORGANIZATION_USAGE.METERING_DAILY_HISTORY
    WHERE service_type ILIKE '%ai_services%';
Copy

Bemerkung

Die Aktualisierung der Ansicht SNOWFLAKE.ORGANIZATION_USAGE.METERING_DAILY_HISTORY kann bis zu vier Stunden dauern.

Nutzungskontingente

Um einen hohen Leistungsstandard für alle Snowflake-Kunden sicherzustellen, unterliegen die Snowflake Cortex-LLM-Funktionen Nutzungskontingenten, bei deren Überschreitung Anfragen gedrosselt werden können. Snowflake kann diese Kontingente von Zeit zu Zeit anpassen. Die Kontingente in der nachstehenden Tabelle gelten pro Konto.

Funktion (Modell)

Verarbeitete Token pro Minute (TPM)

Verarbeitete Zeilen pro Minute (RPM)

COMPLETE (mistral-large)

200.000

100

COMPLETE (mixtral-8x7b)

300.000

400

COMPLETE (llama2-70b-chat)

300.000

400

COMPLETE (mistral-7b)

300.000

500

COMPLETE (gemma-7b)

300.000

500

EXTRACT_ANSWER

1.000.000

3.000

SENTIMENT

1.000.000

5.000

SUMMARIZE

300.000

500

TRANSLATE

1.000.000

2.000

Bemerkung

On-demand-Snowflake-Konten ohne gültige Zahlungsmethode (z. B. Testkonten) sind auf etwa einen Credit pro Tag für die Nutzung der Snowflake Cortex-LLM-Funktion beschränkt. Um diese Einschränkung aufzuheben, wandeln Sie Ihr Testkonto in ein kostenpflichtiges Konto um.

Kostenmanagement und Drosselung

Während dieser Vorschau empfiehlt Snowflake, beim Aufrufen von Snowflake Cortex-LLM-Funktionen eine Warehouse-Größe von maximal MEDIUM zu verwenden. Die Verwendung eines größeren Warehouses als nötig erhöht nicht die Leistung, sondern kann zu unnötigen Kosten und einem höheren Risiko der Drosselung führen. Diese Empfehlung gilt möglicherweise in Zukunft nicht mehr, da Produktaktualisierungen anstehen.

Modelleinschränkungen

Für die von Snowflake Cortex verwendeten Modelle gelten die in der nachstehenden Tabelle beschriebenen Größenbeschränkungen. Die Größen sind in Anzahl von Token angegeben. Token entsprechen im Allgemeinen Wörtern, aber nicht alle Token sind Wörter, sodass die Anzahl der Wörter, die einem Limit entsprechen, etwas geringer ist als die Anzahl der Token. Eingaben, die dieses Limit überschreiten, führen zu einem Fehler.

Funktion

Modell

Kontextfenster (Token)

COMPLETE

mistral-large

32.000

mixtral-8x7b

32.000

llama-2-70b-chat

4.096

mistral-7b

32.000

gemma-7b

8.000

EXTRACT_ANSWER

Snowflake-verwaltetes Modell

2.048 für Text
64 für Frage

SENTIMENT

Snowflake-verwaltetes Modell

512

SUMMARIZE

Snowflake-verwaltetes Modell

32.000

TRANSLATE

Snowflake-verwaltetes Modell

1.024

Auswählen eines Modells

Die Snowflake Cortex-Funktion COMPLETE unterstützt mehrere Modelle mit unterschiedlichen Fähigkeiten, Latenzen und Kosten. Diese Modelle wurden sorgfältig ausgewählt, um den gängigen Anwendungsfällen der Kunden gerecht zu werden. Um die beste Leistung pro Credit zu erzielen, wählen Sie ein Modell, das gut zu Umfang und Komplexität des Inhalts Ihrer Aufgabe passt. Im Folgenden finden Sie einen kurzen Überblick über die verfügbaren Modelle.

  • mistral-large ist ein Spitzenmodell, das bei einer Vielzahl von Kennzahlen gut abschneidet (siehe Tabelle unten). Es verfügt über ein Kontextfenster von 32.000 Token (ca. 24.000 Wörter), sodass es in der Lage ist, komplexe Schlussfolgerungen aus ausgedehnten Gesprächen zu ziehen. Es ist auch das rechenintensivste der von Snowflake Cortex angebotenen Modelle und damit auch das teuerste im Betrieb.

  • mixtral-8x7b bietet niedrige Latenz und qualitativ hochwertige Ergebnisse und unterstützt zudem eine Kontextlänge von 32.000 Token. Es ist ideal für viele Anwendungsfälle in Produktionsunternehmen.

  • llama2-70b-chat eignet sich gut für komplexe, umfangreiche Aufgaben, die ein gewisses Maß an logischem Denken erfordern, wie z. B. das Extrahieren von Daten oder das Formulieren von Stellenbeschreibungen.

  • mistral-7b und gemma-7b sind in der Lage, einfache Aufgaben schnell und kosteneffizient auszuführen.

    • mistral-7b ist ideal für einfachsten Verdichtungs- und Klassifizierungsaufgaben, die ein geringeres Maß an Anpassung erfordern. Durch die Begrenzung auf 32.000 Token kann es mehrere Seiten Text verarbeiten.

    • gemma-7b ist für einfache Code- und Textvervollständigungsaufgaben geeignet. Es hat ein Kontextfenster von 8.000 Token, ist aber innerhalb dieses Limits erstaunlich leistungsfähig und recht kostengünstig.

Wenn Sie nicht sicher sind, wo Sie anfangen sollen, probieren Sie zuerst mistral-large aus, unabhängig davon, ob Sie bereits ein anderes Spitzenmodell verwenden oder neu bei LLMs sind. Es ist das leistungsfähigste Modell, das Snowflake Cortex anbietet, und vermittelt Ihnen einen guten Eindruck davon, was ein modernes Modell leisten kann. Seine Ergebnisse können als Baseline für die Bewertung der anderen Modelle verwendet werden.

Um Ihnen die Entscheidung zu erleichtern, finden Sie in der folgenden Tabelle Informationen darüber, wie gängige Modelle bei verschiedenen Benchmarks abschneiden, einschließlich die von Snowflake Cortex-COMPLETE angebotenen Modelle sowie einige andere beliebte Modelle.

Modell

Kontextfenster
(Token)
MMLU
(Begründungen)
MT-Bench
(Anweisungsbefolgung)
HumanEval
(Codierung)
Spider 1.0
(SQL)

GPT 4 Turbo *

32.000

86,4

8,96

67

86,6

mistral-large

32.000

81,2

-

45,1

81

Claude 2 *

100,000

78,5

8,06

71,2

-

mixtral-8x7b

32.000

70,6

8,30

40,2

-

GPT 3.5 Turbo *

4,097

70

8,39

48,1

-

llama-2-70b-chat

4.096

68,9

6,86

30,5

-

mistral-7b

32.000

62,5

6,84

26,2

-

gemma-7b

8.000

64,3

-

32,3

-

llama2-7b *

4.096

45,3

6,27

12,2

-

*Zu Vergleichszwecken bereitgestellt; nicht verfügbar in Snowflake Cortex-COMPLETE.

Übersicht zu LLM-Funktionen

COMPLETE

Bei einer Eingabeaufforderung generiert die Anweisungen befolgende COMPLETE-Funktion eine Antwort unter Verwendung des von Ihnen gewählten Sprachmodells. Im einfachsten Fall besteht die Eingabeaufforderung aus einer einzigen Zeichenfolge. Sie können auch eine Konversation aus mehreren Eingabeaufforderungen und Antworten für eine interaktive Nutzung im Chat-Stil bereitstellen. In dieser Form der Funktion können Sie auch Hyperparameter-Optionen angeben, um den Stil und die Größe der Ausgabe anzupassen.

Die COMPLETE-Funktion unterstützt die folgenden Modelle. Verschiedene Modelle können unterschiedliche Kosten und Kontingente haben.

  • mistral-large

  • mixtral-8x7b

  • llama2-70b-chat

  • mistral-7b

  • gemma-7b

Syntax und Beispiele finden Sie unter COMPLETE (SNOWFLAKE.CORTEX).

EXTRACT_ANSWER

Die Funktion EXTRACT_ANSWER extrahiert aus einem Textdokument eine Antwort auf eine bestimmte Frage. Bei dem Dokument kann es sich um ein Dokument in einfachem Englisch oder um eine Zeichenfolgen-Darstellung eines semistrukturierten (JSON-)Datenobjekts handeln.

Syntax und Beispiele finden Sie unter EXTRACT_ANSWER (SNOWFLAKE.CORTEX).

SENTIMENT

Die SENTIMENT-Funktion gibt für einen gegebenen englischsprachigen Eingabetext die Stimmung als Punktwert zwischen -1 und 1 zurück (wobei -1 der negativste und 1 der positivste Wert ist und die Werte um 0 herum neutral sind).

Syntax und Beispiele finden Sie unter SENTIMENT (SNOWFLAKE.CORTEX).

SUMMARIZE

Die SUMMARIZE-Funktion gibt zu einem gegebenen englischsprachigen Text eine Zusammenfassung zurück.

Syntax und Beispiele finden Sie unter SUMMARIZE (SNOWFLAKE.CORTEX).

TRANSLATE

Die TRANSLATE-Funktion übersetzt Text aus der angegebenen oder erkannten Ausgangssprache in eine Zielsprache.

Syntax und Beispiele finden Sie unter TRANSLATE (SNOWFLAKE.CORTEX).

Fehlerbedingungen

Snowflake Cortex-LLM-Funktionen können die folgenden Fehlermeldungen erzeugen.

Meldung

Erläuterung

too many requests

Die Anfrage wurde wegen zu hoher Systembelastung abgelehnt. Versuchen Sie Ihre Anfrage erneut.

invalid options object

Das an die Funktion übergebene options-Objekt enthält ungültige Optionen oder Werte.

budget exceeded

Das Budget für den Modellverbrauch wurde überschritten.

unknown model "<Modellbezeichnung>"

Das angegebene Modell ist nicht vorhanden.

invalid language "<Sprache>"

Die angegebene Sprache wird von der TRANSLATE-Funktion nicht unterstützt.

max tokens of <Anzahl> exceeded

Die Anfrage hat die maximale Anzahl der vom Modell unterstützten Token überschritten (siehe Modelleinschränkungen).

all requests were throttled by remote service

Die Anzahl der Anfragen übersteigt das Limit. Versuchen Sie es später noch einmal.

Verwenden von Snowflake Cortex-LLM-Funktionen mit Python

Snowflake Cortex-LLM-Funktionen sind in Snowpark ML, Version 1.1.2 und höher verfügbar. Eine Anleitung zum Einrichten von Snowpark ML finden Sie unter Installieren von Snowpark ML.

Wenn Sie Ihr Python-Skript außerhalb von Snowflake ausführen, müssen Sie eine Snowpark-Sitzung erstellen, um diese Funktionen nutzen zu können. Eine Anleitung dazu finden Sie unter Verbinden mit Snowflake.

Das folgende Python-Beispiel zeigt den Aufruf von Snowflake Cortex-LLM-Funktionen für einzelne Werte:

from snowflake.cortex import Complete, ExtractAnswer, Sentiment, Summarize, Translate

text = """
    The Snowflake company was co-founded by Thierry Cruanes, Marcin Zukowski,
    and Benoit Dageville in 2012 and is headquartered in Bozeman, Montana.
"""

print(Complete("llama2-70b-chat", "how do snowflakes get their unique patterns?"))
print(ExtractAnswer(text, "When was snowflake founded?"))
print(Sentiment("I really enjoyed this restaurant. Fantastic service!"))
print(Summarize(text))
print(Translate(text, "en", "fr"))
Copy

Sie können auch eine LLM-Funktion für eine Tabellenspalte aufrufen, wie unten gezeigt. Dieses Beispiel erfordert ein Sitzungsobjekt (gespeichert in session) und eine Tabelle articles mit einer Textspalte abstract_text. Das Beispiel erstellt eine neue Spalte abstract_summary mit einer Zusammenfassung des Abstracts.

from snowflake.cortex import Summarize
from snowflake.snowpark.functions import col

article_df = session.table("articles")
article_df = article_df.withColumn(
    "abstract_summary",
    Summarize(col("abstract_text"))
)
article_df.collect()
Copy

Bemerkung

Die erweiterte Form von COMPLETE im Chat-Stil (mehrere Meldungen) wird derzeit in Python nicht unterstützt.