Integre o Amazon Bedrock ao Amazon Redshift ML para aplicações generativas de IA


Redshift da Amazon aprimorou seu Recurso Redshift ML para apoiar a integração de grandes modelos de linguagem (LLMs). Como parte dessas melhorias, o Redshift agora permite a integração nativa com Base Amazônica. Essa integração permite que você use LLMs a partir de comandos SQL simples juntamente com seus dados no Amazon Redshift, ajudando você a criar IA generativa aplicativos rapidamente. Essa combinação poderosa permite que os clientes aproveitem os recursos transformadores dos LLMs e os incorporem perfeitamente em seus fluxos de trabalho analíticos.

Com esta nova integração, agora você pode realizar tarefas generativas de IA, como tradução de idiomas, resumo de texto, geração de texto, classificação de clientes e análise de sentimentos em seus dados do Redshift usando modelos básicos (FMs) populares, como Claude da Anthropic, Amazon Titan, Meta’s Llama 2 e Mistral AI. Você pode usar o CRIAR MODELO EXTERNO comando para apontar para um modelo baseado em texto em Base Amazônicanão exigindo treinamento ou provisionamento de modelo. Você pode invocar esses modelos usando comandos SQL familiares, tornando mais simples do que nunca a integração de recursos generativos de IA em seus fluxos de trabalho de análise de dados.

Visão geral da solução

Para ilustrar esse novo recurso de aprendizado de máquina (ML) do Redshift, construiremos uma solução para gerar planos de dieta personalizados para pacientes com base em suas condições e medicamentos. A figura a seguir mostra as etapas para construir a solução e as etapas para executá-la.

Integre o Amazon Bedrock ao Amazon Redshift ML para aplicações generativas de IA

As etapas para construir e executar a solução são as seguintes:

  1. Carregar dados de pacientes de amostra
  2. Put together o immediate
  3. Habilitar acesso ao LLM
  4. Crie um modelo que faça referência ao modelo LLM no Amazon Bedrock
  5. Envie o immediate e gere um plano de dieta personalizado para o paciente

Pré-requisitos

  1. Um Conta AWS.
  2. Um Amazon Redshift sem servidor grupo de trabalho ou knowledge warehouse provisionado. Para obter instruções de configuração, consulte Criando um grupo de trabalho com um namespace ou Crie um knowledge warehouse de amostra do Amazon Redshiftrespectivamente. O recurso de integração do Amazon Bedrock é compatível com Amazon Redshift provisionado e sem servidor.
  3. Criar ou atualizar um AWS Identification and Entry Administration (função IAM) para integração do Amazon Redshift ML com o Amazon Bedrock.
  4. Associe a função do IAM para uma instância do Redshift.
  5. Os usuários devem ter o permissões necessárias para criar modelos.

Implementação

A seguir estão as etapas de implementação da solução. Os dados de amostra usados ​​na implementação são apenas para ilustração. A mesma abordagem de implementação pode ser adaptada aos seus conjuntos de dados e casos de uso específicos.

Você pode baixar um Bloco de notas SQL para executar as etapas de implementação no Redshift Editor de Consultas V2. Se estiver usando outro editor SQL, você pode copiar e colar as consultas SQL do conteúdo desta postagem ou do pocket book.

Carregar dados de pacientes de amostra:

  1. Abra o Amazon Redshift Editor de Consultas V2 ou outro editor SQL de sua escolha e conecte-se ao knowledge warehouse do Redshift.
  2. Execute o seguinte SQL para criar o patientsinfo tabela e carregar dados de amostra.
-- Create desk

CREATE TABLE patientsinfo (
pid integer ENCODE az64,
pname varchar(100),
situation character various(100) ENCODE lzo,
remedy character various(100) ENCODE lzo
);

  1. Baixe o arquivo de amostracarregue-o em seu bucket S3 e carregue os dados no patientsinfo tabela usando o seguinte comando COPY.
