Fonctions Large Language Model (LLM) (Cortex de Snowflake)¶
Cortex de Snowflake vous donne un accès instantané à de grands modèles de langage (Large Language Model, LLMs) formés par des chercheurs dans des entreprises telles que Mistral, Meta et Google. Il propose également des modèles que Snowflake a affinés pour des cas d’utilisation spécifiques.
Comme ces LLMs sont entièrement hébergés et gérés par Snowflake, leur utilisation ne nécessite aucune configuration. Vos données restent dans Snowflake, ce qui vous permet de bénéficier des performances, de l’évolutivité et de la gouvernance que vous attendez.
Les fonctionnalités de Cortex de Snowflake sont fournies sous forme de fonctions SQL et sont également disponibles en Python. Les fonctions disponibles sont résumées ci-dessous.
COMPLETE : à partir d’une invite, renvoie une réponse qui complète l’invite. Cette fonction accepte soit une seule invite, soit une conversation avec plusieurs invites et réponses.
EXTRACT_ANSWER : à partir d’une question et de données non structurées, renvoie la réponse à la question si elle peut être trouvée dans les données.
SENTIMENT : renvoie un score de sentiment, de -1 à 1, représentant le sentiment positif ou négatif détecté dans le texte donné.
SUMMARIZE : renvoie un résumé du texte donné.
TRANSLATE : traduit un texte donné de n’importe quelle langue prise en charge vers n’importe quelle autre.
Privilèges requis¶
Le rôle de base de données CORTEX_USER dans la base de données SNOWFLAKE comprend les privilèges qui permettent aux utilisateurs d’appeler les fonctions LLM Cortex de Snowflake. Par défaut, ce rôle de base de données n’est accordé qu’au rôle ACCOUNTADMIN. ACCOUNTADMIN doit propager ce rôle aux rôles des utilisateurs afin de leur permettre d’accéder aux fonctions LLM Cortex.
Le rôle de base de données SNOWFLAKE.CORTEX_USER ne peut pas être accordé directement à un utilisateur. Un utilisateur ayant le rôle ACCOUNTADMIN doit d’abord l’accorder à un rôle de compte, puis accorder le rôle de compte aux utilisateurs. Pour plus d’informations, voir Renommez les rôles de base de données en utilisant SNOWFLAKE..
Dans l’exemple suivant, vous êtes ACCOUNTADMIN et accordez à l’utilisateur some_user
le rôle de base de données CORTEX_USER via le rôle de compte cortex_user_role
, que vous créez à cet effet.
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;
Vous pouvez également accorder l’accès aux fonctions LLM Cortex de Snowflake par le biais de rôles existants utilisés par des groupes d’utilisateurs spécifiques. (Voir Rôles utilisateur.) Par exemple, si vous avez créé un rôle analyst
qui est utilisé comme rôle par défaut par les analystes de votre organisation, vous pouvez facilement accorder à ces utilisateurs l’accès aux fonctions LLM Cortext de Snowflake avec une seule instruction GRANT.
GRANT DATABASE ROLE SNOWFLAKE.CORTEX_USER TO ROLE analyst;
Le pseudo-rôle PUBLIC est automatiquement accordé à tous les utilisateurs et rôles, de sorte que l’octroi de cortex_user_role
à PUBLIC permet à tous les utilisateurs de votre compte d’utiliser les fonctions LLM Cortex de Snowflake.
GRANT DATABASE ROLE SNOWFLAKE.CORTEX_USER TO ROLE PUBLIC;
Astuce
Soyez attentif au nombre d’utilisateurs auxquels vous accordez l’accès et à l’impact que leur utilisation des fonctions LLM Cortex de Snowflake peut avoir sur la consommation de calcul. Établir des politiques relatives à la finalité de l’utilisation (en particulier pour les modèles les plus coûteux) avant d’accorder un accès généralisé à ces fonctions.
Il faut s’attendre à ce que les utilisateurs explorent les nouvelles fonctionnalités, ce qui pourrait entraîner une hausse temporaire des coûts, avant de s’installer dans un modèle d’utilisation plus stable.
Disponibilité¶
Les fonctions LLM Cortex de Snowflake sont actuellement disponibles dans les régions suivantes.
Fonction
(Modèle)
|
AWS US Est
(Virginie du Nord)
|
AWS US Ouest
(Oregon)
|
AWS Europe
(Francfort)
|
Azure Est US 2
(Virginie)
|
Azure Europe de l’Ouest
(Pays-Bas)
|
---|---|---|---|---|---|
COMPLETE
(
mistral-large ) |
✔ |
||||
COMPLETE
(
mixtral-8x7b ) |
✔ |
✔ |
|||
COMPLETE
(
llama2-chat-70b ) |
✔ |
✔ |
✔ |
✔ |
✔ |
COMPLETE
(
mistral-7b ) |
✔ |
✔ |
✔ |
✔ |
✔ |
COMPLETE
(
gemma-7b ) |
✔ |
✔ |
✔ |
✔ |
✔ |
EXTRACT_ANSWER |
✔ |
✔ |
✔ |
✔ |
✔ |
SENTIMENT |
✔ |
✔ |
✔ |
✔ |
✔ |
SUMMARIZE |
✔ |
✔ |
✔ |
✔ |
✔ |
TRANSLATE |
✔ |
✔ |
✔ |
✔ |
✔ |
Considérations relatives aux clients¶
Les fonctions Snowflake Cortex LLM ont un coût de calcul basé sur le nombre de jetons traités. Le tableau ci-dessous indique le coût en crédits par 1 million de jetons pour chaque fonction.
Note
Un jeton est la plus petite unité de texte traitée par les fonctions Snowflake Cortex LLM, correspondant approximativement à quatre caractères de texte. L’équivalence du texte brut d’entrée ou de sortie en jetons peut varier selon le modèle.
Pour les fonctions qui génèrent un nouveau texte dans la réponse (COMPLETE, SUMMARIZE et TRANSLATE), les jetons d’entrée et de sortie sont comptés.
Pour les fonctions qui n’extraient que des informations de l’entrée (EXTRACT_ANSWER et SENTIMENT), seuls les jetons d’entrée sont comptés.
Pour EXTRACT_ANSWER, le nombre de jetons facturables est la somme du nombre de jetons dans les champs
from_text
etquestion
.
Pour des informations générales sur les coûts de calcul, consultez Comprendre le coût du calcul.
Note
Snowflake recommande d’exécuter les requêtes qui appellent une fonction Snowflake Cortex LLM avec un entrepôt plus petit (pas plus grand que MEDIUM), car les entrepôts plus grands n’augmentent pas les performances. Le coût associé au maintien d’un entrepôt actif continuera à s’appliquer lors de l’exécution d’une requête qui appelle une fonction Snowflake Cortex LLM.
Fonction (modèle) |
Crédits Snowflake par million de jetons |
---|---|
COMPLETE ( |
5,10 |
COMPLETE ( |
0,50 |
COMPLETE ( |
0,45 |
COMPLETE ( |
0,12 |
COMPLETE ( |
0,12 |
EXTRACT_ANSWER |
0,08 |
SENTIMENT |
0,08 |
SUMMARIZE |
0,10 |
TRANSLATE |
0,33 |
L’utilisation de fonctions Snowflake Cortex LLM apparaît dans la vue METERING_DAILY_HISTORY Utilisation de l’organisation de Snowflake avec un type de service AI_SERVICES. Pour afficher la consommation de crédits pour les services AI pour tous les comptes d’une organisation, utilisez la requête suivante.
SELECT * FROM SNOWFLAKE.ORGANIZATION_USAGE.METERING_DAILY_HISTORY
WHERE service_type ILIKE '%ai_services%';
Note
La mise à jour de la vue SNOWFLAKE.ORGANIZATION_USAGE.METERING_DAILY_HISTORY peut prendre jusqu’à quatre heures.
Quotas d’utilisation¶
Afin de garantir un niveau de performance élevé à tous les clients de Snowflake, les fonctions Snowflake Cortex LLM sont soumises à des quotas d’utilisation au-delà desquels les requêtes peuvent être limitées. Snowflake peut ajuster ces quotas de temps à autre. Les quotas indiqués dans le tableau ci-dessous sont appliqués par compte.
Fonction (modèle) |
Jetons traités par minute (TPM) |
Lignes traitées par minute (RPM) |
---|---|---|
COMPLETE ( |
200,000 |
100 |
COMPLETE ( |
300,000 |
400 |
COMPLETE ( |
300,000 |
400 |
COMPLETE ( |
300,000 |
500 |
COMPLETE ( |
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 |
Note
Les comptes Snowflake à la demande sans méthode de paiement valide (tels que les comptes d’essai) sont limités à environ un crédit par jour dans l’utilisation de la fonction Snowflake Cortex LLM. Pour lever cette restriction, convertissez votre compte d’essai en compte payant.
Gestion des coûts et de la limitation¶
Pendant cette avant-première, Snowflake recommande d’utiliser une taille d’entrepôt ne dépassant pas MEDIUM lors de l’appel des fonctions Snowflake Cortex LLM. L’utilisation d’un entrepôt plus grand que nécessaire n’augmente pas les performances, mais peut entraîner des coûts inutiles et un risque plus élevé de limitation. Cette recommandation pourrait ne plus s’appliquer à l’avenir en raison des prochaines mises à jour du produit.
Restrictions du modèle¶
Les modèles utilisés par Snowflake Cortex sont limités en taille comme décrit dans le tableau ci-dessous. Les tailles sont données en jetons. Les jetons correspondent généralement à des mots, mais tous les jetons ne sont pas des mots, de sorte que le nombre de mots correspondant à une limite est légèrement inférieur au nombre de jetons. Les entrées qui dépassent la limite entraînent une erreur.
Fonction |
Modèle |
Fenêtre contextuelle (jetons) |
---|---|---|
COMPLETE |
|
32,000 |
|
32,000 |
|
|
4,096 |
|
|
32,000 |
|
|
8,000 |
|
EXTRACT_ANSWER |
Modèle géré par Snowflake |
2 048 pour le texte
64 pour la question
|
SENTIMENT |
Modèle géré par Snowflake |
512 |
SUMMARIZE |
Modèle géré par Snowflake |
32,000 |
TRANSLATE |
Modèle géré par Snowflake |
1,024 |
Choix d’un modèle¶
La fonction Snowflake Cortex COMPLETE prend en charge plusieurs modèles dont la capacité, la latence et le coût varient. Ces modèles ont été soigneusement choisis pour correspondre aux cas d’utilisation courants des clients. Pour obtenir la meilleure performance par crédit, choisissez un modèle qui correspond bien à la taille du contenu et à la complexité de votre tâche. Voici un bref aperçu des modèles disponibles.
mistral-large
est un modèle de premier plan qui obtient de bons résultats pour toute une série de critères (voir tableau ci-dessous). Il dispose d’une fenêtre contextuelle de 32 000 jetons (environ 24 000 mots), ce qui lui permet de s’engager dans un raisonnement complexe au cours de conversations prolongées. Il s’agit également du modèle le plus gourmand en ressources informatiques parmi ceux proposés par Snowflake Cortex, et donc le plus coûteux à exploiter.mixtral-8x7b
offre une faible latence et des résultats de haute qualité, tout en prenant en charge une longueur de contexte de 32 000 jetons. Il est idéal pour de nombreux cas d’utilisation de la production en entreprise.llama2-70b-chat
est bien adapté aux tâches complexes et à grande échelle qui nécessitent un raisonnement modéré, comme l’extraction de données ou l’aide à la rédaction de descriptions de tâches.mistral-7b
etgemma-7b
sont capables d’exécuter des tâches simples rapidement et avec un meilleur rapport coût-efficacité.mistral-7b
est idéal pour les tâches de résumé et de classification les plus simples qui nécessitent un degré de personnalisation moindre. Sa limite de jetons 32 000 lui permet de traiter plusieurs pages de texte.gemma-7b
est adapté aux tâches simples de complétion de code et de texte. Il dispose d’une fenêtre contextuelle de 8 000 jetons, mais il est étonnamment performant dans cette limite et tout à fait rentable.
Si vous ne savez pas par où commencer, essayez d’abord mistral-large
, que vous utilisiez déjà un autre modèle de premier plan ou que vous découvriez LLMs. Il s’agit du modèle le plus polyvalent proposé par Snowflake Cortex, qui vous donnera une bonne idée de ce qu’un modèle de pointe peut faire. Ses résultats peuvent servir de référence pour l’évaluation des autres modèles.
Pour vous aider à prendre votre décision, le tableau suivant fournit des informations sur les performances des modèles les plus courants sur différents benchmarks, y compris les modèles proposés par Snowflake Cortex COMPLETE ainsi que quelques autres modèles courants.
Modèle |
Fenêtre contextuelle
(Jetons)
|
MMLU
(Raisonnement)
|
Benchmark MT
(Instruction suivante)
|
HumanEval
(Codage)
|
Spider 1.0
(SQL)
|
---|---|---|---|---|---|
32,000 |
86,4 |
8,96 |
67 |
86,6 |
|
32,000 |
81,2 |
- |
45,1 |
81 |
|
Claude 2 * |
100,000 |
78,5 |
8,06 |
71,2 |
- |
32,000 |
70,6 |
8,30 |
40,2 |
- |
|
4,097 |
70 |
8,39 |
48,1 |
- |
|
4,096 |
68,9 |
6,86 |
30,5 |
- |
|
32,000 |
62,5 |
6,84 |
26,2 |
- |
|
8,000 |
64,3 |
- |
32,3 |
- |
|
4,096 |
45,3 |
6,27 |
12,2 |
- |
*Fourni à titre de comparaison ; non disponible dans Snowflake Cortex COMPLETE.
Aperçu des fonctions LLM¶
COMPLETE¶
À partir d’une invite, la fonction COMPLETE qui suit les instructions génère une réponse en utilisant le modèle linguistique de votre choix. Dans le cas d’utilisation le plus simple, l’invite est une simple chaîne de caractères. Vous pouvez également fournir une conversation comprenant plusieurs invites et réponses pour une utilisation interactive de type chat, et dans cette forme de la fonction, vous pouvez également spécifier des options d’hyperparamètres pour personnaliser le style et la taille de la sortie.
La fonction COMPLETE prend en charge les modèles suivants. Différents modèles peuvent avoir des coûts et des quotas <label-cortex_llm_quotas> différents.
mistral-large
mixtral-8x7b
llama2-70b-chat
mistral-7b
gemma-7b
Voir COMPLETE (SNOWFLAKE.CORTEX) pour la syntaxe et les exemples.
EXTRACT_ANSWER¶
La fonction EXTRACT_ANSWER permet d’extraire d’un document textuel une réponse à une question donnée. Le document peut être un document en anglais ou une représentation sous forme de chaîne d’un objet de données semi-structurées (JSON).
Voir EXTRACT_ANSWER (SNOWFLAKE.CORTEX) pour la syntaxe et les exemples.
SENTIMENT¶
La fonction SENTIMENT renvoie le sentiment sous la forme d’un score compris entre -1 et 1 (-1 étant le plus négatif et 1 le plus positif, avec des valeurs autour de 0 neutres) pour le texte d’entrée en langue anglaise donné.
Voir SENTIMENT (SNOWFLAKE.CORTEX) pour la syntaxe et les exemples.
SUMMARIZE¶
La fonction SUMMARIZE renvoie un résumé du texte anglais donné.
Voir SUMMARIZE (SNOWFLAKE.CORTEX) pour la syntaxe et les exemples.
TRANSLATE¶
La fonction TRANSLATE traduit le texte de la langue source indiquée ou détectée vers une langue cible.
Voir TRANSLATE (SNOWFLAKE.CORTEX) pour la syntaxe et les exemples.
Conditions d’erreur¶
Les fonctions Snowflake Cortex LLM peuvent produire les messages d’erreur suivants.
Message |
Explication |
---|---|
|
L’instruction a été rejetée en raison d’une charge excessive du système. Veuillez réessayer la requête. |
|
L’objet |
|
Le budget de consommation du modèle a été dépassé. |
|
Le modèle spécifié n’existe pas. |
|
La langue spécifiée n’est pas prise en charge par la fonction TRANSLATE. |
|
La requête a dépassé le nombre maximum de jetons pris en charge par le modèle (voir Restrictions du modèle). |
|
Le nombre de requêtes dépasse la limite <label-cortex_llm_quotas>. Veuillez réessayer plus tard. |
Utilisation de Snowflake Cortex LLM avec Python¶
Les fonctions Snowflake Cortex LLM sont disponibles dans Snowpark ML à partir de la version 1.1.2. Voir Installation de Snowpark ML pour les instructions sur la configuration de Snowpark ML.
Si vous exécutez votre script Python en dehors de Snowflake, vous devez créer une session Snowpark pour utiliser ces fonctions. Pour obtenir des instructions, voir Connexion à Snowflake.
L’exemple Python suivant illustre l’appel de fonctions Snowflake Cortex LLM sur des valeurs uniques :
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"))
Vous pouvez également appeler une fonction LLM sur une colonne du tableau, comme indiqué ci-dessous. Cet exemple nécessite un objet session (stocké dans session
) et une table articles
contenant une colonne de texte abstract_text
, et crée une nouvelle colonne abstract_summary
contenant un résumé de l’abrégé.
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()
Note
La forme avancée de COMPLETE de type chat (multi-message) n’est actuellement pas prise en charge par Python.
Avis juridiques¶
Les fonctions LLM Cortex de Snowflake sont alimentées par des technologies de machine learning, y compris LLaMA 2 de Meta. Le modèle de la fondation LLaMA 2 est sous licence LLaMA 2 Community License et Copyright (c) Meta Platforms, Inc. Tous droits réservés. Votre utilisation de fonctions LLM basées sur le modèle LLama 2 est soumise à la politique d’utilisation acceptable de Meta.
La technologie de machine learning et les résultats fournis peuvent être inexacts, incorrects ou biaisés. Les décisions basées sur les résultats du machine learning, y compris celles qui sont intégrées dans des pipelines automatiques, devraient être soumises à une supervision humaine et à des processus d’examen pour s’assurer que le contenu généré par le modèle est exact.
Les requêtes de fonctions LLM seront traitées comme toute autre requête SQL et peuvent être considérées comme des métadonnées.
Pour plus d’informations, voir la FAQ relative à la confiance et à la sécurité concernant l’AI de Snowflake.