Funções de Large Language Model (LLM) (Snowflake Cortex)¶
Snowflake Cortex oferece acesso instantâneo a grandes modelos de linguagem (LLMs) líderes do setor, treinados por pesquisadores de empresas como Mistral, Meta e Google. Ele também oferece modelos que o Snowflake ajustou para casos de uso específicos.
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¶
A função de banco de dados CORTEX_USER no banco de dados SNOWFLAKE inclui os privilégios que permitem aos usuários chamar funções de LLM do Snowflake Cortex. Por padrão, essa função de banco de dados é concedida apenas à função ACCOUNTADMIN. ACCOUNTADMIN deve propagar esta função para funções de usuário para permitir que os usuários acessem as funções de LLM do Cortex.
A função de banco de dados SNOWFLAKE.CORTEX_USER não pode ser concedida diretamente a um usuário. Um usuário com a função ACCOUNTADMIN deve primeiro concedê-la a uma função de conta e, em seguida, conceder a função de conta aos usuários. Para obter mais informações, consulte Uso das funções de banco de dados SNOWFLAKE.
No exemplo a seguir, você assume ACCOUNTADMIN e concede ao usuário some_user
a função de banco de dados CORTEX_USER por meio da função de conta cortex_user_role
, que você cria para essa finalidade.
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;
A pseudofunção PUBLIC é concedida automaticamente a todos os usuários e funções, portanto, conceder cortex_user_role
a PUBLIC permite que todos os usuários em sua conta usem as funções de LLM do Snowflake Cortex.
GRANT DATABASE ROLE SNOWFLAKE.CORTEX_USER TO ROLE PUBLIC;
Dica
Tenha atenção ao número de usuários aos quais você está concedendo acesso e ao impacto que o uso das funções de LLM do Snowflake Cortex pode ter no consumo de computação. Estabeleça políticas em torno da finalidade de utilização (especialmente dos modelos mais dispendiosos) antes de conceder acesso generalizado a estas funcionalidades.
Espere que os usuários explorem os novos recursos, potencialmente gerando um aumento temporário nos custos, antes de se estabelecerem em um padrão de uso mais estável.
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¶
As funções de LLM do Snowflake Cortex incorrem em custos de computação com base no número de tokens processados. A tabela abaixo mostra o custo em créditos por 1 milhão de tokens para cada função.
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
.
Para obter informações gerais sobre custos de computação, consulte Explicação dos custos de computação.
Nota
Snowflake recomenda executar consultas que chamam uma função de LLM do Snowflake Cortex com um warehouse menor (não maior que MEDIUM) porque warehouses maiores não aumentam o desempenho. O custo associado à manutenção de um warehouse ativo continuará a ser aplicado ao executar uma consulta que chama uma função de LLM do Snowflake Cortex.
Função (Modelo) |
Créditos Snowflake por milhão de 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 |
O uso das funções de LLM do Snowflake Cortex aparece na exibição METERING_DAILY_HISTORY do Organization Usage do Snowflake com um tipo de serviço de AI_SERVICES. Para visualizar o consumo de crédito dos serviços de AI para todas as contas de uma organização, use a consulta a seguir.
SELECT * FROM SNOWFLAKE.ORGANIZATION_USAGE.METERING_DAILY_HISTORY
WHERE service_type ILIKE '%ai_services%';
Nota
A exibição SNOWFLAKE.ORGANIZATION_USAGE.METERING_DAILY_HISTORY pode levar até quatro horas para ser atualizada.
Cotas de uso¶
Para garantir um alto padrão de desempenho para todos os clientes do Snowflake, as funções de LLM do Snowflake Cortex estão sujeitas a cotas de uso além das quais as solicitações podem ser limitadas. A Snowflake pode ajustar essas cotas de tempos em tempos. As cotas na tabela abaixo são aplicadas por conta.
Função (Modelo) |
Tokens processados por minuto (TPM) |
Linhas processadas por minuto (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¶
Durante esta versão preliminar, Snowflake recomenda usar um tamanho de warehouse não maior que MEDIUM ao chamar funções de LLM do Snowflake Cortex. Utilizar um warehouse maior do que o necessário não aumenta o desempenho, mas pode resultar em custos desnecessários e num maior risco de limitação. Esta recomendação pode não se aplicar no futuro devido a futuras atualizações do produto.
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
é um modelo de primeira linha com boa pontuação em uma variedade de métricas (veja a tabela abaixo). Ele apresenta uma janela de contexto de 32.000 tokens (cerca de 24.000 palavras), permitindo que ele se envolva em raciocínios complexos em conversas extensas. É também o modelo que exige mais computação dos modelos oferecidos pelo Snowflake Cortex e, portanto, o mais caro de operar.mixtral-8x7b
fornece baixa latência e resultados de alta qualidade, além de oferecer suporte a um comprimento de contexto de 32.000 tokens. É ideal para muitos casos de uso de produção empresarial.llama2-70b-chat
é adequado para tarefas complexas e de grande escala que exigem uma quantidade moderada de raciocínio, como extrair dados ou ajudá-lo a escrever descrições de cargos.mistral-7b
egemma-7b
são capazes de executar tarefas simples com rapidez e melhor eficiência de custos.mistral-7b
é ideal para tarefas mais simples de resumo e classificação que exigem um menor grau de personalização. Seu limite de token 32.000 permite processar várias páginas de texto.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.
Se você não sabe por onde começar, experimente mistral-large
primeiro, mesmo que já esteja usando outro modelo de nível superior ou seja novo em LLMs. É o modelo com maior capacidade oferecido pelo Snowflake Cortex e lhe dará uma boa ideia do que um modelo de última geração pode fazer. Seus resultados podem ser usados como base na avaliação de outros modelos.
Para ajudar você a decidir, a tabela a seguir fornece informações sobre o desempenho dos modelos populares em vários benchmarks, incluindo os modelos oferecidos pelo Snowflake Cortex COMPLETE, bem como alguns outros modelos populares.
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.
A função COMPLETE oferece suporte aos modelos a seguir. Diferentes modelos podem ter diferentes custos e cotas.
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).
Consulte EXTRACT_ANSWER (SNOWFLAKE.CORTEX) para sintaxe e exemplos.
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.
Consulte SENTIMENT (SNOWFLAKE.CORTEX) para sintaxe e exemplos.
SUMMARIZE¶
A função SUMMARIZE retorna um resumo do texto em inglês fornecido.
Consulte SUMMARIZE (SNOWFLAKE.CORTEX) para sintaxe e exemplos.
TRANSLATE¶
A função TRANSLATE traduz texto do idioma de origem indicado ou detectado para um idioma de destino.
Consulte TRANSLATE (SNOWFLAKE.CORTEX) para sintaxe e exemplos.
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). |
|
O número de solicitações excede o limite. Tente novamente mais tarde. |
Uso das funções de LLM do Snowflake Cortex com Python¶
As funções de LLM do Snowflake Cortex estão disponíveis no Snowpark ML versão 1.1.2 e posterior. Consulte Instalação do Snowpark ML para obter instruções sobre como configurar o 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¶
As funções do Snowflake Cortex LLM são baseadas em tecnologia de aprendizado de máquina, incluindo LLaMA 2 do Meta. O modelo básico LLaMA 2 é licenciado sob a LLaMA 2 Licença Comunitária e Copyright (c) Meta Platforms, Inc. Todos os direitos reservados. O uso de qualquer função LLM baseada no modelo LLama 2 está sujeito à Política de uso aceitável da Meta.
A tecnologia de aprendizado de máquina e os resultados fornecidos podem ser imprecisos, inadequados ou tendenciosos. As decisões baseadas em resultados de aprendizado de máquina, incluindo aquelas incorporadas em pipelines automáticos, devem ter supervisão humana e processos de revisão para garantir que o conteúdo gerado pelo modelo seja preciso.
As consultas de função de LLM serão tratadas como qualquer outra consulta SQL e podem ser consideradas metadados.
Para obter mais informações, consulte FAQ sobre confiança e segurança do Snowflake AI.