-- Load pattern knowledge
COPY patientsinfo
FROM 's3://<>/sample_patientsinfo.csv'
IAM_ROLE DEFAULT
csv
DELIMITER ','
IGNOREHEADER 1;

Put together o immediate:

  1. Execute o SQL a seguir para agregar condições e medicamentos do paciente.
SELECT
pname,
listagg(distinct situation,',') inside group (order by pid) over (partition by pid) as situations,
listagg(distinct remedy,',') inside group (order by pid) over (partition by pid) as drugs
FROM patientsinfo

A seguir está o exemplo de saída mostrando condições e medicamentos agregados. A saída inclui várias linhas, que serão agrupadas na próxima etapa.

  1. Crie o immediate para combinar dados de pacientes, condições e medicamentos.
SELECT
pname || ' has ' || situations || ' taking ' || drugs as patient_prompt
FROM (
    SELECT pname, 
    listagg(distinct situation,',') inside group (order by pid) over (partition by pid) as situations,
    listagg(distinct remedy,',') inside group (order by pid) over (partition by pid) as drugs
    FROM patientsinfo) 
GROUP BY 1

A seguir está o exemplo de saída que mostra os resultados do immediate totalmente construído concatenando os pacientes, condições e medicamentos em um valor de coluna única.

  1. Crie uma visualização materializada com a consulta SQL anterior como definição. Esta etapa não é obrigatória; você está criando a tabela para facilitar a leitura. Observe que você poderá ver uma mensagem indicando que as visualizações materializadas com aliases de coluna não serão atualizadas de forma incremental. Você pode ignorar esta mensagem com segurança para fins desta ilustração.
CREATE MATERIALIZED VIEW mv_prompts AUTO REFRESH YES
AS
(
SELECT pid,
pname || ' has ' || situations || ' taking ' || drugs as patient_prompt
FROM (
SELECT pname, pid,
listagg(distinct situation,',') inside group (order by pid) over (partition by pid) as situations,
listagg(distinct remedy,',') inside group (order by pid) over (partition by pid) as drugs
FROM patientsinfo)
GROUP BY 1,2
)

  1. Execute o SQL a seguir para revisar a saída de amostra.
SELECT * FROM mv_prompts restrict 5;

A seguir está um exemplo de saída com uma visão materializada.

Habilite o acesso ao modelo LLM:

Execute as etapas a seguir para habilitar o acesso ao modelo no Amazon Bedrock.

  1. Navegue até o Console Amazon Bedrock.
  2. No painel de navegação, escolha Acesso ao modelo.

  1. Escolher Habilitar modelos específicos.
    Você deve ter o necessário Permissões do IAM para permitir o acesso aos FMs Amazon Bedrock disponíveis.

  1. Para esta ilustração, use Modelo Claude da Antrópico. Digitar Claude na caixa de pesquisa e selecione Cláudio da lista. Escolher Próximo para prosseguir.

  1. Revise a seleção e escolha Enviar.

Crie um modelo referenciando o modelo LLM no Amazon Bedrock:

  1. Navegue de volta para o Amazon Redshift Editor de Consultas V2 ou, se você não usou o Question Editor V2, para o editor SQL usado para se conectar ao knowledge warehouse do Redshift.
  2. Execute o seguinte SQL para criar um modelo externo referenciando o anthropic.claude-v2 modelo no Amazon Bedrock. Ver IDs de modelo do Amazon Bedrock para saber como encontrar o ID do modelo.
CREATE EXTERNAL MODEL patient_recommendations
FUNCTION patient_recommendations_func
IAM_ROLE '<>'
MODEL_TYPE BEDROCK
SETTINGS (
    MODEL_ID 'anthropic.claude-v2',
    PROMPT 'Generate customized weight loss plan plan for following affected person:');

