Blog

  • SageMaker Studio agora suporta indexação SOCI para inicializações de container mais rápidas

    Aceleração no desenvolvimento de machine learning

    A AWS anunciou o suporte para indexação SOCI (Iniciativa Aberta de Containers Acessíveis) no Amazon SageMaker Studio. Essa novidade reduz o tempo de inicialização de containers em 30-50% quando cientistas de dados utilizam imagens personalizadas. Trata-se de uma solução importante para otimizar workflows que demandam rapidez e eficiência.

    O desafio dos containers personalizados

    O SageMaker Studio é um ambiente integrado baseado em navegador, projetado para o desenvolvimento completo de soluções de machine learning. A plataforma oferece imagens de container pré-construídas para frameworks populares como TensorFlow, PyTorch e Scikit-learn, permitindo que ambientes sejam configurados rapidamente.

    No entanto, quando cientistas de dados precisam adaptar seus ambientes para casos de uso específicos — adicionando bibliotecas customizadas, dependências particulares ou configurações especiais — eles constroem e registram imagens de container personalizadas. Essas imagens garantem consistência entre diferentes projetos e experimentos.

    À medida que os workloads de machine learning se tornam mais complexos, essas imagens customizadas crescem em tamanho, resultando em tempos de inicialização que podem chegar a vários minutos. Essa demora cria um gargalo significativo em ambientes de desenvolvimento iterativo, onde experimentação rápida e prototipagem acelerada são essenciais para a produtividade.

    Como o SOCI indexing resolve o problema

    A indexação SOCI aborda esse desafio através do carregamento lazy (sob demanda) de imagens de container. Em vez de baixar completamente a imagem antes de iniciar a aplicação, apenas os componentes necessários são baixados imediatamente. Arquivos adicionais são carregados conforme necessário durante a execução.

    Essa abordagem transforma a experiência do usuário: em vez de esperar vários minutos pelo download completo da imagem customizada, os cientistas de dados podem começar a trabalhar produtivamente em segundos, enquanto o ambiente conclui a inicialização em background.

    Implementação prática

    Para utilizar a indexação SOCI, o fluxo de trabalho envolve três etapas principais:

    • Criar um índice SOCI para a imagem de container personalizada usando ferramentas como Finch CLI, nerdctl ou Docker com SOCI CLI
    • Enviar a imagem indexada para o Amazon Elastic Container Registry (ECR)
    • Referenciar o URI do índice de imagem ao criar recursos do SageMaker Image

    Para aprender mais sobre a implementação de indexação SOCI em imagens customizadas do SageMaker Studio, consulte a documentação sobre como trazer sua própria imagem do SageMaker no guia do desenvolvedor.

    Disponibilidade

    A funcionalidade de indexação SOCI está disponível em todas as regiões da AWS onde o Amazon SageMaker Studio opera, oferecendo benefícios de performance em escala global para equipes de data science.

    Fonte

    Amazon SageMaker Studio now supports SOCI indexing for faster container startup times (https://aws.amazon.com/about-aws/whats-new/2025/12/amazon-sagemaker-nbi-soci/)

  • Indexação SOCI para Amazon SageMaker Studio: Inicialização mais rápida de containers para workloads de IA/ML

    Entendendo o novo recurso SOCI indexing

    A AWS anunciou a integração de indexação SOCI (Seekable Open Container Initiative) no SageMaker Studio. Essa novidade possibilita um carregamento seletivo de imagens de container, onde apenas as partes necessárias são baixadas inicialmente, em vez de todo o arquivo de container.

    O SageMaker Studio funciona como um Ambiente Integrado de Desenvolvimento (IDE) web para desenvolvimento completo de aprendizado de máquina, permitindo que usuários construam, treinem, implantem e gerenciem tanto modelos de ML tradicionais quanto modelos de fundação para todo o fluxo de trabalho. Cada aplicação executada no SageMaker Studio roda dentro de um container que empacota as bibliotecas, frameworks e dependências necessárias, garantindo execução consistente entre diferentes cargas de trabalho e sessões de usuário.

    Essa arquitetura containerizada permite ao SageMaker Studio oferecer suporte a uma ampla gama de frameworks de ML como TensorFlow, PyTorch, scikit-learn e outros, mantendo isolamento forte entre ambientes.

    O desafio da customização em escala

    Embora a AWS forneça containers para os ambientes de ML mais comuns, cientistas de dados frequentemente precisam personalizar esses ambientes para casos de uso específicos. Isso pode incluir adicionar ou remover pacotes, configurar variáveis de ambiente customizadas ou instalar dependências especializadas.

    Para atender essa necessidade, o SageMaker Studio oferece suporte por meio de Configurações de Ciclo de Vida (LCCs), que permitem executar scripts bash durante a inicialização de um espaço IDE. No entanto, customizar repetidamente ambientes dessa forma pode se tornar demorado e difícil de manter em escala.

    Como alternativa, a plataforma suporta construção e registro de imagens de container personalizadas com bibliotecas e frameworks pré-configurados. Essas imagens reutilizáveis reduzem o atrito na configuração e melhoram a reprodutibilidade para consistência entre projetos, permitindo que cientistas de dados se concentrem no desenvolvimento de modelos em vez de gerenciamento de ambiente.

    O problema da inicialização lenta

    Conforme as cargas de trabalho de ML se tornam mais complexas, as imagens de container que alimentam esses ambientes crescem em tamanho, levando a tempos de inicialização mais longos. Isso pode atrasar a produtividade e interromper fluxos de trabalho de desenvolvimento.

    Cientistas de dados, engenheiros de ML e desenvolvedores enfrentam tempos de espera mais longos para seus ambientes iniciarem, particularmente ao alternar entre diferentes frameworks ou ao usar imagens com extensas bibliotecas e dependências pré-instaladas. Essa latência de inicialização se torna um gargalo significativo no desenvolvimento iterativo de ML, onde experimentação rápida e prototipagem ágil são essenciais.

    Como SOCI resolve o problema

    Em vez de baixar a imagem de container inteira antecipadamente, SOCI cria um índice que permite ao sistema buscar apenas os arquivos e camadas específicas necessários para iniciar a aplicação, com componentes adicionais carregados sob demanda conforme necessário. Isso reduz significativamente os tempos de inicialização de container de alguns minutos para segundos, permitindo que ambientes SageMaker Studio sejam iniciados muito mais rapidamente e os usuários comecem a trabalhar em projetos de ML logo em seguida, melhorando a produtividade de desenvolvedores e reduzindo o tempo para obter insights de experimentos de ML.

    Pré-requisitos

    Para usar indexação SOCI com SageMaker Studio, é necessário:

    Visão geral do recurso SOCI indexing

    O SOCI (Seekable Open Container Initiative), originalmente disponibilizado como código aberto pela AWS, aborda atrasos na inicialização de containers no SageMaker Studio por meio de carregamento seletivo de imagens. Essa tecnologia cria um índice especializado que mapeia a estrutura interna de imagens de container para acesso granular a arquivos individuais sem baixar todo o arquivo de container primeiro.

    Imagens de container tradicionais são armazenadas como listas ordenadas de camadas em arquivos tar compactados com gzip, que tipicamente exigem download completo antes de acessar qualquer conteúdo. SOCI supera essa limitação gerando um índice separado armazenado como um Artefato OCI que se vincula à imagem original de container por meio de Tipos de Referência OCI. Esse design preserva todas as imagens originais de container, mantém digests de imagem consistentes e garante validade de assinatura — fatores críticos para ambientes de IA/ML com requisitos rigorosos de segurança.

    Para usuários do SageMaker Studio, a implementação de indexação SOCI por meio de integração com Finch container runtime resulta em redução de 35-70% nos tempos de inicialização de container em todos os tipos de instância usando Trazer Sua Própria Imagem (BYOI). Essa implementação vai além das estratégias de otimização atuais limitadas a combinações específicas de imagens de primeiro partido e tipos de instância, fornecendo tempos de inicialização de aplicação mais rápidos em ambientes SageMaker AI Studio e SageMaker Unified Studio.

    Criando um índice SOCI

    Para criar e gerenciar índices SOCI, é possível usar várias ferramentas de gerenciamento de container, cada uma oferecendo vantagens diferentes dependendo do seu ambiente de desenvolvimento e preferências:

    • Finch CLI é uma ferramenta de linha de comando compatível com Docker desenvolvida pela AWS que fornece suporte nativo para construção e envio de índices SOCI. Oferece uma interface familiar semelhante ao Docker enquanto inclui funcionalidade SOCI integrada, tornando direto criar imagens indexadas sem ferramental adicional.
    • nerdctl funciona como uma CLI alternativa de container para containerd, o container runtime padrão da indústria. Fornece comandos compatíveis com Docker enquanto oferece integração direta com funcionalidades de containerd, incluindo suporte SOCI para capacidades de carregamento lazy.
    • Docker + SOCI CLI combina o ferramental Docker amplamente utilizado com a interface de linha de comando dedicada a SOCI. Essa abordagem permite aproveitar fluxos de trabalho Docker existentes enquanto adiciona capacidades de indexação SOCI por meio de uma ferramenta CLI separada, oferecendo flexibilidade para equipes já investidas em processos de desenvolvimento baseados em Docker.

    Fluxo de trabalho padrão versus otimizado com SOCI

    No fluxo de trabalho padrão do SageMaker Studio, lançar um ambiente de aprendizado de máquina requer baixar a imagem de container completa antes que qualquer aplicação possa iniciar. Quando um usuário inicia uma nova sessão do SageMaker Studio, o sistema deve extrair a imagem inteira contendo frameworks como TensorFlow, PyTorch, scikit-learn, Jupyter e dependências associadas do registro de container. Esse processo é sequencial e demorado — o container runtime baixa cada camada compactada, extrai o sistema de arquivos completo para armazenamento local e apenas então a aplicação pode começar sua inicialização. Para imagens típicas de ML variando de 2-5 GB, isso resulta em tempos de inicialização de 3-5 minutos, criando atrito significativo em fluxos de trabalho de desenvolvimento iterativo onde cientistas de dados frequentemente alternam entre diferentes ambientes ou reiniciam sessões.

    O fluxo de trabalho aprimorado com SOCI transforma a inicialização de container permitindo recuperação inteligente de arquivos sob demanda. Em vez de baixar imagens inteiras, SOCI cria um índice pesquisável que mapeia a localização precisa de cada arquivo dentro das camadas de container compactadas. Ao lançar uma aplicação SageMaker Studio, o sistema baixa apenas o índice SOCI (tipicamente 10-20 MB) e o conjunto mínimo de arquivos necessários para inicialização da aplicação — geralmente 5-10% do tamanho total da imagem. O container começa executando imediatamente enquanto um processo de background continua baixando arquivos restantes conforme a aplicação os solicita. Essa abordagem de carregamento lazy reduz tempos iniciais de inicialização de alguns minutos para segundos, permitindo que usuários comecem trabalho produtivo quase imediatamente enquanto o ambiente completa inicialização transparentemente em segundo plano.

    Conversão de imagem para SOCI

    É possível converter sua imagem existente em uma imagem SOCI e enviá-la para seu ECR privado usando os seguintes comandos:

    #/bin/bash
    # Download and install soci-snapshotter, containerd, and nerdctl
    sudo yum install soci-snapshotter
    sudo yum install containerd jq
    sudo systemctl start soci-snapshotter
    sudo systemctl restart containerd
    sudo yum install nerdctl
    
    # Set your registry variables
    REGISTRY="123456789012.dkr.ecr.us-west-2.amazonaws.com"
    REPOSITORY_NAME="my-sagemaker-image"
    
    # Authenticate for image pull and push
    AWS_REGION=us-west-2
    REGISTRY_USER=AWS
    REGISTRY_PASSWORD=$(/usr/local/bin/aws ecr get-login-password --region $AWS_REGION)
    echo $REGISTRY_PASSWORD | sudo nerdctl login -u $REGISTRY_USER --password-stdin $REGISTRY
    
    # Pull the original image
    sudo nerdctl pull $REGISTRY/$REPOSITORY_NAME\:original-image
    
    # Create SOCI index using the convert subcommand
    sudo nerdctl image convert --soci $REGISTRY/$REPOSITORY_NAME\:original-image $REGISTRY/$REPOSITORY_NAME\:soci-image
    
    # Push the SOCI v2 indexed image
    sudo nerdctl push --platform linux/amd64 $REGISTRY/$REPOSITORY_NAME\:soci-image

    Esse processo cria dois artefatos para a imagem de container original em seu repositório ECR: o índice SOCI (metadata que permite carregamento lazy) e o manifesto de índice de imagem (manifesto compatível com OCI que os vincula).

    Para usar imagens indexadas com SOCI no SageMaker Studio, é necessário fazer referência à URI de índice de imagem em vez da URI original de imagem de container ao criar recursos SageMaker Image e SageMaker Image Version. A URI de índice de imagem corresponde à tag que você especificou durante o processo de conversão SOCI (por exemplo, soci-image no exemplo anterior).

    #/bin/bash
    # Use the SOCI v2 image index URI
    IMAGE_INDEX_URI="123456789012.dkr.ecr.us-west-2.amazonaws.com/my-sagemaker-image:soci-image"
    
    # Create SageMaker Image
    aws sagemaker create-image \
      --image-name "my-sagemaker-image" \
      --role-arn "arn:aws:iam::123456789012:role/SageMakerExecutionRole"
    
    # Create SageMaker Image Version with SOCI index
    aws sagemaker create-image-version \
      --image-name "my-sagemaker-image" \
      --base-image "$IMAGE_INDEX_URI"
    
    # Create App Image Config for JupyterLab
    aws sagemaker create-app-image-config \
      --app-image-config-name "my-sagemaker-image-config" \
      --jupyter-lab-app-image-config '{
        "FileSystemConfig": {
          "MountPath": "/home/sagemaker-user",
          "DefaultUid": 1000,
          "DefaultGid": 100
        }
      }'
    
    #Update domain to include the custom image (required step)
    aws sagemaker update-domain \
      --domain-id "d-xxxxxxxxxxxx" \
      --default-user-settings '{
        "JupyterLabAppSettings": {
          "CustomImages": [{
            "ImageName": "my-sagemaker-image",
            "AppImageConfigName": "my-sagemaker-image-config"
          }]
        }
      }'

    A URI de índice de imagem contém referências tanto à imagem de container quanto ao seu índice SOCI associado através do manifesto Image Index compatível com OCI. Quando SageMaker Studio inicia aplicações usando essa URI, detecta automaticamente o índice SOCI e habilita capacidades de carregamento lazy. A indexação SOCI é suportada para todos os ambientes de ML (JupyterLab, CodeEditor, etc.) tanto para SageMaker Unified Studio quanto para SageMaker AI. Para informações adicionais sobre configuração de sua imagem personalizada, consulte a documentação SageMaker Bring Your Own Image.

    Impacto mensurável de SOCI no SageMaker Studio

    O objetivo principal dessa novidade no SageMaker Studio é simplificar a experiência do usuário final reduzindo tempos de inicialização para aplicações SageMaker Studio lançadas com imagens personalizadas. Para medir a efetividade do carregamento lazy de imagens de container personalizadas usando SOCI, foi realizada análise empírica comparando durações de inicialização de determinada imagem personalizada com e sem SOCI. Testes foram conduzidos para variedade de imagens personalizadas representando diversos conjuntos de dependências, arquivos e dados, avaliando como a efetividade pode variar para usuários finais com diferentes necessidades de imagem personalizada.

    Para quantificar empiricamente durações de inicialização para launches de aplicação em imagem personalizada, foi usado programaticamente lançamento de JupyterLab e CodeEditor Apps com a API CreateApp do SageMaker, especificando o sageMakerImageArn candidato e sageMakerImageVersionAlias com um instanceType apropriado, registrando o eventTime para análise. Posteriormente, a API ListApps do SageMaker foi consultada a cada segundo para monitorar inicialização da aplicação, registrando o eventTime da primeira resposta onde Status foi reportado como InService. O delta entre esses dois tempos para determinada aplicação é a duração de inicialização.

    Para essa análise, foram criados dois conjuntos de repositórios ECR privados, cada um com as mesmas imagens de container SageMaker personalizado, mas apenas um conjunto implementando índices SOCI. Ao comparar imagens equivalentes em ECR, era possível ver artefatos SOCI presentes apenas em um repositório. As aplicações foram implantadas em um único domínio SageMaker AI. Todas as imagens personalizadas foram anexadas a esse domínio para que usuários SageMaker Studio pudessem escolher essas imagens personalizadas ao invocar inicialização de um espaço JupyterLab.

    Para executar testes, para cada imagem personalizada, foi invocada série de dez chamadas API CreateApp com especificações detalhadas de domínio, espaço, tipo de aplicação e especificações de recurso.

    Os testes revelaram aceleração de inicialização com índice SOCI habilitado para distribuição de imagens Amazon SageMaker. Os dados mostram que executar imagens personalizadas SageMaker Studio com índices SOCI permite usuários lançar suas aplicações significativamente mais rápido comparado sem SOCI. Especificamente, foram observados tempos de inicialização de container aproximadamente 35-70% mais rápidos, com variações dependendo do tipo de instância e aplicação específica (JupyterLab versus CodeEditor).

    Conclusão

    A integração de indexação SOCI no SageMaker Studio representa um avanço importante na experiência de desenvolvedor para profissionais de aprendizado de máquina. Ao otimizar tempos de inicialização de container por meio de carregamento lazy — reduzindo tempos de espera de vários minutos para perto de um minuto — a solução contribui para que cientistas de dados, engenheiros de ML e desenvolvedores gastem menos tempo esperando e mais tempo inovando. Essa melhoria aborda um dos pontos de fricção mais comuns em desenvolvimento de ML iterativo, onde alternâncias frequentes de ambiente e reinicializações impactam produtividade. Com SOCI, equipes podem manter sua velocidade de desenvolvimento, experimentar diferentes frameworks e configurações, e acelerar seu caminho de experimentação para implantação em produção.

    Fonte

    Introducing SOCI indexing for Amazon SageMaker Studio: Faster container startup times for AI/ML workloads (https://aws.amazon.com/blogs/machine-learning/introducing-soci-indexing-for-amazon-sagemaker-studio-faster-container-startup-times-for-ai-ml-workloads/)

  • AWS Private CA agora suporta OCSP nas regiões da China e AWS GovCloud (US)

    Expansão do suporte a OCSP em novas regiões

    A AWS anunciou a disponibilidade do protocolo OCSP (Protocolo de Status de Certificado Online) para o AWS Private Certificate Authority (AWS Private CA) nas regiões da China e AWS GovCloud (US). Trata-se de uma expansão importante que amplia as capacidades de validação de certificados em regiões geograficamente estratégicas para empresas que operam nessas áreas.

    O que é AWS Private CA

    O AWS Private CA é um serviço gerenciado de autoridade certificadora que simplifica a criação e gestão de certificados privados para organizações. Diferentemente de manter uma infraestrutura própria de CA, o serviço elimina a complexidade operacional, permitindo que as equipes foquem no negócio em vez de gerenciar a infraestrutura de certificados.

    Entendendo OCSP e suas vantagens

    O OCSP é um protocolo que permite validação de certificados em tempo real. Em vez de as aplicações baixarem listas de revogação de certificados (CRL), que podem ter centenas de quilobytes, o OCSP possibilita consultas sob demanda sobre o status de um certificado específico. Cada consulta requer apenas alguns centenas de bytes, tornando o processo muito mais eficiente em termos de consumo de banda.

    Com o suporte a OCSP agora disponível, clientes nessas regiões podem implementar validação de certificados mais eficiente com uso mínimo de largura de banda, comparado ao download de listas CRL tradicionais que podem ser significativamente maiores.

    Casos de uso práticos

    O OCSP é particularmente útil para:

    • Validação de comunicação entre microsserviços internos
    • Implementação de arquiteturas de segurança zero trust
    • Autenticação de dispositivos IoT que precisam verificar status de certificados em tempo real

    Gestão totalmente automatizada

    Uma característica diferencial é que a AWS gerencia completamente a infraestrutura do respondente OCSP, garantindo alta disponibilidade sem que o cliente precise implantar ou manter servidores OCSP próprios. Isso reduz ainda mais a complexidade operacional.

    Regiões disponíveis

    O OCSP está agora disponível nas seguintes regiões:

    • China (Beijing)
    • China (Ningxia)
    • AWS GovCloud (US-East)
    • AWS GovCloud (US-West)

    Como habilitar OCSP

    Para ativar OCSP nas autoridades certificadoras existentes, é possível usar o console do AWS Private CA, a interface de linha de comando (AWS CLI) ou a API.

    Próximos passos

    Organizações que operam nessas regiões e necessitam de validação de certificados mais eficiente podem explorar essa funcionalidade. Para informações detalhadas sobre revogação de certificados, consulte a documentação de revogação de certificados no guia do usuário do AWS Private CA. Detalhes de precificação estão disponíveis na página de preços do AWS Private CA.

    Fonte

    AWS Private CA OCSP now available in China and AWS GovCloud (US) Regions (https://aws.amazon.com/about-aws/whats-new/2025/12/aws-private-ca-ocsp-china-govcloud-us-regions)

  • Comunicação bidirecional em tempo real para agentes de IA: a nova capacidade do Amazon Bedrock AgentCore

    Conversas naturais em IA: o desafio da engenharia em tempo real

    Construir conversas de voz naturais com agentes de IA exige infraestrutura complexa e uma quantidade considerável de código das equipes de engenharia. As interações baseadas em texto entre usuários e agentes seguem um padrão tradicional de turnos: o usuário envia uma solicitação completa, aguarda o agente processar a informação e recebe uma resposta integral antes de prosseguir. Este modelo funciona bem para muitos cenários, mas não replica a fluidez das conversas humanas.

    O streaming bidirecional muda essa dinâmica ao estabelecer uma conexão persistente que transmite dados simultânea e continuamente em ambas as direções. A Plataforma AgentCore Runtime do Amazon Bedrock agora oferece suporte nativo para esse tipo de comunicação em tempo real entre usuários e agentes de IA, permitindo que os agentes escutem a entrada do usuário enquanto geram respostas simultaneamente. Isso cria um fluxo conversacional muito mais natural, especialmente adequado para interações multimodais, como conversas com visão e voz.

    Capacidades habilitadas pelo streaming bidirecional

    Com o streaming bidirecional, os agentes de IA ganham habilidades que se aproximam da conversação humana. Um agente de voz bidirecional consegue conduzir diálogos falados com a fluidez natural de uma conversa entre pessoas, permitindo que os usuários interrompam, esclareçam dúvidas ou mudem de assunto sem pausas incômodas.

    Esses agentes processam entrada e saída de áudio em streaming simultaneamente mantendo o estado da conversa. A capacidade de começar a responder enquanto ainda recebe entrada do usuário, lidar com interrupções no meio da conversa e ajustar respostas com base em feedback em tempo real representa um avanço significativo em relação aos sistemas baseados em turnos.

    Implementar essa infraestrutura do zero exigiria gerenciar conexões persistentes de baixa latência, lidar com múltiplos fluxos de áudio concorrentes, preservar contexto entre trocas de mensagens e escalar várias conversas simultaneamente. Estimativas indicam que desenvolver essas capacidades exigir meses de esforço de engenharia e expertise especializada em sistemas em tempo real.

    O papel do AgentCore Runtime

    A Plataforma AgentCore Runtime do Amazon Bedrock resolve esses desafios ao oferecer um ambiente de hospedagem seguro, sem servidores (serverless) e propositalmente construído para implantar e executar agentes de IA. Developers não precisam mais construir e manter infraestrutura complexa de streaming por conta própria — a plataforma gerencia toda a complexidade subjacente das conexões, ordenação de mensagens e manutenção do estado conversacional.

    Fundamentos técnicos do streaming bidirecional

    O protocolo WebSocket

    O streaming bidirecional utiliza o protocolo WebSocket, que oferece comunicação full-duplex (bidireção completa) sobre uma única conexão TCP. Quando estabelecida, a conexão cria um canal persistente onde dados fluem continuamente em ambas as direções. Este protocolo possui amplo suporte em clientes diversos — navegadores, aplicações móveis e ambientes de servidor — tornando-o acessível para cenários variados de implementação.

    Uma vez que a conexão é estabelecida, o agente consegue receber a entrada do usuário como um fluxo enquanto simultaneamente envia fragmentos de resposta de volta. O AgentCore Runtime gerencia a infraestrutura subjacente que trata de conexão, ordenação de mensagens e manutenção do estado conversacional através da troca bidirecional, eliminando a necessidade de desenvolvedores construírem infraestrutura de streaming customizada ou gerenciarem as complexidades de fluxos de dados concorrentes.

    Conversa de voz versus interações de texto

    Conversas de voz diferem fundamentalmente de interações baseadas em texto em relação às expectativas de fluidez natural. Quando conversam com um agente de voz, os usuários esperam a mesma dinâmica de conversa que experimentam com humanos: a capacidade de interromper para se corrigir, interjeccionar esclarecimentos no meio de uma resposta, ou redirecionar a conversa sem pausas constrangedoras.

    O streaming bidirecional possibilita que agentes de voz processem áudio recebido enquanto geram respostas, detectem interrupções e ajustem comportamento em tempo real. O agente mantém contexto conversacional ao longo dessas interações, preservando o fio do diálogo mesmo conforme a conversa muda de direção. Essa capacidade transforma agentes de voz de sistemas baseados em turnos para um parceiro conversacional verdadeiramente responsivo.

    Além de conversas de voz

    O streaming bidirecional viabiliza diversos padrões de interação além de vozes. Sessões interativas de depuração permitem que desenvolvedores guiem agentes através de resolução de problemas em tempo real, fornecendo feedback conforme o agente explora soluções. Agentes colaborativos podem trabalhar ao lado de usuários em tarefas compartilhadas, recebendo entrada contínua enquanto o trabalho avança em vez de aguardar instruções completas. Agentes multimodais conseguem processar vídeo em streaming ou dados de sensores enquanto simultaneamente fornecedm análise e recomendações. Operações assíncronas de longa duração podem processar tarefas ao longo de minutos ou horas enquanto transmitem resultados incrementais aos clientes.

    Implementação de WebSocket

    Configuração básica

    Para criar uma implementação de WebSocket no AgentCore Runtime, alguns padrões devem ser seguidos. Primeiramente, seus contêineres devem implementar endpoints de WebSocket na porta 8080 no caminho /ws, alinhado com práticas padrão de servidores WebSocket. Esse endpoint de WebSocket habilitará um único contêiner de agente a servir tanto a API tradicional InvokeAgentRuntime quanto a nova API InvokeAgentRuntimeWithWebsocketStream. Além disso, clientes precisam fornecer um endpoint /ping para verificações de integridade.

    O streaming bidirecional usando WebSockets no AgentCore Runtime suporta aplicações que utilizem bibliotecas de linguagem de WebSocket. O cliente deve conectar ao endpoint de serviço com uma conexão de protocolo WebSocket:

    wss://bedrock-agentcore.<region>.amazonaws.com/runtimes/<agentRuntimeArn>/ws

    É necessário também utilizar um dos métodos de autenticação suportados (cabeçalhos SigV4, URL pré-assinada SigV4, ou OAuth 2.0) e garantir que a aplicação do agente implemente o contrato de serviço de WebSocket conforme especificado no contrato do protocolo HTTP.

    Implementação prática com Strands e Amazon Nova Sonic

    Modelos de implementação

    A AWS oferece múltiplas abordagens para implementar agentes de voz bidirecional. Uma implementação direta exige gerenciar manualmente conexões de WebSocket, fazer parsing de eventos de protocolo, lidar com fragmentos de áudio e orquestrar tarefas assíncronas — uma abordagem que oferece controle total mas demanda conhecimento especializado. Alternativamente, a implementação usando Strands abstrai essa complexidade, tratando internamente dessas etapas.

    O modelo Amazon Nova Sonic unifica compreensão e geração de fala em um único modelo, fornecendo IA conversacional similar à humana com baixa latência, precisão líder e excelente relação preço-desempenho. Sua arquitetura integrada oferece geração de fala expressiva e transcrição em tempo real em um único modelo, adaptando dinamicamente respostas com base na prosódia, ritmo e timbre da fala de entrada.

    Imagem original — fonte: AWS

    Exemplo de implementação com Strands

    Para desenvolver agentes de voz com a abordagem Strands, há um repositório com dois modelos de implementação: uma usando a implementação nativa de Python do Amazon Nova Sonic implantada diretamente no AgentCore Runtime, e outra usando uma implementação de framework de alto nível com o agente bidirecional Strands para conversas de áudio em tempo real simplificadas.

    O código a seguir exemplifica a simplificação oferecida pelo Strands:

    from strands.experimental.bidi.agent import BidiAgent
    from strands.experimental.bidi.models.nova_sonic import BidiNovaSonicModel
    from strands_tools import calculator
    
    @app.websocket("/ws")
    async def websocket_endpoint(websocket: WebSocket, model_name: str):
        # Define a Nova Sonic BidiModel
        model = BidiNovaSonicModel(
            region="us-east-1",
            model_id="amazon.nova-sonic-v1:0",
            provider_config={
                "audio": {
                    "input_sample_rate": 16000,
                    "output_sample_rate": 24000,
                    "voice": "matthew",
                }
            }
        )
    
        # Create a Strands Agent with tools and system prompt
        agent = BidiAgent(
            model=model,
            tools=[calculator],
            system_prompt="You are a helpful assistant with access to a calculator tool.",
        )
    
        # Start streaming conversation
        await agent.run(inputs=[receive_and_convert], outputs=[websocket.send_json])

    Essa implementação demonstra a simplicidade do Strands: instanciar um modelo, criar um agente com ferramentas e um prompt de sistema, e executá-lo com fluxos de entrada e saída. O framework trata a complexidade do protocolo internamente.

    Orquestração de ferramentas

    Na seção de declaração do agente, as ferramentas são passadas diretamente ao construtor:

    agent = BidiAgent(
        model=model,
        tools=[calculator, weather_api, database_query],
        system_prompt="You are a helpful assistant..."
    )

    O Strands orquestra automaticamente a chamada de funções, eliminando a necessidade de código manual para essa complexidade. Uma implementação nativa de WebSocket da mesma funcionalidade exigiria aproximadamente 150 linhas de código, enquanto a implementação Strands reduz isto para aproximadamente 20 linhas focadas na lógica de negócio.

    Developers conseguem focar em definir o comportamento do agente, integrar ferramentas e elaborar prompts de sistema em vez de gerenciar conexões de WebSocket, fazer parsing de eventos, lidar com fragmentos de áudio ou orquestrar tarefas assíncronas. Isso torna o streaming bidirecional acessível para desenvolvedores sem expertise especializada em sistemas em tempo real, mantendo acesso total às capacidades de conversa de áudio do Nova Sonic.

    Flexibilidade de implementação

    O recurso bidirecional do Strands atualmente é suportado apenas para o Python SDK. Para quem busca flexibilidade na implementação de seu agente de voz, a implementação nativa do Amazon Nova Sonic pode ser útil, especialmente importante para casos onde há múltiplos padrões diferentes de comunicação entre agente e modelo.

    Com a implementação do Amazon Nova Sonic há controle total sobre cada passo do processo. A abordagem de framework oferece melhor controle de dependências, pois isso é feito pelo SDK, e fornece consistência entre sistemas. A mesma estrutura de código do agente bidirecional Strands funciona com Nova Sonic, OpenAI Realtime API e Google Gemini Live — desenvolvedores simplesmente trocam a implementação do modelo mantendo o restante do código inalterado.

    Referências práticas

    Para explorar essas capacidades, há exemplos de código disponíveis. O repositório contém implementação bidirecional do Amazon Bedrock AgentCore, que demonstra comunicação bidirecional com o AgentCore. Estão disponíveis a implementação nativa de Python do Amazon Nova Sonic implantada diretamente no AgentCore Runtime, assim como a implementação de framework de alto nível usando o agente bidirecional Strands para conversas de áudio em tempo real simplificadas.

    Impacto para desenvolvimento de IA conversacional

    A capacidade de streaming bidirecional do AgentCore Runtime transforma como desenvolvedores conseguem criar agentes de IA conversacionais. Ao fornecer infraestrutura de comunicação em tempo real baseada em WebSocket, o AgentCore elimina meses de esforço de engenharia necessários para implementar sistemas de streaming do zero.

    O runtime do framework viabiliza implantação de múltiplos tipos de agentes de voz — desde implementações de protocolo nativo usando Amazon Nova Sonic até frameworks de alto nível como o agente bidirecional Strands — dentro do mesmo ambiente seguro e sem servidores. Isso democratiza o acesso a capacidades de conversação em tempo real para equipes com diferentes níveis de expertise em sistemas em tempo real.

    Fonte

    Bi-directional streaming for real-time agent interactions now available in Amazon Bedrock AgentCore Runtime (https://aws.amazon.com/blogs/machine-learning/bi-directional-streaming-for-real-time-agent-interactions-now-available-in-amazon-bedrock-agentcore-runtime/)

  • Agentes de IA em Escala: Integrando Strands, Bedrock AgentCore e NVIDIA NeMo

    Além dos Assistentes de Chat: A Era dos Agentes Autônomos

    A próxima fronteira da inteligência artificial não reside apenas em assistentes conversacionais mais sofisticados. O verdadeiro avanço está em agentes autônomos capazes de raciocinar, planejar e executar tarefas complexas em sistemas completos. No entanto, transformar protótipos em agentes prontos para produção que escalam de forma segura representa um desafio significativo para desenvolvedoras e desenvolvedores empresariais.

    Conforme os problemas corporativos se tornam mais complexos, surge a necessidade de arquiteturas sofisticadas onde múltiplos agentes especializados colaboram para realizar tarefas refinadas. Existe um abismo considerável entre desenvolver um agente em ambiente controlado e implantá-lo em escala, envolto em questões de otimização de desempenho, escalabilidade de recursos, implementação de segurança e monitoramento operacional.

    O Desafio de Levar Agentes do Desenvolvimento à Produção

    Abordagens convencionais frequentemente deixam equipes malabarando múltiplas ferramentas desconectadas e frameworks distintos. Essa fragmentação torna difícil manter consistência desde o desenvolvimento até a implantação, sem comprometer o desempenho.

    É neste contexto que emerge uma combinação poderosa: Strands Agents, Amazon Bedrock AgentCore e NVIDIA NeMo Agent Toolkit. Estas ferramentas trabalham em conjunto para permitir o design de sistemas sofisticados com múltiplos agentes, sua orquestração e implantação segura em produção, tudo isso com observabilidade integrada, avaliação de agentes, perfilagem e otimização de desempenho.

    Fundação para Agentes Prontos para Empresas

    O Framework Strands Agents

    O Strands Agents é um framework de código aberto que simplifica o desenvolvimento de agentes por meio de uma abordagem orientada por modelos. Desenvolvedoras e desenvolvedores criam agentes utilizando três componentes principais:

    • Modelos base (foundation models), como Amazon Nova, Claude da Anthropic e Llama da Meta
    • Ferramentas (mais de 20 integradas, além de ferramentas personalizadas usando decoradores Python)
    • Prompts que orientam o comportamento do agente

    O framework inclui integrações nativas com serviços da AWS como Amazon Bedrock e Amazon Simple Storage Service (Amazon S3), suporte a testes locais, fluxos de integração e entrega contínua (CI/CD), múltiplas opções de implantação e observabilidade via OpenTelemetry.

    Amazon Bedrock AgentCore: Plataforma de Agentes Gerenciada

    O Amazon Bedrock AgentCore funciona como plataforma agentic completa para construir, implantar e operar agentes eficazes em escala, com segurança de nível empresarial. Seus componentes modulares e totalmente gerenciados incluem:

    • Runtime: Execução segura e sem servidor de agentes
    • Memory: Retenção de contexto de curto e longo prazo
    • Gateway: Acesso seguro a ferramentas, transformando APIs e funções AWS Lambda em ferramentas compatíveis com agentes, e conectando a servidores Model Context Protocol (MCP) existentes
    • Identity: Gerenciamento seguro de identidade e controle de acesso
    • Code Interpreter: Execução segura de código em ambientes isolados
    • Browser: Interações web rápidas e seguras
    • Observability: Rastreamento e monitoramento abrangente do desempenho
    • Evaluations: Inspeção contínua da qualidade do agente
    • Policy: Mantém agentes dentro de limites definidos

    Estes serviços funcionam independentemente ou em conjunto, abstraindo a complexidade de construir e operar agentes sofisticados enquanto mantêm segurança e confiabilidade de nível empresarial.

    Avaliação, Perfilagem e Otimização com NeMo Agent Toolkit

    O NVIDIA NeMo Agent Toolkit é um framework de código aberto desenhado para ajudar desenvolvedoras e desenvolvedores a construir, perfilar e otimizar agentes de IA, independentemente do framework subjacente. Sua abordagem agnóstica funciona perfeitamente com Strands Agents, LangChain, LlamaIndex, CrewAI e frameworks customizados, permitindo interoperabilidade entre diferentes plataformas.

    Capacidades de Profiling e Avaliação

    O profiler fornecido pelo toolkit oferece análise completa do fluxo de trabalho do agente, rastreando uso de tokens, timing, latência específica do workflow, throughput e tempos de execução para agentes e ferramentas individuais. Isso permite identificar e atacar gargalos específicos.

    O harness de avaliação do toolkit inclui avaliadores específicos para Retrieval Augmented Generation (RAG), como precisão de resposta, relevância de contexto, fundamentação de resposta e trajetória do agente, além de suportar avaliadores customizados para casos especializados.

    Otimização Automática e Right-Sizing

    O otimizador automático de hiperparâmetros perfila e descobre sistematicamente configurações ideais para parâmetros como temperatura, top_p e max_tokens, enquanto maximiza acurácia e fundamentação, minimiza uso de tokens e latência. Esta abordagem identifica combinações ótimas que a sintonia manual poderia perder.

    A calculadora inteligente de dimensionamento de GPU alivia a adivinhação simulando cenários de latência e concorrência de agentes, predizendo os requisitos precisos de infraestrutura GPU necessários para implantação em produção.

    A integração de observabilidade do toolkit conecta-se com serviços populares de monitoramento incluindo Arize Phoenix, Weights & Biases Weave, Langfuse e sistemas compatíveis com OpenTelemetry, como Amazon Bedrock AgentCore Observability, criando um loop de feedback contínuo para otimização e manutenção permanentes.

    Exemplo Prático: Agente Baseado em Conhecimento

    Um exemplo ilustrativo envolve um agente capaz de recuperar e sintetizar informações de URLs para responder consultas do usuário. Construído com Strands Agents e NeMo Agent Toolkit integrado, a solução é containerizada para implantação rápida no Amazon Bedrock AgentCore Runtime, aproveitando serviços como Observability do AgentCore.

    Desenvolvedoras e desenvolvedores têm flexibilidade para integrar modelos totalmente gerenciados no Amazon Bedrock, modelos hospedados em Amazon SageMaker AI, modelos containerizados em Amazon Elastic Kubernetes Service (Amazon EKS) ou outros endpoints de API de modelo.

    Desenvolvimento e Avaliação do Agente

    O processo começa definindo o agente e seus workflows em Strands Agents, depois encapsulando-o com NeMo Agent Toolkit para configurar componentes como um modelo de linguagem grande (LLM) para inferência e ferramentas. Existe um exemplo de integração Strands Agents e NeMo Agent Toolkit disponível com guia de configuração detalhado.

    Após validar a lógica do agente executando um workflow individual via linha de comando, o próximo passo envolve estabelecer um servidor de API de longa duração capaz de lidar com requisições concorrentes, simulando o ambiente de produção onde o AgentCore executará o agente como serviço containerizado.

    Profiling e Monitoramento de Desempenho

    Usando um Llama 3.3 70B Instruct NIM auto-gerenciado em uma instância Amazon EC2 P4de.24xlarge com GPUs NVIDIA A100 Tensor Core (8x A100 80GB), o profiling revela insights profundos sobre o comportamento do agente. Os dados coletados incluem:

    • Latência, throughput e runtime do workflow em intervalos de confiança de 90%, 95% e 99%
    • Gráficos de Gantt do fluxo do agente e análise de stack aninhada para identificar exatamente onde estão os gargalos
    • Picos de concorrência e eficiência de tokens
    • Métricas de qualidade (acurácia, fundamentação, relevância)

    Em um cenário típico, a latência p90 fica em torno de 58,9 segundos, com a geração de resposta identificada como principal gargalo (~61,4 segundos de processamento LLM), enquanto overhead não-LLM permanece mínimo (requisições HTTP em 0,7–1,2 segundos).

    Otimização de Desempenho

    Após profiling, refina-se os parâmetros do agente para equilibrar qualidade, desempenho e custo. A sintonia manual de configurações LLM como temperatura e top_p é frequentemente um jogo de adivinhação. O NeMo Agent Toolkit transforma isso em ciência orientada por dados.

    Um sweep automático através do espaço de busca de parâmetros executa 20 testes com três repetições cada, usando métricas de avaliação ponderadas para descobrir automaticamente configurações ideais. O toolkit gera artefatos de desempenho e tabelas de resumo para identificação rápida da configuração ótima.

    Em um exemplo realístico, a otimização identificou temperatura ≈ 0,7, top_p ≈ 1,0 e max_tokens ≈ 6.144 como configuração ótima, resultando em melhoria de 35% em acurácia em relação à baseline, enquanto simultaneamente alcançava 20% de ganho em eficiência de tokens comparado à configuração de 8.192 max_tokens.

    Calibração de Infraestrutura GPU para Produção

    Após otimizar e finalizar o agente, o foco se desloca para avaliar infraestrutura de implantação. Para equipes que autogerenciam implantação de modelos em frotas de instâncias EC2 com GPU, prever com precisão quais recursos computacionais são necessários representa um dos maiores desafios ao levar agentes para produção.

    A calculadora de dimensionamento de GPU do NeMo Agent Toolkit aborda este desafio utilizando o perfil de desempenho real do agente para determinar o tamanho de cluster ideal para objetivos de nível de serviço (SLOs) específicos. Executar a calculadora em faixas de concorrência (por exemplo, 1–32 usuários simultâneos) em uma instância de referência produz análise de capacidade detalhada.

    Os dados demonstram que concorrência escala quase linearmente com latência e runtime fim-a-fim, com latência LLM e runtime de workflow apresentando ajustes de tendência próximos ao perfeito (R² ≈ 0,977/0,983). Cada requisição concorrente adicional introduz penalidade de latência previsível.

    Por exemplo, para suportar 25 usuários simultâneos com runtime de workflow alvo de 50 segundos, a ferramenta calcula que aproximadamente 30 GPUs são necessárias.

    Implantação em Produção no Amazon Bedrock AgentCore

    Após avaliar, perfilar e otimizar o agente, chega o momento da implantação em produção. Enquanto executar localmente é adequado para testes, implantação empresarial exige um runtime de agente que fornecça segurança, escalabilidade e gerenciamento robusto de memória sem overhead de gerenciar infraestrutura.

    O Amazon Bedrock AgentCore Runtime brilha precisamente aqui, oferecendo runtime de agente sem servidor de nível empresarial. Um guia passo-a-passo de implantação está disponível no repositório NeMo Agent Toolkit.

    Ao empacotar o agente otimizado em um container e implantá-lo no Bedrock AgentCore Runtime sem servidor, a equipe transforma o agente prototipado em aplicação resiliente para tarefas de longa duração e requisições de usuários concorrentes.

    Observabilidade em Produção

    Após implantação, visibilidade torna-se crítica. A integração cria experiência unificada de observabilidade, transformando execução opaca de caixa-preta em visibilidade profunda. Obtém-se traces exatos, spans e breakdowns de latência para cada interação em produção, integrado com Amazon Bedrock AgentCore Observability usando OpenTelemetry.

    Os serviços do Bedrock AgentCore estendem-se além de gerenciamento de runtime e observabilidade. Agentes implantados podem utilizar perfeitamente serviços adicionais como Amazon Bedrock AgentCore Identity para autenticação e autorização, Amazon Bedrock AgentCore Gateway para acesso a ferramentas, Amazon Bedrock AgentCore Memory para consciência de contexto, Amazon Bedrock AgentCore Code Interpreter para execução segura de código e Amazon Bedrock AgentCore Browser para interações web, criando agentes prontos para empresas.

    Síntese: Uma Solução Integrada de Ponta a Ponta

    Agentes de IA em produção exigem visibilidade de desempenho, otimização e infraestrutura confiável. Para o caso de uso ilustrado, esta integração entregou em todas as frentes: ganhos de 20% em eficiência de tokens, melhorias de 35% em acurácia para o exemplo prático e infraestrutura GPU ajustada ao desempenho para concorrência alvo.

    A combinação do Strands Agents para desenvolvimento e orquestração de agentes, NVIDIA NeMo Agent Toolkit para perfilagem profunda de agentes, otimização e calibração de infraestrutura GPU, e Amazon Bedrock AgentCore para infraestrutura agentic segura e escalável, fornece uma solução integrada fim-a-fim que permite que desenvolvedoras e desenvolvedores construam, avaliem, otimizem e implantem agentes em escala na AWS com resultados previsíveis.

    Para começar, consulte o exemplo de integração Strands Agents e NeMo Agent Toolkit e o guia de implantação de Strands Agents e NeMo Agent Toolkit no Amazon Bedrock AgentCore Runtime.

    Fonte

    Build and deploy scalable AI agents with NVIDIA NeMo, Amazon Bedrock AgentCore, and Strands Agents (https://aws.amazon.com/blogs/machine-learning/build-and-deploy-scalable-ai-agents-with-nvidia-nemo-amazon-bedrock-agentcore-and-strands-agents/)

  • Rastreamento e Gestão de Ativos no Desenvolvimento de IA com Amazon SageMaker AI

    O Desafio de Rastrear Ativos em Projetos de IA Generativa

    Desenvolver modelos de fundação personalizados exige coordenar múltiplos ativos ao longo de todo o ciclo de vida do projeto: conjuntos de dados, infraestrutura de computação, arquiteturas de modelos, frameworks, linhagem de dados e implementações em produção. Para cientistas de dados, o processo típico envolve criar e refinar datasets de treinamento, desenvolver avaliadores personalizados que meçam qualidade e segurança, além de iterar por diferentes configurações de ajuste fino (fine-tuning) para otimizar o desempenho.

    À medida que esses fluxos de trabalho escalam entre equipes e ambientes, surge um problema crítico: rastrear quais versões específicas de datasets, configurações de avaliadores e hiperparâmetros produziram cada modelo torna-se cada vez mais desafiador. Na prática, muitas equipes recorrem a documentação manual em notebooks ou planilhas, o que dificulta reproduzir experimentos bem-sucedidos ou compreender a origem dos modelos em produção.

    O cenário piora em ambientes corporativos onde múltiplas contas AWS são usadas para desenvolvimento, staging e produção. Conforme os modelos percorrem pipelines de implementação, manter visibilidade sobre dados de treinamento, critérios de avaliação e configurações exige coordenação significativa. Sem automação de rastreamento, as equipes perdem a capacidade de conectar modelos implementados às suas origens ou compartilhar ativos consistentemente entre experimentos.

    Rastreamento e Gestão Automática de Ativos com SageMaker AI

    A AWS introduziu recursos no Amazon SageMaker AI que permitem registrar e versionar modelos, datasets e avaliadores personalizados, capturando automaticamente relacionamentos e linhagem enquanto você executa ajuste fino, avaliação e implementação de modelos de IA generativa. Essa abordagem reduz a sobrecarga de rastreamento manual e oferece visibilidade completa sobre como os modelos foram criados, desde o modelo de fundação base até a implementação em produção.

    Versionamento de Datasets em Experimentos

    Ao refinar dados de treinamento para personalização de modelos, é comum criar múltiplas versões de datasets. O SageMaker AI permite registrar datasets e criar novas versões conforme os dados evoluem, com cada versão rastreada independentemente. Ao registrar um dataset no SageMaker AI, você fornece a localização no S3 e metadados descrevendo o dataset. Conforme você refina os dados — adicionando mais exemplos, melhorando qualidade ou adaptando para casos de uso específicos — pode criar novas versões do mesmo dataset.

    Gerenciamento de versões de datasets — fonte: Aws

    Cada versão mantém seus próprios metadados e localização no S3, permitindo rastrear a evolução dos dados de treinamento ao longo do tempo. Quando você utiliza um dataset para ajuste fino, o Amazon SageMaker AI vincula automaticamente a versão específica do dataset ao modelo resultante. Isso suporta comparação entre modelos treinados com diferentes versões de datasets e ajuda a entender quais refinamentos de dados levaram a melhor desempenho. Você também pode reutilizar a mesma versão de dataset em múltiplos experimentos para consistência ao testar diferentes hiperparâmetros ou técnicas de ajuste fino.

    Avaliadores Personalizados Reutilizáveis

    Avaliar modelos personalizados frequentemente exige critérios específicos de qualidade, segurança ou desempenho conforme o domínio. Um avaliador personalizado consiste em código de função Lambda que recebe dados de entrada e retorna resultados de avaliação, incluindo pontuações e status de validação. Você pode definir avaliadores para diversos propósitos: verificar qualidade de respostas, avaliar segurança e toxicidade, validar formato de saída ou medir acurácia específica da tarefa.

    Gerenciamento de avaliadores personalizados — fonte: Aws

    Você pode rastrear avaliadores personalizados usando funções AWS Lambda que implementam sua lógica de avaliação, versionando e reutilizando esses avaliadores entre modelos e datasets. Essa abordagem permite que equipes construam bibliotecas de avaliadores que podem ser compartilhados e evolucionar de forma controlada.

    Rastreamento Automático de Linhagem em Todo o Ciclo de Vida

    A capacidade de rastreamento de linhagem do SageMaker AI captura automaticamente relacionamentos entre ativos conforme você constrói e avalia modelos. Quando você cria um trabalho de ajuste fino, o Amazon SageMaker AI vincula o trabalho de treinamento aos datasets de entrada, modelos de fundação base e modelos de saída. Quando executa trabalhos de avaliação, conecta as avaliações aos modelos sendo avaliados e aos avaliadores utilizados. Esse rastreamento automático significa que você não precisa documentar manualmente quais ativos foram usados em cada experimento.

    Visualização da linhagem completa de um modelo — fonte: Aws

    Você pode visualizar a linhagem completa de um modelo, exibindo seu modelo de fundação base, datasets de treinamento com versões específicas, hiperparâmetros, resultados de avaliação e locais de implementação. Com a visualização de linhagem, pode rastrear qualquer modelo implementado até suas origens. Por exemplo, se precisar entender por que um modelo em produção se comporta de certa forma, pode ver exatamente quais dados de treinamento, configuração de ajuste fino e critérios de avaliação foram utilizados. Isso é particularmente valioso para governança, reprodutibilidade e debug.

    Você também pode utilizar informações de linhagem para reproduzir experimentos. Ao identificar a versão exata de dataset, versão do avaliador e configuração utilizada para um modelo bem-sucedido, pode recriar o processo de treinamento com a confiança de estar utilizando entradas idênticas.

    Integração com MLflow para Rastreamento de Experimentos

    As capacidades de personalização de modelos do Amazon SageMaker AI estão integradas por padrão com Aplicativos SageMaker AI MLflow, oferecendo vinculação automática entre trabalhos de treinamento de modelos e experimentos MLflow. Quando você executa trabalhos de personalização de modelos, todas as ações necessárias de MLflow são realizadas automaticamente — o Aplicativo padrão do SageMaker AI MLflow é utilizado, um experimento MLflow é selecionado para você e todas as métricas, parâmetros e artefatos são registrados.

    Integração com MLflow mostrando métricas de desempenho — fonte: Aws

    Na página de modelo do SageMaker AI Studio, você consegue visualizar métricas originadas do MLflow e ver métricas completas dentro do experimento MLflow associado. Com a integração do MLflow, é direto comparar múltiplos candidatos de modelos. Você pode usar MLflow para visualizar métricas de desempenho entre experimentos, identificar o modelo com melhor desempenho e depois utilizar a linhagem para entender quais datasets e avaliadores específicos produziram esse resultado. Isso ajuda a tomar decisões informadas sobre quais modelos promover para produção com base tanto em métricas quantitativas quanto na proveniência dos ativos.

    Começando com Rastreamento e Gestão de Ativos de IA Generativa

    Ao reunir esses diversos ativos de personalização de modelos e processos — versionamento de datasets, rastreamento de avaliadores, desempenho de modelos, implementação — você transforma ativos dispersos de modelos em um fluxo de trabalho rastreável, reproduzível e pronto para produção com linhagem automática de ponta a ponta.

    A capacidade está agora disponível em regiões AWS suportadas. Você pode acessar essa funcionalidade através do Amazon SageMaker AI Studio e do SDK Python do SageMaker. Para começar:

    • Abra o Amazon SageMaker AI Studio e navegue até a seção Modelos
    • Personalize os modelos base JumpStart para criar um modelo
    • Navegue até a seção Ativos para gerenciar datasets e avaliadores
    • Registre seu primeiro dataset fornecendo uma localização no S3 e metadados
    • Crie um avaliador personalizado usando uma função Lambda existente ou crie uma nova
    • Utilize datasets registrados em seus trabalhos de ajuste fino — a linhagem é capturada automaticamente
    • Visualize a linhagem do modelo para ver relacionamentos completos

    Para mais informações, visite a documentação do Amazon SageMaker AI.

    Fonte

    Tracking and managing assets used in AI development with Amazon SageMaker AI (https://aws.amazon.com/blogs/machine-learning/tracking-and-managing-assets-used-in-ai-development-with-amazon-sagemaker-ai/)

  • Migração de Regras de Automação do Security Hub CSPM para o Security Hub Novo

    Contexto: Uma Nova Geração do Security Hub

    A AWS Security Hub acaba de receber uma renovação significativa. A plataforma agora oferece capacidades expandidas para agregar, correlacionar e contextualizar alertas de segurança em múltiplas contas da Amazon Web Services (AWS). Enquanto isso, a versão anterior recebeu uma nova denominação: AWS Security Hub CSPM, que continua disponível como um serviço especializado focado em gerenciamento de postura de segurança em nuvem e agregação de descobertas.

    Ambas as versões compartilham uma funcionalidade importante: as regras de automação. Esse recurso permite atualizar automaticamente campos de descobertas quando critérios específicos são atendidos. Porém, existe um desafio: as regras criadas em uma versão não sincronizam com a outra. Isso significa que usuários migrando do Security Hub CSPM para a nova plataforma precisam recriar suas automações manualmente — ou encontrar uma forma mais eficiente de fazer essa transição.

    O Problema de Compatibilidade de Esquemas

    Diferenças Fundamentais Entre os Esquemas

    O Security Hub CSPM utiliza o AWS Security Finding Format (ASFF) como esquema para suas descobertas. Esse formato é central para como as regras de automação funcionam — elas analisam campos ASFF específicos usando operadores (como igualdade ou contém) para determinar quando ativar ações que modificam outros campos ASFF.

    A nova versão do Security Hub, por sua vez, adota o Open Cybersecurity Schema Framework (OCSF), um padrão aberto amplamente adotado no setor de cibersegurança. Essa mudança traz melhorias em interoperabilidade e integração, mas cria um obstáculo para usuários existentes: as regras ASFF não são diretamente compatíveis com OCSF.

    Desafios Específicos da Migração

    Nem todas as regras podem ser migradas automaticamente. Alguns campos ASFF não possuem correspondentes diretos em OCSF. Por exemplo, campos como Criticality, GeneratorId e RelatedFindingsId não têm mapeamento na nova estrutura. Além disso, algumas ações suportadas no ASFF — como aquelas que modificam Confidence, VerificationState ou UserDefinedFields — também não estão disponíveis no OCSF.

    Isso significa que regras existentes podem ser migradas de forma parcial, preservando apenas as ações que têm equivalente no novo esquema, ou podem exigir redesenho completo.

    A Solução: Automatizando a Migração

    Como Funciona a Ferramenta

    A AWS oferece uma solução pronta baseada em scripts Python que automatiza o processo de migração. O fluxo funciona em etapas bem definidas:

    Descoberta: A solução escaneia seu ambiente Security Hub CSPM para identificar todas as regras de automação existentes em múltiplas regiões.

    Análise: Cada regra é avaliada para determinar se pode ser totalmente migrada, parcialmente migrada ou se exige intervenção manual, baseado na compatibilidade entre campos ASFF e OCSF.

    Transformação: Regras compatíveis são convertidas automaticamente de ASFF para OCSF usando mapeamentos pré-definidos.

    Geração de Template: A solução cria um template do AWS CloudFormation contendo as regras transformadas, preservando sua ordem original e contexto regional.

    Implantação e Validação: O template é revisado e implantado, criando as regras migradas em estado desabilitado por padrão, permitindo testes antes da ativação.

    Arquitetura da solução mostrando os scripts Python e suas interações — Fonte: Aws

    Componentes da Solução

    A ferramenta é composta por quatro scripts Python que trabalham de forma coordenada:

    Orquestrador: Coordena descoberta, transformação e geração, além de gerenciar relatórios e logs.

    Descoberta de Regras: Identifica e extrai regras de automação existentes do Security Hub CSPM em regiões especificadas.

    Transformação de Esquema: Converte regras de ASFF para OCSF utilizando o mapeamento de campos.

    Geração de Template: Cria templates CloudFormation prontos para implantação.

    Mapeamento de Campos: ASFF para OCSF

    Para entender o escopo da migração, é importante conhecer como os campos se relacionam. Campos ASFF usados como critérios em regras mapeiam para seus equivalentes OCSF da seguinte forma:

    Campos como AwsAccountId, ComplianceStatus, Confidence, CreatedAt, Description, SeverityLabel e Title possuem correspondentes diretos. Porém, Criticality, GeneratorId, NoteText, ResourceApplicationArn, UserDefinedFields e VerificationState são marcados como indisponíveis (N/A) e não podem ser migrados automaticamente.

    Regras que dependem desses campos precisam ser redesenhadas manualmente na nova plataforma.

    Da mesma forma, ações suportadas como modificação de Severity e atualização de Status são totalmente compatíveis. Porém, ações que envolvem Confidence, Criticality, RelatedFindings e VerificationState não possuem equivalente e precisarão ser recriadas ou removidas.

    Conceitos-Chave Para a Migração

    Estado Padrão das Regras Migradas

    Por segurança, todas as regras migradas são criadas em estado desabilitado. Isso permite que você as revise, valide o comportamento e só então as ative. A solução pode opcionalmente criar regras já habilitadas, mas essa abordagem não é recomendada.

    Ordem e Prioridade de Regras

    Tanto no Security Hub CSPM quanto no novo Security Hub, a ordem de execução das regras importa — especialmente quando múltiplas regras podem afetar os mesmos campos. A solução preserva a ordem original de suas regras. Se você já possui regras no Security Hub novo, as regras migradas começam sua numeração após as existentes.

    Quando múltiplas regiões estão envolvidas em um cenário de Região Base (home region), a ordem é preservada por região e agrupada na sequência final. Por exemplo: primeiramente todas as regras da Região 1, depois da Região 2, e assim por diante.

    Regiões: Base vs. Individual

    O Security Hub CSPM opera com regras baseadas em regiões — uma regra criada em uma região afeta apenas as descobertas geradas naquela região, mesmo se você usa uma região base para agregação central.

    O novo Security Hub funciona de forma diferente: regras definidas na região base são aplicadas a todas as regiões vinculadas. Regras não podem ser criadas em regiões vinculadas, apenas em regiões não vinculadas, onde afetarão apenas suas descobertas locais.

    A solução oferece dois modos de implantação para lidar com essas diferenças:

    Modo Região Base: Usa regiões especificadas e recria as regras na região base, adicionando um critério extra que preserva o contexto regional original. Um único template CloudFormation é gerado.

    Modo Região-por-Região: Gera um template separado para cada região, preservando o comportamento regional das regras originais. Templates são implantados individualmente.

    Se você usa uma região base com algumas regiões vinculadas e outras não, execute o Modo Região Base para a região base e regiões vinculadas, depois o Modo Região-por-Região para regiões não vinculadas.

    Pré-Requisitos e Configuração

    Softwares Necessários

    Antes de iniciar, você precisa de:

    Permissões Necessárias

    Sua conta AWS precisa ter permissões para:

    Descoberta e transformação: securityhub:ListAutomationRules, securityhub:BatchGetAutomationRules, securityhub:GetFindingAggregator, securityhub:DescribeHub, securityhub:ListAutomationRulesV2.

    Implantação de template: cloudformation:CreateStack, cloudformation:UpdateStack, cloudformation:DescribeStacks, cloudformation:CreateChangeSet, cloudformation:DescribeChangeSet, cloudformation:ExecuteChangeSet, cloudformation:GetTemplateSummary, securityhub:CreateAutomationRuleV2, securityhub:UpdateAutomationRuleV2, securityhub:DeleteAutomationRuleV2, securityhub:GetAutomationRuleV2, securityhub:TagResource, securityhub:ListTagsForResource.

    Configuração da Conta AWS

    O Security Hub suporta um modelo de administrador delegado quando usado com AWS Organizations. Nesse modelo, um administrador delegado centraliza a gestão de descobertas e configuração de segurança em toda a organização.

    Regras de automação devem ser criadas na conta do administrador delegado, na região base e em regiões não vinculadas. Contas membro não podem criar suas próprias regras.

    A recomendação é usar a mesma conta como administrador delegado tanto para Security Hub CSPM quanto para o novo Security Hub, garantindo consistência. Configure sua AWS CLI com credenciais dessa conta antes de executar a migração.

    Embora a solução seja principalmente para deployments com administrador delegado, também funciona com implementações de Security Hub em conta única.

    Passo a Passo: Executando a Migração

    Preparação e Execução

    Para iniciar o processo de migração:

    Primeiro, clone o repositório da ferramenta de migração. Acesse o repositório de amostras da AWS no GitHub e execute:

    git clone https://github.com/aws-samples/sample-SecurityHub-Automation-Rule-Migration.git

    Em seguida, consulte o arquivo README do repositório para obter as instruções de implementação mais atualizadas. Siga os passos especificados para executar os scripts. O processo gerará um template CloudFormation com suas regras de automação transformadas.

    Implante o template usando a AWS CLI ou o console. Veja como criar uma stack no console do CloudFormation para detalhes completos.

    Validação e Ativação das Regras

    Após a implantação, acesse o console do Security Hub para revisar suas regras migradas. Lembre-se: elas começam desabilitadas por padrão.

    Para cada regra migrada:

    • Acesse a seção de Automações no Security Hub
    • Selecione a regra e escolha Editar
    • Revise seus critérios e ações com cuidado
    • Use a opção de visualizar descobertas correspondentes para validar o comportamento esperado
    • Se tudo estiver correto, ative a regra

    Preste atenção especial às regras marcadas como “parcialmente migradas” em sua descrição. Isso significa que uma ou mais ações da regra original não têm equivalente no novo Security Hub. Essas regras podem se comportar diferentemente do que você espera e precisarão de revisão.

    A solução também gera um relatório detalhando quais regras foram parcialmente migradas e especificando quais ações não puderam ser replicadas. Revise esse relatório cuidadosamente antes de habilitar essas regras.

    Conclusão

    A nova geração do AWS Security Hub oferece capacidades significativamente melhoradas para agregar, correlacionar e contextualizar descobertas de segurança. Embora a mudança de esquema de ASFF para OCSF traga benefícios em termos de interoperabilidade e integrações com parceiros, ela também exige que regras de automação existentes sejam transformadas.

    A solução de migração automatizada simplifica esse processo, executando a descoberta, transformação e geração de templates de forma coordenada. Ao seguir as melhores práticas recomendadas — revisar o relatório de migração, testar regras em estado desabilitado, validar correspondências e ativar gradualmente — você consegue manter seus fluxos de trabalho de automação de segurança funcionando sem interrupções.

    Para mais informações sobre o Security Hub e suas capacidades ampliadas, consulte a documentação oficial do Security Hub.

    Fonte

    Security Hub CSPM automation rule migration to Security Hub (https://aws.amazon.com/blogs/security/security-hub-cspm-automation-rule-migration-to-security-hub/)

  • Bancos de Dados da AWS agora estão disponíveis no Marketplace da Vercel

    Integração Estratégica: Bancos de Dados AWS na Vercel

    Desde dezembro de 2025, a AWS disponibilizou seus bancos de dados no Marketplace da Vercel, marcando um passo importante na simplificação da infraestrutura para desenvolvedores. Agora é possível criar e conectar instâncias de Amazon Aurora PostgreSQL, Amazon Aurora DSQL e Amazon DynamoDB diretamente do dashboard da Vercel, sem necessidade de configurações complexas.

    Como Começar

    Para iniciar, desenvolvedores podem criar uma nova conta AWS diretamente pela Vercel, que já inclui acesso aos três serviços de banco de dados mencionados. A promoção oferece $100 USD em créditos que podem ser utilizados em qualquer uma das opções de banco de dados por até seis meses, reduzindo significativamente as barreiras de entrada para prototipagem e desenvolvimento.

    Configuração Rápida e Produção Imediata

    Uma vez que a conta está configurada, é possível ter um banco de dados Aurora pronto para produção ou uma tabela DynamoDB alimentando seus projetos Vercel em questão de segundos. Todo o gerenciamento — desde o plano escolhido até a adição de informações de pagamento e visualização de uso — pode ser feito no portal de configurações AWS acessível diretamente do dashboard da Vercel.

    Capacidades e Vantagens Técnicas

    A integração oferece opções serverless para Aurora PostgreSQL, Aurora DSQL e DynamoDB, simplificando as necessidades das aplicações e reduzindo custos através do dimensionamento automático para zero quando não há uso. Essa abordagem elimina a cobrança por recursos ociosos, tornando a solução especialmente atrativa para aplicações com padrões de consumo variáveis.

    Cobertura Geográfica e Escalabilidade

    Os bancos de dados podem ser criados em Regiões AWS estratégicas: US East (Virgínia do Norte), US East (Ohio), US West (Oregon), Europe (Irlanda), Europe (Frankfurt), Ásia Pacífico (Tóquio) e Ásia Pacífico (Mumbai). Novos locais estão previstos para o futuro, ampliando a disponibilidade para diferentes contextos geográficos.

    Segurança e Confiabilidade

    Os bancos de dados AWS entregam segurança, confiabilidade e eficiência de custo sem a sobrecarga operacional associada ao gerenciamento manual de infraestrutura. A abordagem é adequada tanto para desenvolvedores prototipando suas próximas ideias quanto para equipes mantendo aplicações de produção críticas e orientadas por dados ou inteligência artificial.

    Próximos Passos

    Para explorar melhor essas capacidades, a AWS fornece documentação completa na página AWS no Marketplace da Vercel. Além disso, o site de bancos de dados da AWS oferece informações técnicas detalhadas sobre cada serviço e suas possibilidades de integração.

    Fonte

    AWS Databases are now available on the Vercel Marketplace (https://aws.amazon.com/about-aws/whats-new/2025/12/aws-databases-are-available-on-the-vercel/)

  • MLflow no Amazon SageMaker: Monitore Experimentos de Machine Learning com Integração Snowflake

    O Desafio do Rastreamento de Experimentos em Ambientes Distribuídos

    Cientistas de dados frequentemente conduzem experimentos de machine learning em ambientes de dados diversos, como o Snowflake, utilizando a biblioteca Snowpark. No entanto, rastrear esses experimentos de forma centralizada apresenta desafios significativos. Manter um repositório único que monitore metadados de experimentos, parâmetros, hiperparâmetros, modelos, resultados e outras informações relevantes torna-se complexo quando esses processos ocorrem em plataformas distintas.

    A AWS apresenta uma solução: integrar o MLflow gerenciado do SageMaker como repositório central para registro desses experimentos, estabelecendo um sistema unificado de monitoramento de progresso.

    Capacidades do MLflow Gerenciado no SageMaker

    O MLflow gerenciado da AWS oferece serviços totalmente gerenciados para rastreamento de experimentos, empacotamento de modelos e registro de modelos. O Registro de Modelos do SageMaker simplifica o versionamento e a implantação de modelos, facilitando transições suaves do desenvolvimento para produção.

    A integração com Amazon S3, AWS Glue e Repositório de Características do SageMaker potencializa o gerenciamento de dados e a rastreabilidade de modelos. Os principais benefícios dessa arquitetura incluem:

    • Padronização de fluxos de trabalho de machine learning em toda a organização
    • Melhoria na colaboração entre equipes de ciência de dados
    • Aceleração da adoção de IA/ML com infraestrutura mais segura e escalável

    Arquitetura da Solução: Snowpark Integrado ao MLflow

    A integração entre Snowflake e SageMaker permite um fluxo de trabalho coeso. O Snowpark para Python funciona como biblioteca do lado cliente, permitindo que código Python interaja com o Snowflake a partir de kernels Python, como os notebooks Jupyter do SageMaker.

    Imagem original — fonte: Aws

    Um fluxo de trabalho típico inclui preparação de dados no Snowflake, juntamente com engenharia de características e treinamento de modelos dentro do Snowpark. Posteriormente, o MLflow gerenciado do SageMaker é utilizado para rastreamento de experimentos e registro de modelos, integrados às capacidades do SageMaker. Essa abordagem permite que cientistas de dados executem transformações e engenharia de características no Snowflake e aproveitem a infraestrutura gerenciada do SageMaker para treinamento e implantação, facilitando orquestração de fluxos de trabalho mais suave e tratamento seguro dos dados.

    Rastreamento Centralizado com MLflow

    O rastreamento MLflow é fundamental nessa integração entre SageMaker, Snowpark e Snowflake, pois fornece um ambiente centralizado para registro e gerenciamento de todo o ciclo de vida do machine learning. Enquanto o Snowpark processa dados do Snowflake e treina modelos, o Rastreamento MLflow captura detalhes essenciais:

    • Parâmetros e hiperparâmetros do modelo
    • Métricas de desempenho
    • Artefatos gerados durante o treinamento

    Isso permite que cientistas de dados monitorem experimentos, comparem diferentes versões de modelos e verifiquem reprodutibilidade. Com as capacidades de versionamento e registro do MLflow, equipes podem rastrear resultados até o conjunto de dados específico e as transformações utilizadas, tornando mais simples monitorar o desempenho de modelos ao longo do tempo e manter um fluxo de trabalho de machine learning transparente e eficiente.

    Essa abordagem oferece diversos benefícios práticos: fornece um rastreador MLflow escalável e gerenciado no SageMaker, enquanto aproveita as capacidades de processamento do Snowpark para inferência de modelo dentro do ambiente Snowflake, criando um sistema unificado de dados. O fluxo de trabalho permanece dentro do ambiente Snowflake, o que aprimora segurança e governança dos dados. Adicionalmente, reduz custos ao utilizar a potência de computação elástica do Snowflake para inferência sem necessidade de manter infraestrutura separada para servir modelos.

    Pré-requisitos para Implementação

    Antes de estabelecer o MLflow do SageMaker, é necessário criar e configurar os seguintes recursos:

    O usuário do Gerenciamento de Identidade e Acesso deve possuir permissões para fazer as chamadas de serviço AWS necessárias. Ao conceder essas permissões, é importante seguir o princípio do menor privilégio.

    Conectando Snowflake ao Servidor de Rastreamento MLflow

    Para conectar o ambiente Snowflake ao Servidor de Rastreamento MLflow gerenciado do SageMaker, siga estas etapas:

    Configuração Inicial no Snowflake

    • Faça login no Snowflake como usuário administrador
    • Crie um novo Notebook em Snowflake: Projects > Notebooks > +Notebook
    • Altere a função para uma função não-administrador
    • Atribua um nome, selecione banco de dados, schema, warehouse, e selecione ‘Run on container’
    • Nas configurações do Notebook, ative a opção de acesso externo para permitir todas as integrações

    Instalação de Dependências

    Instale a biblioteca necessária executando:

    !pip install sagemaker-mlflow

    Configuração do MLflow e Execução de Experimentos

    Execute o código do MLflow, substituindo o valor de ARN pelo seu:

    import mlflow
    import boto3
    import logging
    
    sts = boto3.client("sts")
    assumed = sts.assume_role(
        RoleArn="",
        RoleSessionName="sf-session"
    )
    creds = assumed["Credentials"]
    arn = ""
    
    try:
        mlflow.set_tracking_uri(arn)
        mlflow.set_experiment("Default")
        with mlflow.start_run():
            mlflow.log_param("test_size", 0.2)
            mlflow.log_param("random_state", 42)
            mlflow.log_param("model_type", "LinearRegression")
    except Exception as e:
        logging.error("Failed to set tracking URI: {e}")
    Imagem original — fonte: Aws

    Após uma execução bem-sucedida, os experimentos podem ser rastreados no MLflow do SageMaker. Clicando no nome da execução (“Run name”), é possível acessar insights detalhados sobre cada experimento.

    Limpeza de Recursos

    Para evitar custos contínuos, execute estas etapas para remover os recursos configurados:

    • Delete a conta SageMaker Studio (isso também deleta o servidor de rastreamento MLflow)
    • Delete o bucket S3 com seu conteúdo
    • Remova o notebook do Snowflake
    • Verifique que a conta SageMaker foi deletada

    Considerações Finais

    A integração entre o MLflow gerenciado do SageMaker e o Snowflake oferece uma solução abrangente para gerenciar o ciclo de vida completo do machine learning. Ao aproveitar o Snowpark, a solução aprimora ainda mais esse conjunto de capacidades, permitindo fluxos de trabalho mais suaves de processamento de dados e implantação de modelos.

    Para começar, siga as instruções passo a passo fornecidas acima para configurar o Servidor de Rastreamento MLflow no SageMaker Studio e integrá-lo com o Snowflake. Lembre-se de implementar as práticas recomendadas de segurança da AWS, incluindo funções e permissões apropriadas de Gerenciamento de Identidade e Acesso, e garantindo que todas as credenciais sejam protegidas adequadamente. Os exemplos de código e instruções neste artigo servem como ponto de partida — podem ser adaptados para casos de uso e requisitos específicos enquanto se mantêm as práticas recomendadas de segurança e escalabilidade.

    Fonte

    Track machine learning experiments with MLflow on Amazon SageMaker using Snowflake integration (https://aws.amazon.com/blogs/machine-learning/track-machine-learning-experiments-with-mlflow-on-amazon-sagemaker-using-snowflake-integration/)

  • Compreensão de Vídeos Potencializada: TwelveLabs Marengo no Amazon Bedrock

    Desafios na Compreensão de Conteúdo Audiovisual

    Conteúdo de mídia, entretenimento, publicidade, educação e treinamento corporativo combinam elementos visuais, sonoros e de movimento para contar histórias e transmitir informações. Essa complexidade multidimensional supera em muito a simplicidade do texto, onde palavras individuais possuem significados bem definidos. Para sistemas de IA, essa riqueza de informação representa um desafio considerável.

    Um vídeo típico integra diversos elementos simultaneamente: componentes visuais como cenas, objetos e ações; dinâmica temporal expressa através de movimento e transições; elementos de áudio incluindo diálogos, música e efeitos sonoros; além de textos sobrepostos como legendas e capturas. Essa multiplicidade de camadas de informação cria desafios significativos para organizações que precisam buscar em arquivos de vídeo, localizar cenas específicas, categorizar automaticamente e extrair insights de seus ativos de mídia para tomada de decisão efetiva.

    Abordagem Multimodal com Embeddings Especializados

    A solução apresentada pela AWS com o TwelveLabs Marengo utiliza uma arquitetura de múltiplos vetores para criar representações especializadas de diferentes modalidades de conteúdo. Em vez de comprimir toda a informação em um único vetor — abordagem que resulta em perda considerável de nuances — o modelo gera embeddings distintos para cada aspecto do vídeo.

    Embeddings são representações vetoriais densas que capturam significado semântico em um espaço de alta dimensionalidade. Funcionam como impressões digitais numéricas que codificam a essência do conteúdo de forma compreensível e comparável por máquinas. Para texto, um embedding pode capturar que “rei” e “rainha” são conceitos relacionados; para imagens, pode compreender que um retriever dourado e um labrador são ambos cães, apesar de aparências diferentes.

    A arquitetura multivetor do Marengo 3.0 oferece vantagens significativas: cada vetor captura uma modalidade específica, evitando perda de informação; permite buscas flexíveis direcionadas a aspectos particulares do conteúdo — somente visual, apenas áudio ou combinadas; e proporciona precisão superior em cenários complexos enquanto mantém escalabilidade eficiente para grandes volumes de dados videoconteúdo em empresas.

    Integração com Amazon Bedrock e OpenSearch Serverless

    A AWS expandiu as capacidades do Amazon Bedrock para suportar o modelo TwelveLabs Marengo Embed 3.0 com processamento de texto e imagem em tempo real através de inferência síncrona. Essa integração possibilita que negócios implementem funcionalidade de busca em vídeos mais rápida utilizando consultas em linguagem natural, além de viabilizar descoberta interativa de produtos através de sofisticado matching de similaridade de imagens.

    Para armazenar e recuperar embeddings, a solução utiliza Amazon OpenSearch Serverless como banco de dados vetorial. Como banco de dados específico para vetores, o OpenSearch Serverless permite localizar conteúdo similar rapidamente através de busca semântica, sem necessidade de gerenciar servidores ou infraestrutura subjacente.

    O código completo de exemplo está disponível em repositório GitHub, demonstrando como integrar essas tecnologias em uma aplicação prática.

    Como Funciona a Geração de Embeddings de Vídeo

    O Amazon Bedrock utiliza API assíncrona para geração de embeddings de vídeo com o modelo Marengo. Um vídeo típico é processado para gerar múltiplas representações vetoriais especializadas:

    • Embeddings Visuais: capturam elementos visuais do conteúdo
    • Embeddings de Transcrição: representam texto transcrito do áudio
    • Embeddings de Áudio: codificam características sonoras do vídeo

    Por padrão, um único processamento com o Marengo gera embeddings para visual-texto, visual-imagem e áudio. É possível configurar para gerar apenas tipos específicos de embedding conforme necessário.

    O processamento segmenta automaticamente o vídeo em clips. Para vídeo, a divisão ocorre em mudanças naturais de cena (shot boundaries). Para áudio, os segmentos são divididos em durações próximas a 10 segundos — por exemplo, áudio de 50 segundos resulta em 5 segmentos de 10 segundos cada.

    Preparando o Ambiente

    Antes de começar a implementação, é necessário verificar alguns pré-requisitos:

    Para demonstração prática, a solução utiliza Netflix Open Content, conteúdo de código aberto disponível sob licença Creative Commons Attribution 4.0 International. Especificamente, um vídeo chamado Meridian é usado para demonstrar o funcionamento do modelo.

    Criando Embeddings de Vídeo

    O seguinte fragmento de código Python mostra um exemplo de invocação da API que processa um vídeo armazenado em um bucket S3:

    bedrock_client = boto3.client("bedrock-runtime")
    model_id = 'us.twelvelabs.marengo-embed-3-0-v1:0'
    video_s3_uri = ""
    aws_account_id = ""
    s3_bucket_name = ""
    s3_output_prefix = ""
    
    response = bedrock_client.start_async_invoke(
        modelId=model_id,
        modelInput={
            "inputType": "video",
            "video": {
                "mediaSource": {
                    "s3Location": {
                        "uri": video_s3_uri,
                        "bucketOwner": aws_account_id
                    }
                }
            }
        },
        outputDataConfig={
            "s3OutputDataConfig": {
                "s3Uri": f's3://{s3_bucket_name}/{s3_output_prefix}'
            }
        }
    )

    Um vídeo típico processado desta forma gera 280 embeddings individuais — um para cada segmento — viabilizando busca temporal precisa e análise detalhada. A saída inclui embeddings multimodais com estrutura similar a esta:

    [
        {
            'embedding': [0.053192138671875,...],
            'embeddingOption': "visual",
            'embeddingScope': "clip",
            "startSec": 0.0,
            "endSec": 4.3
        },
        {
            'embedding': [0.053192138645645,...],
            'embeddingOption': "transcription",
            'embeddingScope': "clip",
            "startSec": 3.9,
            "endSec": 6.5
        },
        {
            'embedding': [0.3235554er443524,...],
            'embeddingOption': "audio",
            'embeddingScope': "clip",
            "startSec": 4.9,
            "endSec": 7.5
        }
    ]

    Para personalizar o processamento, é possível utilizar o seguinte fragmento com opções configuráveis:

    response = bedrock_client.start_async_invoke(
        modelId=model_id,
        modelInput={
            "modelId": model_id,
            "modelInput": {
                "inputType": "video",
                "video": {
                    "mediaSource": {
                        "base64String": "base64-encoded string",
                        "s3Location": {
                            "uri": "s3://amzn-s3-demo-bucket/video/clip.mp4",
                            "bucketOwner": "123456789012"
                        }
                    },
                    "startSec": 0,
                    "endSec": 6,
                    "segmentation": {
                        "method": "dynamic",
                        "dynamic": {
                            "minDurationSec": 4
                        },
                        "method": "fixed",
                        "fixed": {
                            "durationSec": 6
                        }
                    },
                    "embeddingOption": ["visual", "audio", "transcription"],
                    "embeddingScope": ["clip", "asset"]
                },
                "inferenceId": "some inference id"
            }
        }
    )

    Consulte a documentação completa para conhecer toda funcionalidade suportada.

    Configurando o Índice no OpenSearch Serverless

    Após criar uma coleção no OpenSearch Serverless, é necessário criar um índice que contenha propriedades adequadas para armazenar embeddings vetoriais. O seguinte código demonstra essa configuração:

    index_mapping = {
        "mappings": {
            "properties": {
                "video_id": {"type": "keyword"},
                "segment_id": {"type": "integer"},
                "start_time": {"type": "float"},
                "end_time": {"type": "float"},
                "embedding": {
                    "type": "dense_vector",
                    "dims": 1024,
                    "index": True,
                    "similarity": "cosine"
                },
                "metadata": {"type": "object"}
            }
        }
    }

    Indexando os Embeddings do Marengo

    Após gerar os embeddings, é necessário ingeri-los no índice do OpenSearch. O fragmento abaixo demonstra esse processo:

    documents = []
    for i, segment in enumerate(video_embeddings):
        document = {
            "embedding": segment["embedding"],
            "start_time": segment["startSec"],
            "end_time": segment["endSec"],
            "video_id": video_id,
            "segment_id": i,
            "embedding_option": segment.get("embeddingOption", "visual")
        }
        documents.append(document)
    
    bulk_data = []
    for doc in documents:
        bulk_data.append({"index": {"_index": self.index_name}})
        bulk_data.append(doc)
    
    bulk_body = "\n".join(json.dumps(item) for item in bulk_data) + "\n"
    response = oss_client.bulk(body=bulk_body, index=self.index_name)

    Busca Semântica Cruzada Entre Modalidades

    Uma das grandes vantagens do design multivetor do Marengo é permitir buscas cruzadas entre diferentes modalidades — capacidade impossível com modelos de vetor único. Criando embeddings separados mas alinhados para elementos visuais, áudio, movimento e contexto, é possível buscar vídeos utilizando o tipo de entrada que for mais conveniente.

    Por exemplo, uma consulta por texto “jazz tocando” retorna clipes de vídeo com músicos em apresentação, faixas de áudio de jazz e cenas de salas de concerto extraídas de uma única consulta textual.

    Busca por Texto

    O seguinte fragmento demonstra capacidade de busca semântica cruzada utilizando texto:

    text_query = "a person smoking in a room"
    modelInput={
        "inputType": "text",
        "text": {
            "inputText": text_query
        }
    }
    response = self.bedrock_client.invoke_model(
        modelId="us.twelvelabs.marengo-embed-3-0-v1:0",
        body=json.dumps(modelInput))
    result = json.loads(response["body"].read())
    query_embedding = result["data"][0]["embedding"]
    
    search_body = {
        "query": {
            "knn": {
                "embedding": {
                    "vector": query_embedding,
                    "k": top_k
                }
            }
        },
        "size": top_k,
        "_source": ["start_time", "end_time", "video_id", "segment_id"]
    }
    response = opensearch_client.search(index=self.index_name, body=search_body)
    
    print(f"\n✅ Found {len(response['hits']['hits'])} matching segments:")
    results = []
    for hit in response['hits']['hits']:
        result = {
            "score": hit["_score"],
            "video_id": hit["_source"]["video_id"],
            "segment_id": hit["_source"]["segment_id"],
            "start_time": hit["_source"]["start_time"],
            "end_time": hit["_source"]["end_time"]
        }
        results.append(result)

    Busca por Imagem

    O modelo também suporta busca semântica iniciada a partir de uma imagem. O fragmento seguinte demonstra essa funcionalidade:

    s3_image_uri = f's3://{self.s3_bucket_name}/{self.s3_images_path}/{image_path_basename}'
    s3_output_prefix = f'{self.s3_embeddings_path}/{self.s3_images_path}/{uuid.uuid4()}'
    modelInput={
        "inputType": "image",
        "image": {
            "mediaSource": {
                "s3Location": {
                    "uri": s3_image_uri,
                    "bucketOwner": self.aws_account_id
                }
            }
        }
    }
    response = self.bedrock_client.invoke_model(
        modelId=self.cris_model_id,
        body=json.dumps(modelInput),
    )
    result = json.loads(response["body"].read())
    
    query_embedding = result["data"][0]["embedding"]
    
    search_body = {
        "query": {
            "knn": {
                "embedding": {
                    "vector": query_embedding,
                    "k": top_k
                }
            }
        },
        "size": top_k,
        "_source": ["start_time", "end_time", "video_id", "segment_id"]
    }
    response = opensearch_client.search(index=self.index_name, body=search_body)

    Busca por Áudio

    Além de buscas textuais e visuais, o modelo Marengo também possibilita buscar vídeos utilizando embeddings de áudio, com foco em diálogo e fala. Essa capacidade permite que usuários localizem vídeos com base em palestrantes específicos, conteúdo de diálogo ou tópicos falados, criando uma experiência de busca abrangente que combina texto, imagem e áudio para compreensão integrada do conteúdo videoconteúdo.

    Impacto Prático

    A combinação do TwelveLabs Marengo com Amazon Bedrock abre possibilidades significativas para compreensão de vídeos através de sua abordagem multimodal de múltiplos vetores. Uma chamada única à API do Bedrock transformou um arquivo de vídeo em 336 segmentos pesquisáveis capazes de responder a consultas textuais, visuais e de áudio.

    Essas capacidades criam oportunidades para descoberta de conteúdo em linguagem natural, gerenciamento simplificado de ativos de mídia e outras aplicações que auxiliam organizações a compreender melhor e utilizar seu acervo de conteúdo videoconteúdo em escala. Conforme vídeo continua dominando experiências digitais, modelos como o Marengo oferecem fundação sólida para construir sistemas de análise de vídeo mais inteligentes.

    Explore o código de exemplo e descubra como compreensão de vídeo multimodal pode transformar suas aplicações.

    Fonte

    Unlocking video understanding with TwelveLabs Marengo on Amazon Bedrock (https://aws.amazon.com/blogs/machine-learning/unlocking-video-understanding-with-twelvelabs-marengo-on-amazon-bedrock/)