Funções de Large Language Model (LLM) (Snowflake Cortex)¶
Snowflake Cortex gives you instant access to industry-leading large language models (LLMs) trained by researchers at companies like Mistral, Meta, and Google. It also offers models that Snowflake has fine-tuned for specific use cases.
Como esses LLMs são totalmente hospedados e gerenciados pelo Snowflake, usá-los não requer configuração. Seus dados permanecem no Snowflake, proporcionando o desempenho, a escalabilidade e a governança que você espera.
Os recursos do Snowflake Cortex são fornecidos como funções SQL e também estão disponíveis em Python. As funções disponíveis estão resumidas abaixo.
COMPLETE: dado um prompt, retorna uma resposta que completa o prompt. Esta função aceita um único prompt ou uma conversa com vários prompts e respostas.
EXTRACT_ANSWER: dada uma pergunta e dados não estruturados, retorna a resposta à pergunta se ela puder ser encontrada nos dados.
SENTIMENT: retorna uma pontuação de sentimento, de -1 a 1, representando o sentimento positivo ou negativo detectado de um determinado texto.
SUMMARIZE: retorna um resumo do texto fornecido.
TRANSLATE: traduz determinado texto de qualquer idioma suportado para qualquer outro.
Privilégios obrigatórios¶
The CORTEX_USER database role in the SNOWFLAKE database includes the privileges that allow users to call Snowflake Cortex LLM functions. By default, this database role is granted to only the ACCOUNTADMIN role. ACCOUNTADMIN must propagate this role to user roles in order to allow users to access Cortex LLM Functions.
The SNOWFLAKE.CORTEX_USER database role cannot be granted directly to a user. A user with the ACCOUNTADMIN role must first grant it to an account role, and then grant the account role to users. For more information, see Uso das funções de banco de dados SNOWFLAKE.
In the following example, you assume ACCOUNTADMIN and grant the user some_user
the CORTEX_USER database role via the
account role cortex_user_role
, which you create for this purpose.
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;
Você também pode conceder acesso às funções de LLM do Snowflake Cortex por meio de funções existentes comumente usadas por grupos específicos de usuários. (Consulte Funções do usuário.) Por exemplo, se você criou uma função analyst
usada como função padrão pelos analistas da sua organização, poderá conceder facilmente a esses usuários acesso às funções de LLM do Snowflake Cortex com uma única instrução GRANT.
GRANT DATABASE ROLE SNOWFLAKE.CORTEX_USER TO ROLE analyst;
The PUBLIC pseudo-role is automatically granted to all users and roles, so granting cortex_user_role
to PUBLIC
allows all users in your account to use the Snowflake Cortex LLM functions.
GRANT DATABASE ROLE SNOWFLAKE.CORTEX_USER TO ROLE PUBLIC;
Dica
Be mindful of the number of users to whom you are granting access and the impact their usage of Snowflake Cortex LLM functions may have on compute consumption. Establish policies around purpose of use (particularly of the most costly models) before granting widespread access to these features.
Expect users to explore the new features, potentially driving a temporary surge in cost, before settling into a more stable usage pattern.
Disponibilidade¶
As funções de LLM do Snowflake Cortex estão atualmente disponíveis nas seguintes regiões.
Função
(Modelo)
|
AWS US East
(N. Virginia)
|
AWS US West
(Oregon)
|
AWS Europe
(Frankfurt)
|
Azure East US 2
(Virginia)
|
Azure West Europe
(Países Baixos)
|
---|---|---|---|---|---|
COMPLETE
(
mistral-large ) |
✔ |
||||
COMPLETE
(
mixtral-8x7b ) |
✔ |
✔ |
|||
COMPLETE
(
llama2-chat-70b ) |
✔ |
✔ |
✔ |
✔ |
✔ |
COMPLETE
(
mistral-7b ) |
✔ |
✔ |
✔ |
✔ |
✔ |
COMPLETE
(
gemma-7b ) |
✔ |
✔ |
✔ |
✔ |
✔ |
EXTRACT_ANSWER |
✔ |
✔ |
✔ |
✔ |
✔ |
SENTIMENT |
✔ |
✔ |
✔ |
✔ |
✔ |
SUMMARIZE |
✔ |
✔ |
✔ |
✔ |
✔ |
TRANSLATE |
✔ |
✔ |
✔ |
✔ |
✔ |
Considerações sobre custo¶
Snowflake Cortex LLM functions incur compute cost based on the number of tokens processed. The table below shows the cost in credits per 1 million tokens for each function.
Nota
Um token é a menor unidade de texto processada pelas funções de LLM do Snowflake Cortex, aproximadamente igual a quatro caracteres de texto. A equivalência do texto bruto de entrada ou saída com tokens pode variar de acordo com o modelo.
Para funções que geram novo texto na resposta (COMPLETE, SUMMARIZE e TRANSLATE), os tokens de entrada e de saída são contados.
Para funções que extraem apenas informações da entrada (EXTRACT_ANSWER e SENTIMENT), apenas os tokens de entrada são contados.
Para EXTRACT_ANSWER, o número de tokens faturáveis é a soma do número de tokens nos campos
from_text
equestion
.
For general information on compute costs, see Explicação dos custos de computação.
Nota
Snowflake recommends executing queries that call a Snowflake Cortex LLM Function with a smaller warehouse (no larger than MEDIUM) because larger warehouses do not increase performance. The cost associated with keeping a warehouse active will continue to apply when executing a query that calls a Snowflake Cortex LLM Function.
Function (Model) |
Snowflake credits per million tokens |
---|---|
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 |
Usage of Snowflake Cortex LLM functions appears in the Snowflake Organization Usage’s METERING_DAILY_HISTORY view with a service type of AI_SERVICES. To view credit consumption for AI services for all accounts in an organization, use the following query.
SELECT * FROM SNOWFLAKE.ORGANIZATION_USAGE.METERING_DAILY_HISTORY
WHERE service_type ILIKE '%ai_services%';
Nota
The SNOWFLAKE.ORGANIZATION_USAGE.METERING_DAILY_HISTORY view may take up to four hours to update.
Cotas de uso¶
To ensure a high standard of performance for all Snowflake customers, Snowflake Cortex LLM functions are subject to usage quotas beyond which requests may be throttled. Snowflake may adjust these quotas from time to time. The quotas in the table below are applied per account.
Function (Model) |
Tokens processed per minute (TPM) |
Rows processed per 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 |
Nota
As contas Snowflake sob demanda sem um método de pagamento válido (como contas de avaliação) são limitadas a aproximadamente um crédito por dia no uso da função de LLM do Snowflake Cortex. Para remover essa restrição, converta sua conta de avaliação em uma conta paga.
Gerenciamento de custos e limitação¶
During this preview, Snowflake recommends using a warehouse size no larger than MEDIUM when calling Snowflake Cortex LLM functions. Using a larger warehouse than necessary does not increase performance, but can result in unnecessary costs and a higher risk of throttling. This recommendation may not apply in the future due to upcoming product updates.
Restrições de modelo¶
Os modelos usados pelo Snowflake Cortex têm limitações de tamanho conforme descrito na tabela abaixo. Os tamanhos são fornecidos em tokens. Os tokens geralmente correspondem a palavras, mas nem todos os tokens são palavras, portanto o número de palavras correspondentes a um limite é ligeiramente menor que o número de tokens. As entradas que excedem o limite resultam em erro.
Função |
Modelo |
Janela de contexto (tokens) |
---|---|---|
COMPLETE |
|
32,000 |
|
32,000 |
|
|
4,096 |
|
|
32,000 |
|
|
8,000 |
|
EXTRACT_ANSWER |
Modelo gerenciado do Snowflake |
2,048 para texto
64 para pergunta
|
SENTIMENT |
Modelo gerenciado do Snowflake |
512 |
SUMMARIZE |
Modelo gerenciado do Snowflake |
32,000 |
TRANSLATE |
Modelo gerenciado do Snowflake |
1,024 |
Escolha de um modelo¶
A função COMPLETE do Snowflake Cortex oferece suporte a vários modelos de capacidade, latência e custo variados. Esses modelos foram cuidadosamente escolhidos para se alinharem aos casos de uso comuns dos clientes. Para obter o melhor desempenho por crédito, escolha um modelo que corresponda bem ao tamanho do conteúdo e à complexidade da sua tarefa. Aqui estão breves visões gerais dos modelos disponíveis.
mistral-large
is a top-tier model that scores well on a variety of metrics (see table below). It features a context window of 32,000 tokens (about 24,000 words), allowing it to engage in complex reasoning across extended conversations. It is also the most compute-intensive of the models offered by Snowflake Cortex and thus the most costly to run.mixtral-8x7b
provides low latency and high quality results, while also supporting a context length of 32,000 tokens. It is ideal for many enterprise production use cases.llama2-70b-chat
is well-suited to complex, large-scale tasks that require a moderate amount of reasoning, like extracting data or helping you to write job descriptions.mistral-7b
andgemma-7b
are capable of executing simple tasks quickly and with better cost efficiency.mistral-7b
is ideal for your simplest summarization and classification tasks that require a smaller degree of customization. Its 32,000 token limit gives it the ability to process multiple pages of text.gemma-7b
é adequado para tarefas simples de conclusão de código e texto. Ele tem uma janela de contexto de 8.000 tokens, mas é surpreendentemente capaz dentro desse limite e bastante econômico.
If you’re not sure where to start, try mistral-large
first, whether you are already using another top-tier model or are
new to LLMs. It is the most broadly capable model offered by Snowflake Cortex, and will give you a good idea what a
state-of-the-art model can do. Its results can be used as a baseline in evaluating the other models.
To help you decide, the following table provides information on how popular models perform on various benchmarks, including the models offered by Snowflake Cortex COMPLETE as well as a few other popular models.
Modelo |
Janela de contexto
(Tokens)
|
MMLU
(Raciocínio)
|
MT-Bench
(Instruções a seguir)
|
HumanEval
(Codificação)
|
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 |
- |
*Fornecido para comparação; não disponível no Snowflake Cortex COMPLETE.
Visão geral das funções de LLM¶
COMPLETE¶
Dado um prompt, a função COMPLETE de instrução gera uma resposta usando o modelo de linguagem de sua escolha. No caso de uso mais simples, o prompt é uma única cadeia de caracteres. Você também pode fornecer uma conversa incluindo vários prompts e respostas para uso interativo no estilo de bate-papo e, nesta forma de função, você também pode especificar opções de hiperparâmetros para personalizar o estilo e o tamanho da saída.
The COMPLETE function supports the following models. Different models can have different costs and quotas.
mistral-large
mixtral-8x7b
llama2-70b-chat
mistral-7b
gemma-7b
Consulte COMPLETE (SNOWFLAKE.CORTEX) para sintaxe e exemplos.
EXTRACT_ANSWER¶
A função EXTRACT_ANSWER extrai uma resposta a uma determinada pergunta de um documento de texto. O documento pode ser um documento em inglês simples ou uma representação da cadeia de caracteres de um objeto de dados semiestruturados (JSON).
See EXTRACT_ANSWER (SNOWFLAKE.CORTEX) for syntax and examples.
SENTIMENT¶
A função SENTIMENT retorna o sentimento como uma pontuação entre -1 e 1 (com -1 sendo o mais negativo e 1 o mais positivo, com valores em torno de 0 neutros) para o texto de entrada em inglês fornecido.
See SENTIMENT (SNOWFLAKE.CORTEX) for syntax and examples.
SUMMARIZE¶
A função SUMMARIZE retorna um resumo do texto em inglês fornecido.
See SUMMARIZE (SNOWFLAKE.CORTEX) for syntax and examples.
TRANSLATE¶
A função TRANSLATE traduz texto do idioma de origem indicado ou detectado para um idioma de destino.
See TRANSLATE (SNOWFLAKE.CORTEX) for syntax and examples.
Condições de erro¶
As funções de LLM do Snowflake Cortex podem produzir as seguintes mensagens de erro.
Mensagem |
Explicação |
---|---|
|
A solicitação foi rejeitada devido à carga excessiva do sistema. Tente sua solicitação novamente. |
|
O objeto |
|
O orçamento de consumo do modelo foi excedido. |
|
O modelo especificado não existe. |
|
O idioma especificado não é compatível com a função TRANSLATE. |
|
A solicitação excedeu o número máximo de tokens suportados pelo modelo (consulte Restrições de modelo). |
|
The number of requests exceeds the limit. Try again later. |
Uso das funções de LLM do Snowflake Cortex com Python¶
Snowflake Cortex LLM functions are available in Snowpark ML version 1.1.2 and later. See Instalação do Snowpark ML for instructions on setting up Snowpark ML.
Se você executar seu script Python fora do Snowflake, deverá criar uma sessão do Snowpark para usar essas funções. Consulte Conexão ao Snowflake para obter instruções.
O exemplo Python a seguir ilustra a chamada de funções de LLM do Snowflake Cortex em valores únicos:
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"))
Você também pode chamar uma função de LLM em uma coluna da tabela, conforme mostrado abaixo. Este exemplo requer um objeto de sessão (armazenado em session
) e uma tabela articles
contendo uma coluna de texto abstract_text
e cria uma nova coluna abstract_summary
contendo um resumo do abstract.
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()
Nota
O formato de bate-papo avançado (várias mensagens) de COMPLETE não é atualmente compatível com Python.
Avisos legais¶
Snowflake Cortex LLM Functions are powered by machine learning technology, including Meta’s LLaMA 2. The foundation LLaMA 2 model is licensed under the LLaMA 2 Community License and Copyright (c) Meta Platforms, Inc. All Rights Reserved. Your use of any LLM Functions based on the LLama 2 model is subject to Meta’s Acceptable Use Policy.
Machine learning technology and results provided may be inaccurate, inappropriate, or biased. Decisions based on machine learning outputs, including those built into automatic pipelines, should have human oversight and review processes to ensure model-generated content is accurate.
LLM function queries will be treated as any other SQL query and may be considered metadata.
For further information, see Snowflake AI Trust and Safety FAQ.