Envie o immediate e gere um plano de dieta personalizado para o paciente:

  1. Execute o seguinte SQL para passar o immediate para a função criada na etapa anterior.
SELECT patient_recommendations_func(patient_prompt) 
FROM mv_prompts restrict 2;

  1. Você obterá o resultado com o plano de dieta gerado. Você pode copiar as células e colá-las em um editor de texto ou exportar a saída para visualizar os resultados em uma planilha se estiver usando o Redshift Question Editor V2.

Você precisará expandir o tamanho da linha para ver o texto completo.

Opções adicionais de personalização

O exemplo anterior demonstra uma integração direta do Amazon Redshift com o Amazon Bedrock. No entanto, você pode personalizar ainda mais essa integração para atender às suas necessidades e requisitos específicos.

  • Funções de inferência como funções somente de líder: As funções de inferência do modelo Amazon Bedrock podem ser executadas apenas como nó líder quando a consulta não faz referência a tabelas. Isso pode ser útil se você quiser fazer uma pergunta rapidamente a um LLM.

Você pode executar o seguinte SQL sem FROM cláusula. Isso será executado apenas como função do nó líder porque não precisa de dados para buscar e passar para o modelo.

SELECT patient_recommendations_func('Generate weight loss plan plan for pre-diabetes');

Isso retornará um plano de dieta genérico de 7 dias para pré-diabetes. A figura a seguir é um exemplo de saída gerado pela chamada de função anterior.

  • Inferência com modelos de tipo de solicitação UNIFICADA: Neste modo, você pode passar parâmetros opcionais adicionais junto com o texto de entrada para personalizar a resposta. O Amazon Redshift passa esses parâmetros para os parâmetros correspondentes do Conversar API.

No exemplo a seguir, estamos definindo o temperature parâmetro para um valor personalizado. O parâmetro temperature afeta a aleatoriedade e a criatividade dos resultados do modelo. O valor padrão é 1 (o intervalo é de 0 a 1,0).

SELECT patient_recommendations_func(patient_prompt,object('temperature', 0.2)) 
FROM mv_prompts
WHERE pid=101;

A seguir está um exemplo de saída com uma temperatura de 0,2. A saída inclui recomendações para beber líquidos e evitar certos alimentos.

Gere novamente as previsões, desta vez definindo a temperatura para 0,8 para o mesmo paciente.

SELECT patient_recommendations_func(patient_prompt,object('temperature', 0.8)) 
FROM mv_prompts
WHERE pid=101;

A seguir está um exemplo de saída com uma temperatura de 0,8. O resultado ainda inclui recomendações sobre a ingestão de líquidos e alimentos a evitar, mas é mais específico nessas recomendações.

Observe que a saída não será a mesma sempre que você executar uma consulta específica. No entanto, queremos ilustrar que o comportamento do modelo é influenciado pela alteração dos parâmetros.

  • Inferência com modelos de tipo de solicitação RAW: CREATE EXTERNAL MODEL oferece suporte a modelos hospedados no Amazon Bedrock, mesmo aqueles que não são compatíveis com a API Amazon Bedrock Converse. Nesses casos, o request_type precisa ser uncooked e a solicitação precisa ser construída durante a inferência. A solicitação é uma combinação de um immediate e parâmetros opcionais.

Certifique-se de habilitar o acesso ao modelo Titan Textual content G1 – Categorical no Amazon Bedrock antes de executar o exemplo a seguir. Você deve seguir os mesmos passos descritos anteriormente em Habilitar acesso ao modelo LLM para permitir o acesso a este modelo.

-- Create mannequin with REQUEST_TYPE as RAW

CREATE EXTERNAL MODEL titan_raw
FUNCTION func_titan_raw
IAM_ROLE '<>'
MODEL_TYPE BEDROCK
SETTINGS (
MODEL_ID 'amazon.titan-text-express-v1',
REQUEST_TYPE RAW,
RESPONSE_TYPE SUPER);

