O blog da AWS
Como iniciar com soluções de IA generativa na AWS usando Amazon Bedrock
Por Neuton Assis, Enterprise Solutions Architect e Guilherme Ricci, Senior Startup Solutions Architect, AWS AGS
O cenário da inteligência artificial (IA) tem passando por uma transformação significativa com a ascensão de modelos generativos que têm a capacidade de criar dados de alta qualidade, abrangendo texto, imagens, música, vídeo e código, tudo isso fundamentado na linguagem natural. No entanto, criar soluções que realmente façam sentido para o negócio em termos de eficiência de custo tem sido o maior desafio, dado que essa tecnologia pode demandar de grande capacidade de recursos computacionais.
O Amazon Bedrock é um serviço de IA generativa da AWS que oferece acesso a modelos de LLMs (Large Language Model) diversos, permitindo que as organizações aproveitem o poder dessa tecnologia de forma econômica e escalável. Esta postagem fornecerá uma visão geral abrangente do Amazon Bedrock, explorando como escolher o modelo ideal para o seu caso de uso, incorporar dados privados e testar o LLM que melhor te atende antes de iniciar a implementação.
Tópicos que serão abordados
A seguir, abordaremos os seguintes tópicos:
- Principais recomendações
- Serviços de AI/ML com finalidades específicas
- Escolha do LLM que melhor atenda ao seu caso de uso
- Como usar seus dados
- Experimente os resultados e os diferentes LLMs no PartyRock
- Banco de dados de vetores
Identifique qual problema pretender resolver
Todos serviços presentes na console da AWS tem como objetivo apoiar os times a resolver problemas reais. Comece pela principal necessidade do negócio e eleja a solução que terá maior valor agregado, essa é uma recomendação para toda solução de TI e que também é aplicável em IA generativa. Tenha em mente que a solução tecnicamente mais complexa não necessariamente será a que irá gerar uma maior percepção de valor.
Ainda não tive contato com IA Generativa
Não há problemas, recomendamos que experimente soluções como o PartyRock. Aqui é possível criar sua primeira aplicação de IA Generativa de forma divertida e prática apenas escrevendo o que espera que ela faça.
Você pode criar desde aplicações que recomendam um menu com base nos ingredientes da sua dispensa, pode traçar um roteiro de viagem, um gerador de histórias para sua próxima campanha de RPG, além de conferir o que a comunidade já está criando. Não é preciso ter uma conta AWS para usar o PartyRock e por tempo limitado é oferecida uma avaliação gratuita.
Abaixo temos um exemplo de uma aplicação para simular perguntas em uma entrevista técnica.
Quando usar o Amazon Bedrock
Caso você ou seu time tenha familiaridade com uso de APIs e do SDK da AWS e não queira se comprometer com seleção de instâncias de servidor, se beneficiando de tudo que envolve a adoção desse serviço gerenciado como: não precisar cuidar da seleção dos recursos de memória RAM, GPU, deploy, segurança com criptografias e gestão de VPCs.
Escolha do LLM que melhor atenda ao seu caso de uso
A escolha de um modelo se baseia em três pilares: qualidade da resposta, tempo de resposta e custo.
Já ouvimos falar de modelos com 8, 15, 70 bilhões de parâmetros ou mais. Porém, é importante se ter em mente: o maior nem sempre será o melhor. Modelos maiores tendem a serem mais pesados e exigirem maior recurso computacional, portanto, com possibilidade de apresentar um custo financeiro maior. No Amazon Bedrock cada modelo tem potencialmente uma definição de preço diferente. A cobrança se dá baseado na quantidade de token de entrada, ou seja, o que enviamos para o modelo, e tokens de saída, que é aquilo que o modelo nos retorna como resposta. O tamanho do modelo pode influenciar diretamente no tempo de resposta.
Escolher um modelo está relacionado ao seu caso de uso. Se você precisa criar um chatbot para contato com clientes, tempo de resposta é algo que precisa ser levado em consideração. Em contrapartida, se você precisa criar um resumo detalhado de uma consulta de documentos e relatórios visando tomada de decisão, você provavelmente estará disposto a aguardar alguns segundos adicionais para ter uma resposta mais detalhada.
O idioma é algo relevante, pois a maior parte dos LLMs são treinados com dados na língua inglesa e isso pode gerar algumas alucinações, como fazer uma pergunta em português e ter uma resposta em inglês. No entanto, existem modelos como o Claude, da Anthropic, que são capazes de receber prompts no idioma nacional e responder nesse mesmo idioma. Porém, para diversos modelos, ajustes no prompt, como “responda em português do Brasil”, podem resolver esse tipo de alucinação.
Uma boa estratégia é testar com diferentes modelos. A propósito, trocar de modelos facilmente é uma das grandes vantagens do Amazon Bedrock. Uma forma de fazer isso é usando o próprio playground no Console da AWS. Ao ativar seu modelo em “Model Access”, você pode ir na opção de “Chat”. Nela, no canto superior direito, existe uma opção “Compare mode” que, quando ativada, permite selecionar um novo modelo. Ao digitar um comando, você verá a mesma resposta gerada pelos dois modelos selecionados. Na parte superior direita você verá informações de métricas do modelo, que irá lhe mostrar não só o tempo despendido para a resposta, como a quantidade de tokens inseridos e devolvidos, facilitando futuros cálculos.
A página de preços do Amazon Bedrock fornece informações detalhadas sobre os custos associados a cada modelo, permitindo que você faça uma escolha informada com base em suas necessidades e orçamento.
Como usar seus dados
Uma das principais vantagens do Amazon Bedrock é a facilidade de incorporar dados privados em suas soluções de IA generativa. Existem algumas abordagens para fazer isso, mas é importante ressaltar que sua complexidade está diretamente ligada aos custos e nível de conhecimento necessário.
Você pode pensar em um LLM como uma grande caixa, com muito conteúdo pre-treinado. Quando mandamos uma pergunta, por exemplo, ele tentará responder com aquilo que está dentro dessa caixa, ou seja, o que ele sabe. No entanto, podemos fazer com que ele traga informações de outras fontes para responder essas perguntas com melhores resultados.
- Engenharia de prompt
Essa técnica envolve a incorporação de dados diretamente no prompt (entrada de texto) enviado ao modelo. O prompt incorpora não apenas o que o usuário comunica, mas também instruções de como será a personalidade que o LLM deve representar durante a geração do conteúdo. A isso podemos dar os nomes de preambulo ou instrução. As informações que vem adjacentes e pretendem ambientar o LLM a responder de forma correta, chamamos de contexto.
Aqui cabem algumas subdivisões:
- Zero-shot: quando não passamos nenhum contexto, apenas instruções e entradas de dados.
- Few-shot: quando passamos alguns exemplos para o modelo entender do que se trata e como se comportar.
- Chain of Thoughts (CoT): ou cadeia de pensamentos, é quando o modelo explica em como ele chegou naquele resultado.
- RAG (Retrieval-Augmented Generation)
O RAG é uma técnica que combina recuperação de informações de um banco de dados com geração de texto baseada em linguagem natural. Isso permite que o modelo acesse informações relevantes de um banco de dados de vetores antes de gerar uma resposta, resultando em saídas mais contextualizadas e precisas.
O Amazon Bedrock Knowledge Bases é uma funcionalidade que facilita a criação de soluções de RAG, permitindo que você informe um diretório do Amazon S3 onde seus arquivos alvo da busca e fonte de informações adicionais estão armazenados. O próximo passo é a escolha um modelo para fazer o embedding, ou seja, que transforme o texto em notações numéricas, o que permitirá a busca por similaridade. Por último, escolhemos em qual tipo de banco de dados ele ficará.
A partir daqui é possível adicionar e remover fontes de dados ou modificar o conteúdo de uma determinada fonte de dados, esses dados serão sincronizados respeitando a periodicidade estabelecida nas configurações estabelecidas em cada fonte de dados. O Amazon Bedrock criará um identificador específico para cada base de conhecimento. Esse identificador poderá ser utilizado nas chamadas de API, tornando possível a partir disso realizar consultas e gerar resultados baseados nesses dados externos específicos.
Veja um exemplo onde um Knowledge Bases foi feito a partir da documentação do PIX. Por meio da console AWS é possível fazer testes e verificar a qualidade do treinamento. Aqui é possível fazer perguntas de domínio específico e obter os resultados com a indicação da fonte de dados. Contudo, é sempre muito importante conferir os dados retornados.
Também é possível utilizar bases dinâmicas, por meio do Amazon Bedrock Agents. Assim, é possível integrar seu modelo com uma função Lambda e, a partir dela, chamar outras APIs ou consultar um banco de dado transacional.
- Fine-tuning
Essa técnica envolve o retreinamento do modelo com seus dados, ajustando seus parâmetros para oferecer respostas mais específicas para seu domínio. Ao encontrar limitações no uso do RAG como velocidade e latência ou caso queira um modelo com conteúdo dedicado, esse refinamento é uma saída interessante, principalmente pensando em dados extensos e estáticos. Ao mesmo tempo, requererá um maior conhecimento do time para avaliar alucinações, qualidade dos dados inseridos e qualidade dos dados retornados. Você pode conferir o nossa postagem sobre Customização de modelos no Amazon Bedrock, caso queira se aprofundar mais no assunto.
O Amazon Bedrock oferece suporte ao fine-tuning, permitindo que você personalize modelos para atender às necessidades exclusivas de sua organização. Inclusive, é possível utilizar o Amazon SageMaker para refinar os modelos e importa-los depois no Amazon Bedrock, se beneficiando das facilidades de um serviço gerenciado, sem servidor. A funcionalidade Custom Model Import ainda está em preview.
Banco de dados de vetores
Os bancos de dados de vetores são aqueles que oferecem suporte para armazenamento e busca por proximidade através do processamento de linguagem natural (PLN), em dados matematicamente representados no formato de vetor. Alguns LLMs especializados em embedings são capazes de transformar textos em formato vetorial, como o modelo Amazon Titan, disponível através do Amazon Bedrock.
Para o armazenamento e busca de dados de vetores, a AWS também oferece opções de banco de dados com suporte, veja a lista atualizada dos serviços com suporte a banco de dados de vetor. No momento dessa postagem, os seguintes serviços ofereciam suporte:
- Amazon OpenSearch Service
- Amazon Aurora compatível com PostgreSQL
- Amazon Relational Database Service (Amazon RDS) para PostgreSQL
- Amazon Neptune ML
Verifique o banco de dados e a modalidade que melhor se adeque ao seu caso de uso. Como exemplo, cenários de utilização consistente podem ser economicamente mais viável a utilização do modelo com capacidade provisionada do Amazon OpenSearch Service, ao invés da modalidade sem servidor (serverless), com capacidade escalável sob demanda. Por outro lado, como exemplo, para um cenário onde já se utiliza banco de dados PostgreSQL para armazenamento de catálogo de produtos, pode-se tirar proveito da funcionalidade pgvector para viabilizar uma pesquisa por proximidade em uma coluna com embedings, melhorando a experiência do usuário final da aplicação através do processamento de linguagem natural.
As alternativas para usar IA generativa
A AWS possui soluções para diversos perfis de usuários de computação em nuvem. Desde empresas que constroem e treinam seus próprios LLMs, passando por empresas com times de desenvolvedores até startups que não possuem um time técnico dedicado. As soluções se ramificam e flexibilizam para que, independente do tamanho ou momento que a empresa está, possa ter acesso a machine learning e IA generativa. Para um caso de uso inicial onde seu time não quer se preocupar com código, serviços como Amazon Q pode ser uma indicação. Caso esteja em uma etapa avançada, com times de Cientistas de Dados dedicados para customizar a aplicação, ou se encontrou uma limitação de recursos, o Amazon SageMaker Jumpstart pode ser uma alternativa.
Serviços de AI/ML com finalidades específicas
A Amazon possui mais de 20 anos de experiência desenvolvendo soluções de AI/ML (Inteligência Artificial e Machine Learning). Você poderá tirar proveito de diversos serviços da AWS direcionados a necessidades específicas de AI/ML ao compor a sua solução de IA generativa, isso poderá trazer maior robustez para a sua arquitetura, além de torna-la economicamente mais otimizada.
Encorajamos que analise a variedade de serviços da AWS para AI/ML. Para citar aqui alguns como exemplo, temos:
- Amazon SageMaker: criação, treinamento e implantação de modelos de machine learning para qualquer caso de uso com infraestrutura, ferramentas e fluxos de trabalho totalmente gerenciados.
- Amazon Rekognition: reconhecimento de imagem e análise de vídeo com machine learning.
- Amazon Textract: extração automática de texto impresso, manuscrito, elementos de layout e dados de qualquer documento.
- Amazon Comprehend: serviço de processamento de linguagem natural (NLP) que usa machine learning para descobrir insights e relações nos textos.
- Amazon Transcribe: conversão automática de fala para texto.
- Amazon Forecast: previsão de série temporal baseado em machine learning, desenvolvido para análise de métricas de negócios.
Vamos trazer como exemplo um problema comum, como:
- Recuperar o texto presente dentro de um arquivo PDF, para uma atualização de catálogo ou cadastral. É um tipo de cenário onde o Amazon Textract pode com baixo custo e fácil integração sanar a necessidade.
- Se o cenário pede para identificar a mensagem dentro de um texto, como saber se o sentimento da mensagem é positivo ou negativo, por exemplo, em comentários de redes sociais. O Amazon Comprehend tem essa finalidade.
- Precisa internacionalizar sua página web ou aplicativo, o Amazon Translate pode facilitar essa tarefa.
Conclusão
O Amazon Bedrock é uma solução de IA generativa da AWS que oferece acesso a modelos de LLMs diversos, juntamente com recursos avançados para incorporar dados privados e personalizar os modelos de acordo com suas necessidades específicas. Ao seguir as melhores práticas de seleção de modelos, engenharia de prompt e teste de casos de uso, você pode aproveitar ao máximo o poder da IA generativa de forma econômica, segura, eficiente e escalável.
Autores
Neuton Assis é Arquiteto de Soluções na AWS para o segmento de Enterprise. Antes disso, trabalhou por mais de 10 anos na arquitetura e desenvolvimento de softwares voltados para automação de atividades de TI, auditoria de sistemas e gestão de identidade e acesso, atuando principalmente em ambientes Microsoft. Atualmente, tem se especializado em AI/ML e auxilia clientes da AWS a terem sucesso na jornada para computação em nuvem. | |
Guilherme Ricci é Arquiteto de Soluções Sênior para startups na Amazon Web Services, ajudando startups a modernizar e otimizar os custos de suas aplicações. Com mais de 10 anos de experiência em empresas do setor financeiro, atualmente trabalha com uma equipe de especialistas em AI/ML. |
Revisor
Matheus Oliveira é arquiteto de soluções na AWS, especializado em engajamentos de Inteligência Artificial e Machine Learning. Com formação em Engenharia da Computação auxilia clientes a experimentarem soluções práticas e escaláveis, buscando impacto positivo e transformação por meio de computação em nuvem. |