Explore o novo chatbot do Developer Center! O MongoDB AI chatbot pode ser acessado na parte superior da sua navegação para responder a todas as suas perguntas sobre o MongoDB .

Junte-se a nós no Amazon Web Services re:Invent 2024! Saiba como usar o MongoDB para casos de uso de AI .
Desenvolvedor do MongoDB
Central de desenvolvedor do MongoDBchevron-right
Produtoschevron-right
Atlaschevron-right

Parte #2: criar um modelo de endpoint com o Amazon SageMaker, o AWS Lambda e o AWS API Gateway

Dominic Frei7 min read • Published Sep 18, 2024 • Updated Sep 18, 2024
IAAWSSem servidorAtlasPesquisa vetorialPython
Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
Bem-vindo à parte 2 da série Amazon SageMaker + Atlas Vector Search. No Part 1, mostrei como configurar uma arquitetura que usa ambas as ferramentas para criar incorporações para seus dados e como usá-las para pesquisar semanticamente seus dados.
Este artigo é parte de uma série de três partes:
Nesta parte da série, analisaremos o que realmente está sendo feito. chega de teoria! A parte 2 mostrará como criar o serviço REST descrito na arquitetura.
O endpoint REST servirá como o codificador que cria incorporações (vetores) que serão usados na próxima parte desta série para pesquisar seus dados semanticamente. A implantação do modelo será tratada pelo Amazon SageMaker, o serviço de ML tudo-em-um da AWS. Exporemos esse endpoint usando o AWS Lambda e o AWS API Gateway mais tarde para disponibilizá-lo para o aplicativo de servidor.

Amazon SageMaker

O Amazon SageMaker é uma plataforma de machine learning baseada na nuvem que permite aos desenvolvedores criar, treinar e implementar modelos de machine learning (ML) para qualquer caso de uso com infraestrutura, ferramentas e fluxos de trabalho totalmente gerenciados.

Introdução ao Amazon SageMaker

O Amazon SageMaker SaltStart ajuda você a começar a usar o machine learning de forma rápida e fácil. As soluções são totalmente personalizáveis e suportam a implantação com um clique e o ajuste fino de mais de 150 modelos populares de código aberto, como processamento de linguagem natural, detecção de objetos e modelos de classificação de imagens.
Inclui uma série de soluções populares:
  • Extrair e analisar dados: extraia, processe e analise documentos automaticamente para obter uma Investigação mais precisa e uma tomada de decisão mais rápida.
  • Detecção de fraudes: automatize a detecção de transações suspeitas com mais rapidez e alerta seus clientes para reduzir possíveis perdas econômicas.
  • Predição de rotatividade de clientes: preveja a probabilidade de rotatividade de clientes e melhore a retenção analisando os prováveis abandonadores e realizando ações corretivas, como ofertas promocional.
  • Recomendações personalizadas: ofereça experiências personalizadas e exclusivas aos clientes para melhorar a satisfação do cliente e expandir seus negócios rapidamente.

Vamos criar um playground para você experimentar!

Antes de começarmos, certifique-se de escolher uma região que seja suportada para RStudio (mais sobre isso mais tarde) e JumpStart. Você pode conferir ambos na página depreços do Amazon SageMaker verificando se a região desejada aparece na lista On-Demand Pricing.
Na página principal do Amazon SageMaker, você encontrará a opção para Set up for a single user. Isso configurará um domínio e um usuário de início rápido.
Página de destino do Amazon SageMaker
Um QuickSetupDomain é essencialmente apenas uma configuração padrão para que você possa começar a implantar modelos e experimentar o SageMaker. Você pode personalizá-lo mais tarde de acordo com suas necessidades.
A configuração inicial só precisa ser feita uma vez, mas pode levar alguns minutos. Quando terminar, o Amazon SageMaker o notificará de que o novo domínio está pronto.
O domínio Amazon SageMaker oferece suporte a ambientes de machine learning (ML) do Amazon SageMaker e contém o seguinte:
  • O próprio domínio, que contém um AWS EC2 no qual os modelos serão implantados. Isso contém inerentemente uma lista de usuários autorizados e uma variedade de configurações de segurança, aplicativos, políticas e do Amazon Virtual Private Cloud (Amazon VPC).
  • O UserProfile, que representa um único usuário em um domínio com o qual você trabalhará.
  • Um shared space, que consiste em um aplicativo JupyterServer compartilhado e um diretório compartilhado. Todos os usuários do domínio têm acesso ao mesmo espaço compartilhado.
  • Um App, que representa um aplicativo que suporta a experiência de leitura e execução dos notebooks, terminais e consoles do usuário.
Detalhes do domínio no SageMaker após a criação
Após a criação do domínio e do usuário, você pode iniciar o SageMaker Studio, que será sua plataforma para interagir com o SageMaker, seus modelos e implantações para esse usuário.
O Amazon SageMaker Studio é um ambiente de desenvolvimento integrado (IDE) baseado na Web para machine learning que permite construir, treinar, depurar, distribuir e monitorar seus modelos de machine learning.
Como abrir o Studio
Aqui, Go e começaremos com uma nova solução JumpStart.
Como começar o JumpStart
Tudo o que você precisa fazer para configurar sua solução JumpStart é escolher um modelo. Para este tutorial, usaremos um modelo de incorporação chamado All MiniLM L6 v2 da Hugging Face.
Escolha seu modelo JumpStart
Ao escolher o modelo, clique em Deploy e o SageMaker deixará tudo pronto para você.
The All MiniLM L6 v2
Você pode ajustar o endpoint às suas necessidades, mas para este tutorial, você pode totalmente Go os padrões.
Configurações de implantação do modelo
Assim que o modelo mostrar seu status como In service, tudo estará pronto para ser usado.
Resumo do endpoint
Observe que o nome do endpoint aqui é jumpstart-dft-hf-textembedding-all-20240117-062453. Anote o nome do endpoint — você precisará dele na próxima etapa.

Usando o modelo para criar embeddings

Agora que o modelo está configurado e o ponto de extremidade está pronto para ser usado, podemos expô-lo para o nosso aplicativo de servidor.
Não expomos o endpoint SageMaker diretamente. Em vez disso, usaremos o Amazon Web Services API Gateway e Amazon Web Services Lambda.
Vamos começar criando a função lambda que usa o endpoint para criar incorporações.
O AWS Lambda é uma plataforma de computação sem servidor e orientada por eventos fornecida pela Amazon como parte do Amazon Web Services. Ele foi projetado para permitir que os desenvolvedores executem códigos sem provisionar ou gerenciar servidores. Ele executa o código em resposta a eventos e gerencia automaticamente os recursos de computação exigidos por esse código.
No Console principal AWS, Go para AWS Lambda e clique em Create function.
AWS Lambda
Escolha Author from scratch, forneça um nome à sua função (sageMakerLambda, por exemplo) e escolha o tempo de execução. Para este exemplo, estaremos executando no Python.
Criando uma função do AWS Lambda
Quando tudo estiver configurado corretamente, crie a função.
Configurações da função lambda
O trecho de código a seguir pressupõe que a função lambda e o endpoint do Amazon SageMaker estejam implantados na mesma conta do AWS. Tudo o que você precisa fazer é substituir <YOUR_ENDPOINT_NAME> pelo nome real do endpoint da seção anterior.
Observe que o lambda_handler retorna um código de status e um corpo. Ele está pronto para ser exposto como um endpoint para usar Amazon Web Services API Gateway.
1import json
2import boto3
3
4sagemaker_runtime_client = boto3.client("sagemaker-runtime")
5
6def lambda_handler(event, context):
7 try:
8 # Extract the query parameter 'query' from the event
9 query_param = event.get('queryStringParameters', {}).get('query', '')
10
11 if query_param:
12 embedding = get_embedding(query_param)
13 return {
14 'statusCode': 200,
15 'body': json.dumps({'embedding': embedding})
16 }
17 else:
18 return {
19 'statusCode': 400,
20 'body': json.dumps({'error': 'No query parameter provided'})
21 }
22
23 except Exception as e:
24 return {
25 'statusCode': 500,
26 'body': json.dumps({'error': str(e)})
27 }
28
29def get_embedding(synopsis):
30 input_data = {"text_inputs": synopsis}
31 response = sagemaker_runtime_client.invoke_endpoint(
32 EndpointName="<YOUR_ENDPOINT_NAME>",
33 Body=json.dumps(input_data),
34 ContentType="application/json"
35 )
36 result = json.loads(response["Body"].read().decode())
37 embedding = result["embedding"][0]
38 return embedding
Não se esquecer de clicar em Deploy!
Editor de código Lambda
Uma última coisa que precisamos fazer antes de podermos usar essa função lambda é garantir que ela realmente tenha permissão para executar o endpoint SageMaker. Vá para a parte Configuration da função Lambda e depois para Permissions. Você pode simplesmente clicar no linkRole Namepara acessar o papel associado no AWS Identity e Access Management (IAM).
Permissões do Lambda
No IAM, você deve escolher Add permissions.
Role de Lambda
Você pode escolher Attach policies anexar políticas pré-criadas da lista de políticas do IAM.
Permissões de função
Por enquanto, vamos usar o AmazonSageMakerFullAccess, mas lembre-se de selecionar somente as permissões necessárias para seu aplicativo específico.
Política AmazonSageMakerFullAccess anexada à função Lambda

Expondo sua função lambda por meio do AWS API Gateway

Agora, vamos para AWS API Gateway, clique em Create APIe depois em Build em REST API.
Modelo de REST API do gateway de API
Escolha criar uma nova API e nomeie-a. Neste exemplo, estamos chamando-o de sageMakerApi.
Criar uma REST API no API Gateway
É tudo o que você precisa fazer por enquanto. O tipo de endpoint da API pode permanecer regional, supondo que você tenha criado a função Lambda na mesma região. Pressione Create API.
Configurações do gateway de API
Primeiro, precisamos criar um novo recurso.
Recursos do Gateway de API
O caminho do recurso será /. Escolha um nome comosageMakerResource.
Geração de recursos do API Gateway
Em seguida, você retornará à visão geral da API. Desta vez, clique em Create method. Precisamos de um método GET que se integre a uma função lambda.
Criação de método
Marque Lambda proxy integration e escolha a função lambda que você criou na seção anterior. Em seguida, crie o método.
Configuração do método
Por fim, não se lembre de implantar a API.
Implantando o recurso
Escolha um estágio. Isso influenciará o URL que precisamos usar (o API Gateway mostrará o URL completo em breve). Como ainda estamos testando, TEST pode ser uma boa escolha.
Configurações de sistema
Este é apenas um teste para um tutorial, mas antes de implantar na produção, adicione também camadas de segurança, como chaves de API. Quando tudo estiver pronto, a abaResources deverá ter a seguinte aparência.
Implantação concluída
Ao enviar requests para o API Gateway, receberemos a query como um string de query de URL. A próxima etapa é configurar o API Gateway e tell sobre isso e também sobre o que fazer com ele. Go para o seu Resources, click em GET again e vá para a tab Method request . ClickEdit.
Editando a solicitação de método
Na seção URL query string parameters, você deseja adicionar uma nova string de query dando um nome a ela. Escolhemos query aqui. Defina como Required, mas não em cache, e salve-o.
Adicionando um parâmetro de string de consulta
O novo endpoint é criado. Neste ponto, podemos pegar o URL e testá-lo via cURL para ver se essa parte funcionou bem. Você pode encontrar a URL completa (incluindo estágio e endpoint) na guiaStages abrindo o estágio e o endpoint e clicando em GET. Neste exemplo, é https://4ug2td0e44.execute-api.ap-northeast-2.amazonaws.com/TEST/sageMakerResource. Sua URL deve ser semelhante.
Visão geral dos estágios
Usando o Amazon Cloud Shell ou qualquer outro terminal, tente executar uma solicitação cURL:
1curl -X GET 'https://4ug2td0e44.execute-api.ap-northeast-2.amazonaws.com/TEST/sageMakerResource?query=foo'
Se tudo foi configurado corretamente, você deve obter um resultado parecido com este (a matriz contém 384 entradas no total):
1{"embedding": [0.01623343490064144, -0.007662375457584858, 0.01860642433166504, 0.031969036906957626,................... -0.031003709882497787, 0.008777940645813942]}
Seu serviço REST de incorporações está pronto. Parabéns! Agora você pode converter seus dados em um vetor com 384 dimensões!
Na próxima e última parte do tutorial, analisaremos o uso desse endpoint para preparar vetores e executar uma pesquisa vetorial usando o MongoDB Atlas.
✅ Já tem uma conta AWS? O Atlas aceita pagamentos por uso por meio do AWS Marketplace (AWS MP) sem nenhum compromisso inicial — basta se inscrever no MongoDB Atlas por meio do AWS Marketplace.
✅ Obtenha ajuda em nossos fóruns da comunidade.
Principais comentários nos fóruns
Ainda não há comentários sobre este artigo.
Iniciar a conversa

Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
{Parte de uma série
Pesquisa de vetores com o MongoDB Atlas e o Amazon SageMaker
Próximo
Continuar

Mais nesta série
Relacionado
Tutorial

Como escrever testes de unidade para MongoDB Atlas Functions


Sep 09, 2024 | 10 min read
Artigo

Realm Atlas Triggers Mimos e Triggers - Agendamento trigger baseado em documentos


Sep 09, 2024 | 5 min read
Tutorial

Fullstack Application Development with AWS Amplify, AppSync, and MongoDB Atlas


Nov 27, 2024 | 3 min read
Tutorial

Acelere sua experiência em AI : simplifique a geração de AI RAG com o MongoDB Atlas e o mecanismo de lógica de AI Vertex do Google


Aug 16, 2024 | 6 min read
Sumário