Como criar aplicativos de IA generativa no Amazon ECS para o SageMaker JumpStart
O aumento da popularidade da IA Generativa (GenAI) reflete uma mudança mais ampla em direção à automação inteligente no cenário empresarial.
Tal transformação permite que as empresas inovem em uma escala sem precedentes, ao mesmo tempo em que atendem às demandas dinâmicas do mercado.
Embora a promessa da GenAI seja empolgante, os primeiros passos em direção à sua adoção podem ser intimidadores. Este artigo tem como objetivo desmistificar as complexidades e oferecer orientações para você começar sua jornada.
O Amazon SageMaker Jumpstart oferece uma opção conveniente para iniciar sua jornada com GenAI na AWS.
Ele oferece modelos base como Stable Diffusion, FLAN-T5 e LLaMa-2, que são pré-treinados em grandes quantidades de dados. Os foundation models (FMs) podem ser adaptados a uma ampla variedade de cargas de trabalho em diferentes domínios, como criação de conteúdo, sumarização de texto, etc.
Amazon SageMaker Studio
O Amazon SageMaker Studio fornece blocos de anotação Jupyter gerenciados, uma interface web interativa para executar código e análise de dados ao vivo. Além disso, você pode refinar e implantar modelos base em endpoints do Amazon SageMaker para inferência a partir do SageMaker Studio.
No entanto, os usuários de negócios responsáveis por verificar a eficácia dos FMs podem não estar familiarizados com Jupyter ou escrever código. Para eles, é mais fácil acessar os modelos base no contexto de um aplicativo. Aqui é onde o Streamlit faz a grande diferença.
Streamlit
O Streamlit é uma biblioteca Python de código aberto que permite que cientistas de dados e engenheiros construam e implantem aplicativos da web para projetos de machine learning e ciência de dados com um mínimo de codificação.
A interface do usuário baseada na web o torna ideal para os usuários de negócios interagirem. Com aplicativos Streamlit, eles podem explorar ou verificar facilmente os foundation models e colaborar efetivamente com as equipes de ciência de dados.
Amazon ECS
O Amazon Elastic Container Service (Amazon ECS) é um orquestrador de contêineres totalmente gerenciado, que facilita a execução de aplicativos em contêineres de forma escalável e segura.
AWS Fargate
O AWS Fargate é um mecanismo de computação sem servidor para contêineres. Ele pode simplificar o gerenciamento e o dimensionamento de aplicativos na nuvem, transferindo tarefas operacionais não diferenciadas para a AWS.
Com o Amazon ECS e o AWS Fargate, você pode aliviar os encargos operacionais, permitindo que o foco do trabalho esteja em inovar e desenvolver rapidamente aplicativos GenAI com Streamlit.
Além disso, ao configurar um mecanismo de Integração/Entrega Contínua (CI/CD) por meio do AWS CodePipeline, você pode iterar eficientemente com o feedback.
Ao longo deste conteúdo, discutiremos como você pode construir um aplicativo GenAI com o Amazon ECS, o AWS Fargate, o Amazon SageMaker JumpStart e o AWS CodePipeline.
Visão geral da solução
A Figura 1 mostra a arquitetura de um cluster do Amazon ECS com tarefas para um aplicativo GenAI com Streamlit. O aplicativo pode ser acessado usando o AWS Application Load Balancer, que está associado a um serviço Amazon ECS.
O Amazon ECS garante que um número necessário de tarefas esteja sempre em execução.
Você pode configurar o Amazon ECS para dimensionar automaticamente suas tarefas à medida que a carga aumenta. Outra possibilidade com esse serviço é compartilhar o endereço do DNS do Load Balancer com seus usuários de negócios para utilizar o modelo. Alternativamente, você pode usar um DNS personalizado para o aplicativo através do Amazon Route 53 ou seu serviço de DNS preferido.
Normalmente, seus endpoints do Amazon SageMaker e seu cluster do Amazon ECS com o aplicativo Streamlit vivem na mesma conta da AWS.
Isso permite que você tenha uma configuração independente para o acesso ao seu modelo GenAI, o ajuste fino e os testes de inferência.
No entanto, se seu endpoint do Amazon SageMaker precisar estar em uma conta da AWS diferente, você pode aproveitar o Amazon API Gateway para permitir o acesso externo ao endpoint de inferência do Amazon SageMaker a partir de um cliente fora de sua conta da AWS.
Sua task do Amazon ECS deve ter o acesso necessário para invocar os endpoints do Amazon SageMaker para inferência. Você também pode restringir ainda mais as políticas do AWS Identity and Access Management (AWS IAM) no IAM role das tasks do Amazon ECS a ARNs (Amazon resource names) específicos para seus endpoints do Amazon SageMaker.
Ao vincular a política do AWS IAM a um ARN específico, você pode garantir que a política permita o acesso apenas quando a solicitação for feita para esse endpoint específico.
Isso o ajuda a seguir o princípio do privilégio mínimo para segurança. Sua task do AWS Fargate também precisa de acesso para ler os endpoints do Amazon SageMaker do AWS Systems Manager Parameter Store.
O uso do Parameter Store permite que os endereços dos seus endpoints do Amazon SageMaker sejam desacoplados do seu aplicativo.
A solução também inclui uma configuração de implantação contínua.
O AWS CodePipeline pode detectar quaisquer alterações em seu aplicativo, acionando o AWS CodeBuild para criar uma nova imagem de contêiner, que é enviada para o Amazon Elastic Container Registry (Amazon ECR).
O pipeline modifica a definição de tarefa do Amazon ECS com a nova versão da imagem de contêiner e atualiza esse serviço para substituir as tarefas pela nova versão do seu aplicativo.
Passo a passo
Você pode seguir estas etapas para configurar um aplicativo de servir GenAI com o Amazon SageMaker Jumpstart e o AWS Fargate:
- Configurar os pré-requisitos
- Clonar e configurar o aplicativo AWS Cloud Deployment Kit (CDK)
- Implantar o ambiente Amazon SageMaker
- Implantar o ambiente CI/CD
- Explorar o modelo de geração de imagens AI
- Explorar o modelo de geração de texto AI
Pré-requisitos:
- Interface de linha de comando da AWS (AWS CLI) versão 2
- AWS CDK Toolkit (versão 2.93.0 ou superior)
- Trabalhar com o AWS CDK em Python
- Python ≥ 3.6+
- Git
- Docker Command Line
Clonar e configurar o repositório do GitHub para o aplicativo GenAI
Configure as credenciais da AWS no host que você está usando para sua configuração. Para começar, faça um fork do repositório do Amazon ECS Blueprints no GitHub e faça um clone para seu repositório git local.
Configure as variáveis de ambiente da conta AWS e da região AWS para corresponder ao seu ambiente. [Este post utiliza a Região Oregon (us-west-2) como exemplo.]
Você irá gerar um arquivo .env a ser utilizado pelo modelo AWS CDK e vai buscar as variáveis no arquivo de ambiente durante a implantação do serviço backend.
Você pode criar um ambiente virtual do Python para isolar as instalações do Python e os pacotes pip associados do seu ambiente local. Depois disso, você irá instalar os pacotes necessários:
Se você nunca usou o CDK em seu ambiente AWS, que é uma combinação de uma conta AWS e uma região AWS, você deve executar o comando de inicialização:
Liste as pilhas na aplicação. Neste Blueprint do Amazon ECS, você verá quatro pilhas.
Deploy do ambiente do Amazon SageMaker
Após finalizar a configuração acima, você está pronto para criar os componentes da solução.
Primeiro, você criará o ambiente do Amazon SageMaker e o ponto de extremidade de inferência do SageMaker com o stack AWS CDK GenAITxt2ImgSageMakerStack.
Quando o deploy da pilha estiver concluído, faça a implementação do ambiente Amazon SageMaker para o modelo de geração texto-para-texto (text to text) com a pilha GenaitXT2TxtSageMakerStack do AWS CDK.
- O exemplo de texto para imagem usa o modelo de fundação Stable Diffusion v2.1 da Stability AI.
- O exemplo de texto para texto usa o modelo de fundação Hugging Face FLAN-T5-XL.
Ambos os modelos de fundação usam instâncias ml.g4dn.2xlarge no Amazon SageMaker para gerar endpoints de inferência.
Isso é a configuração padrão no .env. Você pode modificar os valores no .env para para permitir o uso de FMs e tipos de instância de inferência alternativos.
Deploy do ambiente CI/CD
Em seguida, você estabelecerá o ambiente CI/CD para atualizações fáceis do seu aplicativo em execução.
A pilha CI/CD usa o AWS CodePipeline como o pipeline de lançamento. Ele puxa o código-fonte atualizado de seu repositório do GitHub e usa o AWS CodeBuild para criar a nova versão da imagem do contêiner para sua aplicação.
A nova versão da imagem do contêiner é usada para atualizar o aplicativo em execução no Amazon ECS.
Altere o diretório de trabalho para cicd_service para criar o pipeline CI/CD.
Crie um token do GitHub para acessar o repositório bifurcado. Você deve cria-lo na mesma região onde os serviços do Gen AI estão implantados.
Como feito anteriormente, configure as variáveis de ambiente da conta AWS e da região AWS para corresponder ao seu ambiente.
No arquivo .env, você atualizará algumas variáveis de ambiente.
– Propriedades essenciais (Essencial props)
repository_owner: Proprietário do repositório Github (use seu username do GitHub aqui)
– Propriedades de CICD (CICD Service props)
- ecr_repository_name: generative-ai-service
- container_name: web-container
- task_cpu: 2048
- task_memory: 4096
- service_name: gen-ai-web-service-new
– Propriedades do repositório (Repository props)
caminho_de_pasta: ./cdk/examples/generative_ai_service/web-app/.
O arquivo env resultante deve ficar assim:
Como nossa aplicação web requer as permissões “ssm:GetParameter” e “sagemaker:InvokeEndpoint” para inferir os modelos fundamentais usando o Amazon SageMaker Endpoint, também devemos adicionar o seguinte código ao arquivo lib/cicd_service_stack.py.
Adicione as importações desses módulos Python:
Além disso, adicione o bloco de código abaixo após a linha que define o serviço Amazon ECS em cicd_service_stack.py. Este código adiciona as permissões necessárias ao papel IAM da tarefa do Amazon ECS.
Na última etapa, você fará o deploy da infraestrutura principal, que inclui a Amazon Virtual Private Cloud (Amazon VPC), políticas e funções necessárias do AWS IAM, o cluster do Amazon ECS e o serviço GenAI ECS, que hospedará sua aplicação de Streamlit.
Explore o modelo de base de geração de imagens
Você pode usar a URL do Application Load Balancer obtido da saída de output do AWS CDK para acessar o serviço. Selecione o modelo de geração de imagem (image generation model) na barra lateral à esquerda. Quando você insere uma descrição de imagem, ela gera uma imagem com base no texto escrito.
Explore o modelo de base de geração de texto
Em seguida, selecione o modelo de geração de texto (text generation model) na barra lateral. Você pode inserir o contexto, fornecer uma solicitação relevante e pressionar o botão Generate Response. Isso gera uma resposta de texto para sua solicitação na seção input query.
Limpeza
Você pode excluir o conjunto de soluções tanto pelo console do AWS CloudFormation quanto usar o comando destroy do AWS CDK nos diretórios onde você implantou suas pilhas do CDK. Esta etapa é importante para parar de incorrer em custos após explorar os modelos de base.
Em produção, você pode deixar seus endpoints de inferência ativos para inferência contínua. Você também pode agendar periodicamente a exclusão e recriação desses endpoints, com base em suas necessidades de inferência.
Conclusão
Neste artigo, mostramos como você pode usar o Amazon ECS com o AWS Fargate para implantar aplicativos GenAI.
Com o AWS Fargate, você pode implantar seus aplicativos sem o overhead de gerenciar seus recursos computacionais.
Você aprendeu como os aplicativos Streamlit podem ser configurados para acessar os modelos de fundação de inteligência artificial generativa no Amazon SageMaker Jumpstart.
Os FMs fornecem um ponto de partida para ajudar a construir suas próprias soluções de IA generativa.
Com contêineres sem servidor, sua equipe de ciência de dados pode se concentrar mais em soluções eficazes para seus casos de uso e menos na infraestrutura subjacente.
Seus usuários de negócios podem colaborar com as equipes de ciência de dados usando a interface web amigável dos aplicativos Streamlit e fornecer feedback.
Isso deverá ajudar sua organização a ser mais ágil na adoção de GenAI para seus casos de uso.
Revolucione seus negócios com a GenAI!
Quer saber mais sobre o que a IA generativa pode fazer pela sua empresa?
A DNX Brasil é certificada e reconhecida pela Amazon Web Services. Nosso time é especializado em projetos de GenAI e está pronto para atender suas demandas!
Clique aqui e entre em contato com os experts da DNX Brasil.
Este artigo foi traduzido e adaptado a partir do blog da AWS.