Apesar da adoção aparentemente imparável de LLMs em todos os setores, eles são um componente de um ecossistema tecnológico mais amplo que está impulsionando a nova onda de IA. Muitos casos de uso de IA conversacional exigem LLMs como Llama 2, Flan T5 e Bloom para responder às dúvidas dos usuários. Esses modelos contam com conhecimento paramétrico para responder perguntas. O modelo aprende esse conhecimento durante o treinamento e o codifica nos parâmetros do modelo. Para atualizar esse conhecimento, devemos requalificar o LLM, o que exige muito tempo e dinheiro.
Felizmente, também podemos usar o conhecimento de origem para informar nossos LLMs. O conhecimento de origem é a informação inserida no LLM por meio de um prompt de entrada. Uma abordagem popular para fornecer conhecimento de origem é a Retrieval Augmented Generation (RAG). Usando RAG, recuperamos informações relevantes de uma fonte de dados externa e inserimos essas informações no LLM.
Nesta postagem do blog, exploraremos como implantar LLMs como Llama-2 usando Amazon Sagemaker JumpStart e manter nossos LLMs atualizados com informações relevantes por meio de Retrieval Augmented Generation (RAG) usando o banco de dados vetorial Pinecone para evitar alucinações de IA .
Geração aumentada de recuperação (RAG) no Amazon SageMaker
O Pinecone cuidará do componente de recuperação do RAG, mas você precisa de mais dois componentes críticos: um lugar para executar a inferência LLM e um lugar para executar o modelo de incorporação.
Amazon SageMaker Studio, um ambiente de desenvolvimento integrado (IDE) que fornece uma única interface visual baseada na Web onde você pode acessar ferramentas específicas para realizar todo o desenvolvimento de machine learning (ML). Ele fornece o SageMaker JumpStart, que é um hub de modelo onde os usuários podem localizar, visualizar e iniciar um modelo específico em sua própria conta SageMaker. Ele fornece modelos pré-treinados, disponíveis publicamente e proprietários para uma ampla variedade de tipos de problemas, incluindo modelos básicos.
O Amazon SageMaker Studio oferece o ambiente ideal para o desenvolvimento de pipelines LLM habilitados para RAG. Primeiro, usando o console AWS, acesse Amazon SageMaker, crie um domínio SageMaker Studio e abra um notebook Jupyter Studio.
Pré-requisitos
Conclua as seguintes etapas de pré-requisito:
- Configure o Amazon SageMaker Studio.
- Integre-se a um domínio do Amazon SageMaker.
- Inscreva-se em um banco de dados de vetores de pinha de nível gratuito.
- Bibliotecas de pré-requisitos: SageMaker Python SDK, Pinecone Client
Passo a passo da solução
Usando o notebook SageMaker Studio, primeiro precisamos instalar bibliotecas de pré-requisitos:
Implantando um LLM
Nesta postagem, discutimos duas abordagens para implantar um LLM. A primeira é através do HuggingFaceModel
objeto. Você pode usar isso ao implantar LLMs (e incorporar modelos) diretamente do hub do modelo Hugging Face.
Por exemplo, você pode criar uma configuração implantável para o google/flan-t5-xl modelo conforme mostrado na captura de tela a seguir:
Ao implantar modelos diretamente do Hugging Face, inicialize o my_model_configuration
com o seguinte:
- An
env
config nos diz qual modelo queremos usar e para qual tarefa. - Nossa execução do SageMaker
role
nos dá permissões para implantar nosso modelo. - An
image_uri
é uma configuração de imagem especificamente para implantar LLMs do Hugging Face.
Alternativamente, o SageMaker possui um conjunto de modelos diretamente compatíveis com um JumpStartModel
objeto. Muitos LLMs populares como o Llama 2 são suportados por este modelo, que pode ser inicializado conforme mostrado na captura de tela a seguir:
Para ambas as versões de my_model
, implante-os conforme mostrado na captura de tela a seguir:
Com nosso endpoint LLM inicializado, você pode começar a consultar. O formato de nossas consultas pode variar (particularmente entre LLMs conversacionais e não conversacionais), mas o processo geralmente é o mesmo. Para o modelo Hugging Face, faça o seguinte:
Você pode encontrar a solução no Repositório GitHub.
A resposta gerada que estamos recebendo aqui não faz muito sentido – é uma alucinação.
Fornecendo contexto adicional para LLM
O Llama 2 tenta responder à nossa pergunta com base apenas no conhecimento paramétrico interno. Claramente, os parâmetros do modelo não armazenam conhecimento de quais instâncias podemos com o treinamento local gerenciado no SageMaker.
Para responder a esta pergunta corretamente, devemos usar o conhecimento original. Ou seja, damos informações adicionais ao LLM por meio do prompt. Vamos adicionar essas informações diretamente como contexto adicional para o modelo.
Vemos agora a resposta correta para a pergunta; Essa foi fácil! No entanto, é improvável que um usuário insira contextos em seus prompts, pois ele já saberia a resposta para sua pergunta.
Em vez de inserir manualmente um único contexto, identifique automaticamente informações relevantes a partir de um banco de dados mais extenso de informações. Para isso, você precisará da Geração Aumentada de Recuperação.
Geração Aumentada de Recuperação
Com Retrieval Augmented Generation, você pode codificar um banco de dados de informações em um espaço vetorial onde a proximidade entre os vetores representa sua relevância/similaridade semântica. Com esse espaço vetorial como base de conhecimento, você pode converter uma nova consulta do usuário, codificá-la no mesmo espaço vetorial e recuperar os registros mais relevantes previamente indexados.
Depois de recuperar esses registros relevantes, selecione alguns deles e inclua-os no prompt do LLM como contexto adicional, fornecendo ao LLM conhecimento de origem altamente relevante. Este é um processo de duas etapas onde:
- A indexação preenche o índice vetorial com informações de um conjunto de dados.
- A recuperação acontece durante uma consulta e é onde recuperamos informações relevantes do índice vetorial.
Ambas as etapas requerem um modelo de incorporação para traduzir nosso texto simples legível por humanos em espaço vetorial semântico. Use o transformador de frase MiniLM altamente eficiente da Hugging Face, conforme mostrado na captura de tela a seguir. Este modelo não é um LLM e, portanto, não é inicializado da mesma forma que nosso modelo Llama 2.
No hub_config
, especifique o ID do modelo conforme mostrado na captura de tela acima, mas para a tarefa, use a extração de recursos porque estamos gerando embeddings de vetores e não de texto como nosso LLM. Depois disso, inicialize a configuração do modelo com HuggingFaceModel
como antes, mas desta vez sem a imagem LLM e com alguns parâmetros de versão.
Você pode implantar o modelo novamente com deploy
, usando a instância menor (somente CPU) de ml.t2.large
. O modelo MiniLM é minúsculo, por isso não requer muita memória e não precisa de GPU porque pode criar embeddings rapidamente, mesmo em uma CPU. Se preferir, você pode executar o modelo mais rapidamente na GPU.
Para criar embeddings, use o predict
método e passar uma lista de contextos para codificar através do inputs
chave conforme mostrado:
Dois contextos de entrada são passados, retornando dois embeddings de vetores de contexto, conforme mostrado:
len(out)
2
A dimensionalidade de incorporação do modelo MiniLM é 384
o que significa que cada vetor que incorpora saídas MiniLM deve ter uma dimensionalidade de 384
. No entanto, olhando para o comprimento dos nossos embeddings, você verá o seguinte:
len(out[0]), len(out[1])
(8, 8)
Duas listas contêm oito itens cada. O MiniLM primeiro processa o texto em uma etapa de tokenização. Essa tokenização transforma nosso texto simples legível por humanos em uma lista de IDs de token legíveis por modelo. Nos recursos de saída do modelo, você pode ver os embeddings em nível de token. um desses embeddings mostra a dimensionalidade esperada de 384
como mostrado:
len(out[0][0])
384
Transforme esses embeddings em nível de token em embeddings em nível de documento usando os valores médios em cada dimensão vetorial, conforme mostrado na ilustração a seguir.
Com duas incorporações vetoriais de 384 dimensões, uma para cada texto de entrada. Para facilitar nossas vidas, reúna o processo de codificação em uma única função, conforme mostrado na captura de tela a seguir:
Baixando o conjunto de dados
Faça download das perguntas frequentes do Amazon SageMaker como base de conhecimento para obter os dados que contêm colunas de perguntas e respostas.
Ao realizar a pesquisa, procure apenas Respostas, para poder descartar a coluna Pergunta. Veja o caderno para detalhes.
Nosso conjunto de dados e o pipeline de incorporação estão prontos. Agora tudo o que precisamos é de um lugar para armazenar esses embeddings.
Indexação
O banco de dados vetorial Pinecone armazena incorporações de vetores e as pesquisa com eficiência em escala. Para criar um banco de dados, você precisará de uma chave API gratuita da Pinecone.
Depois de se conectar ao banco de dados vetorial Pinecone, crie um único índice vetorial (semelhante a uma tabela em bancos de dados tradicionais). Nomeie o índice retrieval-augmentation-aws
e alinhe o índice dimension
e metric
parâmetros com aqueles exigidos pelo modelo de incorporação (MiniLM neste caso).
Para começar a inserir dados, execute o seguinte:
Você pode começar a consultar o índice com a pergunta anterior nesta postagem.
A saída acima mostra que estamos retornando contextos relevantes para nos ajudar a responder à nossa pergunta. Desde que nós top_k = 1
, index.query
retornou o resultado principal junto com os metadados que lêem Managed Spot Training can be used with all instances supported in Amazon
.
Aumentando o prompt
Use os contextos recuperados para aumentar o prompt e decidir sobre uma quantidade máxima de contexto para alimentar o LLM. Use o 1000
limite de caracteres para adicionar iterativamente cada contexto retornado ao prompt até exceder o comprimento do conteúdo.
Alimente o context_str
no prompt do LLM, conforme mostrado na captura de tela a seguir:
[Entrada]: Quais instâncias posso usar com o Managed Spot Training no SageMaker? [Saída]: Com base no contexto fornecido, você pode usar o Managed Spot Training com todas as instâncias compatíveis com o Amazon SageMaker. Portanto, a resposta é: Todas as instâncias suportadas no Amazon SageMaker.
A lógica funciona, então reúna-a em uma única função para manter as coisas limpas.
Agora você pode fazer perguntas como as mostradas a seguir:
limpar
Para parar de incorrer em cobranças indesejadas, exclua o modelo e o endpoint.
Conclusão
Nesta postagem, apresentamos o RAG com LLMs de acesso aberto no SageMaker. Também mostramos como implantar modelos Jumpstart do Amazon SageMaker com Llama 2, Hugging Face LLMs com Flan T5 e incorporar modelos com MiniLM.
Implementamos um pipeline RAG completo de ponta a ponta usando nossos modelos de acesso aberto e um índice vetorial Pinecone. Usando isso, mostramos como minimizar as alucinações e manter o conhecimento do LLM atualizado e, em última análise, melhorar a experiência do usuário e a confiança em nossos sistemas.
Para executar este exemplo por conta própria, clone este repositório GitHub e siga as etapas anteriores usando o comando Caderno de respostas a perguntas no GitHub.
Sobre os autores
jainista vedante é especialista sênior em IA/ML, trabalhando em iniciativas estratégicas de IA generativa. Antes de ingressar na AWS, Vedant ocupou cargos de especialização em ML/Data Science em várias empresas, como Databricks, Hortonworks (agora Cloudera) e JP Morgan Chase. Fora de seu trabalho, Vedant é apaixonado por fazer música, escalar, usar a ciência para levar uma vida significativa e explorar culinárias de todo o mundo.
James Briggs é Staff Developer Advocate na Pinecone, especializado em pesquisa vetorial e IA/ML. Ele orienta desenvolvedores e empresas no desenvolvimento de suas próprias soluções GenAI por meio de educação online. Antes da Pinecone, James trabalhou em IA para pequenas startups de tecnologia e corporações financeiras estabelecidas. Fora do trabalho, James tem paixão por viajar e abraçar novas aventuras, que vão desde surf e mergulho até Muay Thai e Jiu-Jitsu.
Xin Huang é um cientista aplicado sênior para Amazon SageMaker JumpStart e algoritmos integrados do Amazon SageMaker. Ele se concentra no desenvolvimento de algoritmos de aprendizado de máquina escalonáveis. Seus interesses de pesquisa estão na área de processamento de linguagem natural, aprendizado profundo explicável em dados tabulares e análise robusta de agrupamento de espaço-tempo não paramétrico. Ele publicou muitos artigos nas conferências ACL, ICDM, KDD e Royal Statistical Society: Series A.
- Conteúdo com tecnologia de SEO e distribuição de relações públicas. Seja amplificado hoje.
- PlatoData.Network Gerativa Vertical Ai. Capacite-se. Acesse aqui.
- PlatoAiStream. Inteligência Web3. Conhecimento Amplificado. Acesse aqui.
- PlatãoESG. Carbono Tecnologia Limpa, Energia, Ambiente, Solar, Gestão de resíduos. Acesse aqui.
- PlatoHealth. Inteligência em Biotecnologia e Ensaios Clínicos. Acesse aqui.
- Fonte: https://aws.amazon.com/blogs/machine-learning/mitigate-hallucinations-through-retrieval-augmented-generation-using-pinecone-vector-database-llama-2-from-amazon-sagemaker-jumpstart/
- :tem
- :é
- :não
- :onde
- $UP
- 1
- 10
- 100
- 11
- 12
- 14
- 15%
- 16
- 17
- 19
- 23
- 32
- 7
- 8
- 9
- a
- Sobre
- acima
- Acesso
- Segundo
- Conta
- em
- adicionar
- Adicional
- Informação adicional
- Adoção
- aventuras
- advogado
- novamente
- AI
- casos de uso ai
- AI / ML
- algoritmos
- alinhar
- Todos os Produtos
- juntamente
- já
- tb
- Amazon
- Amazon Sage Maker
- JumpStart do Amazon SageMaker
- Estúdio Amazon SageMaker
- Amazon Web Services
- quantidade
- an
- análise
- e
- responder
- respostas
- qualquer
- api
- app
- aplicado
- abordagem
- se aproxima
- SOMOS
- ÁREA
- por aí
- AS
- perguntar
- At
- Tentativas
- aumentar
- aumentado
- auto
- automaticamente
- disponível
- AWS
- base
- baseado
- BE
- Porque
- antes
- começar
- entre
- Blog
- Florescer
- ambos
- mais amplo
- construir
- construídas em
- negócios
- mas a
- by
- CAN
- capturar
- casas
- casos
- caracteres
- acusações
- perseguição
- limpar
- claramente
- Escalada
- Cloudera
- agrupamento
- Coluna
- colunas
- Empresas
- compatível
- completar
- componente
- componentes
- conferências
- conectado
- cônsul
- não contenho
- contém
- conteúdo
- contexto
- Contextos
- conversação
- IA conversacional
- converter
- Corporações
- correta
- corretamente
- crio
- crítico
- Atualmente
- dados,
- banco de dados
- Data
- DBS
- decidir
- profundo
- deep learning
- implantar
- Implantação
- Developer
- desenvolvedores
- em desenvolvimento
- Desenvolvimento
- Dimensão
- diretamente
- discutir
- do
- parece
- não
- Não faz
- domínio
- don
- Cair
- durante
- cada
- Mais cedo
- mais fácil
- ecossistema
- Educação
- eficiente
- eficientemente
- embutindo
- abraçando
- codificação
- final
- end-to-end
- Ponto final
- aumentar
- Meio Ambiente
- estabelecido
- Mesmo
- exemplo
- excedem
- execução
- esperado
- vasta experiência
- explorar
- Explorando
- extenso
- externo
- extrato
- Rosto
- mais rápido
- Funcionalidades
- Alimentado
- poucos
- financiar
- Encontre
- acabamento
- Primeiro nome
- Flutuador
- concentra-se
- seguinte
- Escolha
- formato
- Foundation
- Gratuito
- da
- função
- geralmente
- gerado
- gerando
- geração
- generativo
- IA generativa
- ter
- GitHub
- OFERTE
- dado
- dá
- Go
- vai
- GPU
- Guias
- manipular
- acontece
- Ter
- he
- Herói
- ajudar
- SUA PARTICIPAÇÃO FAZ A DIFERENÇA
- altamente
- sua
- Como funciona o dobrador de carta de canal
- Como Negociar
- Contudo
- HTTPS
- Huang
- Hub
- Abraçando o Rosto
- legível para humanos
- i
- ID
- ideal
- identificar
- ids
- if
- imagem
- implementado
- importar
- in
- incluir
- Incluindo
- Crescimento
- índice
- indexado
- indústrias
- informar
- INFORMAÇÕES
- iniciativas
- entrada
- inputs
- instalar
- instância
- integrado
- interesses
- Interface
- interno
- para dentro
- introduzido
- IT
- Unid
- james
- juntando
- jp
- jp morgan
- JP Morgan Chase
- jpg
- Guarda
- Chave
- Saber
- Conhecimento
- língua
- grande
- Maior
- lançamento
- conduzir
- aprendizagem
- aprende
- Comprimento
- bibliotecas
- vida
- como
- LIMITE
- Lista
- listas
- Vidas
- lhama
- LLM
- lógica
- olhar
- procurando
- lote
- máquina
- aprendizado de máquina
- fazer
- Fazendo
- gerenciados
- manualmente
- muitos
- Match
- fósforos
- máximo
- Quantia máxima
- Posso..
- significar
- significativo
- significa
- Memória
- metadados
- método
- Mitigar
- ML
- modelo
- modelos
- dinheiro
- mais
- Morgan
- a maioria
- muito
- múltiplo
- Música
- devo
- nome
- natural
- Processamento de linguagem natural
- você merece...
- Cria
- Novo
- Próximo
- PNL
- caderno
- agora
- numpy
- objeto
- of
- on
- ONE
- online
- só
- aberto
- operação
- or
- ordem
- OS
- de outra forma
- A Nossa
- Fora
- saída
- outputs
- lado de fora
- próprio
- papéis
- parâmetros
- particular
- particularmente
- passar
- passou
- paixão
- apaixonado
- Realizar
- realização
- permissões
- fotografia
- oleoduto
- Avião
- platão
- Inteligência de Dados Platão
- PlatãoData
- Popular
- abertas
- Publique
- Powering
- predição
- Previsões
- Predictor
- preferido
- evitar
- visualização
- anterior
- anteriormente
- Prévio
- Problema
- processo
- processos
- em processamento
- Perfil
- solicita
- proprietário
- fornecido
- fornece
- fornecendo
- publicamente
- publicado
- Python
- pytorch
- consultas
- questão
- Frequentes
- rapidamente
- alcance
- variando
- pronto
- receber
- registros
- regiões
- relevante
- depender
- repositório
- representa
- requerer
- requeridos
- pesquisa
- Responder
- resultar
- Resultados
- retorno
- voltar
- uma conta de despesas robusta
- Rocha
- Tipo
- real
- Execute
- é executado
- sábio
- mesmo
- dizer
- escalável
- Escala
- Ciência
- Cientista
- Ponto
- Peneira
- Sdk
- Pesquisar
- pesquisas
- Vejo
- aparentemente
- selecionar
- senior
- sentido
- sentença
- Série
- Série A
- Serviços
- conjunto
- rede de apoio social
- mostrar
- mostrou
- mostrando
- Shows
- lado
- semelhante
- mais simples
- desde
- solteiro
- Tamanho
- pequeno
- menor
- So
- Sociedade
- unicamente
- solução
- Soluções
- alguns
- algum lugar
- fonte
- Espaço
- especialista
- especializando
- Especialidade
- especificamente
- Spot
- Staff
- Startups
- estatístico
- Passo
- Passos
- Dê um basta
- loja
- lojas
- Estratégico
- Tanga
- estudo
- tal
- ajuda
- Suportado
- suportes
- .
- sistemas
- mesa
- toma
- Tarefa
- tecnologia
- startups de tecnologia
- Tecnologia
- conta
- texto
- tailandês
- do que
- que
- A
- A área
- o mundo
- deles
- Eles
- assim sendo
- Este
- deles
- coisas
- isto
- aqueles
- Através da
- tempo
- para
- token
- tokenization
- também
- ferramentas
- topo
- tradicional
- Training
- transformador
- transformadores
- transformações
- traduzir
- Viagens
- Confiança
- dois
- tipos
- Em última análise
- improvável
- imparável.
- até
- não desejado
- Atualizar
- us
- usar
- usava
- Utilizador
- Experiência do Usuário
- usuários
- utilização
- Valores
- vário
- versão
- versões
- via
- visual
- esperar
- Passo a passo
- queremos
- foi
- Onda
- Caminho..
- we
- web
- serviços web
- Web-Based
- O Quê
- quando
- qual
- enquanto
- Largo
- Ampla variedade
- precisarão
- de
- sem
- Atividades:
- trabalhou
- trabalhar
- trabalho
- mundo
- seria
- embrulho
- X
- sim
- Vocês
- investimentos
- zefirnet