-- Must assemble the request throughout inference.
SELECT func_titan_raw(object('inputText', 'Generate customized weight loss plan plan for following: ' || patient_prompt, 'textGenerationConfig', object('temperature', 0.5, 'maxTokenCount', 500)))
FROM mv_prompts restrict 1;

A figura a seguir mostra o exemplo de saída.

  • Busque métricas de execução com RESPONSE_TYPE como SUPER: Se precisar de mais informações sobre uma solicitação de entrada, como complete de tokens, você pode solicitar o RESPONSE_TYPE ser tremendous quando você cria o modelo.
-- Create Mannequin specifying RESPONSE_TYPE as SUPER.

CREATE EXTERNAL MODEL patient_recommendations_v2
FUNCTION patient_recommendations_func_v2
IAM_ROLE '<>'
MODEL_TYPE BEDROCK
SETTINGS (
MODEL_ID 'anthropic.claude-v2',
PROMPT 'Generate customized weight loss plan plan for following affected person:',
RESPONSE_TYPE SUPER);

-- Run the inference perform
SELECT patient_recommendations_func_v2(patient_prompt)
FROM mv_prompts restrict 1;

A figura a seguir mostra a saída, que inclui tokens de entrada, tokens de saída e métricas de latência.

Considerações e melhores práticas

Há algumas coisas que você deve ter em mente ao usar os métodos descritos nesta postagem:

  • Consultas de inferência podem gerar exceções de limitação devido às cotas limitadas de tempo de execução do Amazon Bedrock. O Amazon Redshift tenta novamente as solicitações várias vezes, mas as consultas ainda podem ser limitadas porque a taxa de transferência de modelos não provisionados pode ser variável.
  • A taxa de transferência de consultas de inferência é limitada pelas cotas de tempo de execução dos diferentes modelos oferecidos pelo Amazon Bedrock em diferentes regiões da AWS. Se você achar que a taxa de transferência não é suficiente para seu aplicativo, poderá solicitar um aumento de cota para sua conta. Para obter mais informações, consulte Cotas para Amazon Bedrock.
  • Se você precisar de uma taxa de transferência estável e consistente, considere obter a taxa de transferência provisionada para o modelo necessário no Amazon Bedrock. Para obter mais informações, consulte Aumente a capacidade de invocação de modelos com taxa de transferência provisionada no Amazon Bedrock.
  • Usar o Amazon Redshift ML com o Amazon Bedrock gera custos adicionais. O custo é específico do modelo e da região e depende do número de tokens de entrada e saída que o modelo processará. Para obter mais informações, consulte Preços do Amazon Bedrock.

Limpar

Para evitar incorrer em cobranças futuras, exclua a instância do Redshift Serverless ou o knowledge warehouse provisionado do Redshift criado como parte das etapas de pré-requisito.

Conclusão

Nesta postagem, você aprendeu como usar o recurso Amazon Redshift ML para invocar LLMs no Amazon Bedrock do Amazon Redshift. Você recebeu instruções passo a passo sobre como implementar essa integração, usando conjuntos de dados ilustrativos. Além disso, leia sobre várias opções para personalizar ainda mais a integração para ajudar a atender às suas necessidades específicas. Nós encorajamos você a tentar Integração do Redshift ML com Amazon Bedrock e compartilhe seus comentários conosco.


Sobre os Autores

Satesh Sonti é arquiteto sênior de soluções especializadas em análise baseado em Atlanta, especializado na construção de serviços de dados corporativos, armazenamento de dados e soluções analíticas. Ele tem mais de 19 anos de experiência na construção de ativos de dados e na liderança de serviços de dados complexos para clientes bancários e de seguros em todo o mundo.

Nikos Koulouris é engenheiro de desenvolvimento de software program na AWS. Ele recebeu seu PhD pela Universidade da Califórnia, San Diego e tem trabalhado nas áreas de bancos de dados e análises.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *