Blog

  • Listas de preferência de instâncias para jobs de treinamento no Amazon SageMaker AI

    O problema clássico: esperar por GPU disponível

    Quem trabalha com treinamento de modelos de IA em escala conhece bem a frustração: você submete um job, e a instância GPU que precisa simplesmente não está disponível naquele momento. Com o job preso a um único tipo de instância, a única saída é esperar — ou montar gambiarras manuais para tentar alternativas.

    Esse cenário é especialmente crítico em pipelines de re-treinamento noturno, execuções de fine-tuning em produção e jobs de processamento agendados. Um simples InsufficientCapacityError às 2h da manhã pode comprometer a atualização do modelo e atrasar ciclos inteiros de experimentação.

    Para contornar o problema, muitas equipes desenvolveram scripts customizados que monitoram o status do job, cancelam requisições travadas e resubmetem com tipos alternativos. Além de frágeis, essas soluções não se integram com opções de capacidade reservada — e adicionam sobrecarga operacional que se acumula a cada nova execução de treinamento.

    A solução: listas de preferência de instâncias

    A AWS anunciou as listas de preferência de instâncias para Jobs de Treinamento do Amazon SageMaker AI e Jobs de Processamento do Amazon SageMaker AI. Com essa funcionalidade, em vez de fixar o job a um único tipo de instância, é possível fornecer uma lista ordenada de até cinco tipos aceitáveis em uma única chamada de API.

    O Amazon SageMaker AI avalia a lista em ordem de prioridade e inicia o job no primeiro tipo com capacidade disponível — sem intervenção manual, sem scripts de polling e sem loops de retry.

    Como o fluxo de provisionamento funciona

    O processo segue quatro etapas principais:

    • Etapa 1: Você submete o job com uma lista ordenada de até cinco tipos de instância.
    • Etapa 2: O SageMaker AI valida a configuração do job e a lista de preferências em relação aos tipos suportados e aos limites de recursos.
    • Etapa 3: O scheduler realiza uma varredura em memória pela lista ordenada e identifica o primeiro tipo com capacidade disponível.
    • Etapa 4: O tipo vencedor é provisionado imediatamente e o job começa a execução.

    Se nenhum tipo da lista tiver capacidade disponível no momento da avaliação, o job entra em uma fila orientada a eventos e realiza retries automáticos quando a capacidade for liberada. Esse tempo de espera é controlado pelo parâmetro MaxPendingTimeInSeconds, que define o tempo máximo que o SageMaker AI pode aguardar percorrendo a lista.

    Vale destacar: o MaxPendingTimeInSeconds só tem efeito para jobs que solicitam instâncias de computação acelerada — como as famílias ml.p, ml.g e ml.trn. Para instâncias CPU, esse parâmetro não tem efeito. Além disso, o timeout se aplica à lista inteira, não a cada tipo individualmente.

    Imagem original — fonte: Aws

    Integração com Planos de Treinamento Flexíveis (FTP)

    Equipes que investiram em Planos de Treinamento Flexíveis (FTP) — que reservam capacidade GPU por um período definido a taxas com desconto — ganham uma extensão natural com as listas de preferência. É possível associar um Training Plan a preferências específicas da lista e deixar as demais usando capacidade sob demanda.

    O sweep avalia a reserva primeiro. Se aquela preferência não puder ser provisionada, o sistema avança para o próximo tipo na lista, que pode usar capacidade on-demand. Não é necessária nenhuma troca manual — o que tiver capacidade primeiro vence.

    Imagem original — fonte: Aws

    Exemplos de código: jobs de treinamento

    Os exemplos abaixo utilizam o SDK Python do Amazon SageMaker v3 com a classe ModelTrainer.

    Exemplo 1: Três tipos de GPU com contagem uniforme (P5, P4d e P4de)

    Neste exemplo, são especificados três tipos de instância GPU com a mesma contagem. O SageMaker AI tenta provisionar a primeira preferência (P5) e recorre ao P4d ou P4de se não houver capacidade disponível.

    from sagemaker.core.shapes.shapes import InstancePreference
    from sagemaker.train.model_trainer import ModelTrainer
    from sagemaker.train.configs import Compute, OutputDataConfig
    
    trainer = ModelTrainer(
        training_image="763104351884.dkr.ecr.us-east-1.amazonaws.com/pytorch-training:2.3.0-gpu-py311-cu121-ubuntu22.04-sagemaker",
        source_code="train.py",
        role="arn:aws:iam:: 111122223333:role/SageMakerExecutionRole",
        base_job_name="large-model-training-70b",
        output_data_config=OutputDataConfig(
            s3_output_path="s3:// amzn-s3-demo-bucket /training-output/"
        ),
        compute=Compute(
            instance_count=8,  # Same count regardless of which type wins
            volume_size_in_gb=500,
            keep_alive_period_in_seconds=3600,
            instance_preferences=[
                InstancePreference(instance_type="ml.p5.48xlarge"),   # Priority 1: H100
                InstancePreference(instance_type="ml.p4d.24xlarge"),  # Priority 2: A100
                InstancePreference(instance_type="ml.p4de.24xlarge"), # Priority 3: A100 (80GB)
            ],
        ),
    )
    
    trainer.train(wait=False)
    print(f"Job submitted: {trainer._latest_training_job.training_job_name}")

    Exemplo 2: Contagens por preferência para equivalência de computação

    Nem todos os tipos de instância entregam o mesmo throughput por nó. Quando a lista inclui tipos com arquiteturas de GPU diferentes, é possível especificar uma contagem de instâncias diferente para cada entrada, alcançando throughput total equivalente. No exemplo abaixo, duas instâncias ml.g6.48xlarge (16 GPUs L40S no total) são a primeira preferência, com quatro ml.g5.48xlarge (32 GPUs A10G no total) como fallback para compensar a menor performance por GPU.

    compute = Compute(
        volume_size_in_gb=500,
        instance_preferences=[
            # 2× g6.48xlarge (8× L40S GPUs each = 16 GPUs total)
            InstancePreference(instance_type="ml.g6.48xlarge", instance_count=2),
            # 4× g5.48xlarge (8× A10G GPUs each = 32 GPUs, but lower per-GPU perf)
            InstancePreference(instance_type="ml.g5.48xlarge", instance_count=4),
        ],
    )

    Dica: Use contagens por preferência quando seu script de treinamento consegue se adaptar a diferentes quantidades de GPU — por exemplo, via torchrun com --nproc_per_node=auto. Cada configuração deve entregar throughput total equivalente para sua carga de trabalho.

    Exemplo 3: Integração com Training Plan (híbrido reservado e on-demand)

    Este exemplo combina capacidade reservada de um Training Plan com fallback on-demand, garantindo que os jobs possam iniciar mesmo quando a capacidade reservada está totalmente utilizada.

    compute = Compute(
        instance_count=4,
        volume_size_in_gb=500,
        instance_preferences=[
            # Priority 1: Use my reserved P5 capacity (guaranteed, no wait)
            InstancePreference(
                instance_type="ml.p5.48xlarge",
                training_plan_arns=[
                    "arn:aws:sagemaker:us-west-2:111122223333:training-plan/my-p5-reservation"
                ],
            ),
            # Priority 2: On-demand P4d (if reservation is fully consumed)
            InstancePreference(instance_type="ml.p4d.24xlarge"),
            # Priority 3: On-demand P4de (last resort)
            InstancePreference(instance_type="ml.p4de.24xlarge"),
        ],
    )

    Jobs de processamento também são suportados

    O mesmo mecanismo de fallback se aplica a jobs de processamento. Em vez de configurar as preferências de instância no recurso de treinamento, você as especifica no ClusterConfig do job de processamento. O SageMaker AI avalia a lista em ordem de prioridade no momento do lançamento e provisiona automaticamente o cluster com o primeiro tipo disponível.

    from sagemaker.processing import Processor
    
    processor = Processor(
        role="arn:aws:iam::123456789012:role/SageMakerExecutionRole",
        image_uri="763104351884.dkr.ecr.us-east-1.amazonaws.com/pytorch-training:2.3.0-gpu-py311-cu121-ubuntu22.04-sagemaker",
        instance_count=2,
        volume_size_in_gb=100,
        entrypoint=["python3", "process.py"],
        instance_preferences=[
            {"InstanceType": "ml.g5.12xlarge"},  # Priority 1
            {"InstanceType": "ml.g5.4xlarge"},   # Priority 2
            {"InstanceType": "ml.m5.12xlarge"},  # Priority 3 (CPU fallback)
        ],
    )
    
    processor.run(
        inputs=[...],
        outputs=[...],
    )

    Atenção: Jobs de processamento não suportam integração com Training Plans. O campo TrainingPlanArns é exclusivo para jobs de treinamento.

    Boas práticas ao configurar listas de preferência

    1. Liste apenas tipos de instância compatíveis

    O SageMaker AI não valida compatibilidade entre tipos — arquitetura de GPU, suporte a Elastic Fabric Adapter (EFA) e versões de driver. Certifique-se de que seu container de treinamento funciona em todos os tipos listados.

    2. Use contagens por preferência para equivalência de throughput

    Se a lista inclui tipos com diferentes capacidades de computação por nó, ajuste as contagens para equiparar o throughput total:

    { "InstanceType": "ml.p5.48xlarge", "InstanceCount": 2 },  // 2× H100 nodes
    { "InstanceType": "ml.p4d.24xlarge", "InstanceCount": 4 }  // 4× A100 nodes ≈ same total FLOPS

    3. Combine com Training Plans para capacidade garantida e flexível

    Coloque a capacidade reservada primeiro na lista de preferências, para que o SageMaker AI tente iniciar com recursos pré-pagos antes de recorrer a alternativas on-demand:

    • Prioridade 1: P5 reservado (via Training Plan) → instantâneo se a reserva estiver disponível
    • Prioridade 2: P4d on-demand → bom fallback a taxas padrão
    • Prioridade 3: P4de on-demand → último recurso

    4. Controle o tempo de fila com MaxPendingTimeInSeconds

    Defina por quanto tempo o job pode continuar tentando a lista antes de ser encerrado (aplica-se apenas a instâncias de computação acelerada):

    StoppingCondition={
        "MaxRuntimeInSeconds": 86400,
        "MaxPendingTimeInSeconds": 1800  # Fail after 30 minutes if no capacity
    }

    Como começar

    Para usar as listas de preferência de instâncias, basta seguir estes passos:

    • Atualize o SDK Python do Amazon SageMaker: pip install --upgrade sagemaker
    • Adicione instance_preferences à sua configuração de Compute seguindo o Guia do Desenvolvedor do Amazon SageMaker AI
    • Liste de 2 a 5 tipos de instância compatíveis em ordem de prioridade
    • Submeta o job pelo console do Amazon SageMaker AI e deixe o serviço encontrar capacidade automaticamente

    Para saber mais sobre tipos de instância, preços e Training Plans, consulte a página de detalhes do Amazon SageMaker AI.

    Fonte

    Announcing instance preference lists for Amazon SageMaker AI training jobs (https://aws.amazon.com/blogs/machine-learning/announcing-instance-preference-lists-for-amazon-sagemaker-ai-training-jobs/)

  • Como construir um sistema de tagging de produtos com IA usando o Amazon SageMaker serverless

    O problema com catálogos de produtos em escala

    Quem trabalha com e-commerce ou gestão de catálogos sabe bem o desafio: os dados raramente chegam limpos e estruturados. Nomes de produtos, descrições e caminhos de categoria vêm de fontes variadas, mudam constantemente e precisam de tags consistentes para que busca, recomendação e navegação funcionem bem. Aplicar essas tags manualmente em milhares de unidades de estoque (SKUs) é lento, caro e propenso a inconsistências.

    Uma alternativa comum é usar um modelo de linguagem de propósito geral com engenharia de prompts. Mas para um fluxo de tagging de alto volume, o objetivo é bem mais restrito: retornar os atributos corretos no esquema correto, de forma consistente. Quando a taxonomia é estável e o resultado pode ser avaliado programaticamente, customizar um modelo menor e especializado costuma ser uma escolha mais adequada — e mais econômica — do que pagar pelas capacidades amplas de um modelo de fronteira em cada requisição.

    Foi exatamente esse raciocínio que a AWS explorou em um guia técnico recente, mostrando como especializar o modelo Qwen3-8B para tagging de produtos usando o Amazon SageMaker com customização serverless de modelos. O fluxo combina Ajuste Fino Supervisionado (SFT) com Aprendizado por Reforço com Recompensas Verificáveis (RLVR) via Otimização de Política Relativa de Grupo (GRPO).

    Serverless vs. SageMaker Training Jobs tradicionais

    Antes de entrar no passo a passo, vale entender uma distinção importante. Existem exemplos anteriores do Qwen3-8B no repositório de exemplos do SageMaker que utilizam o Amazon SageMaker Training Jobs (SMTJ), com instâncias de GPU selecionadas pelo cliente e imagens de treinamento customizadas.

    O guia em questão usa uma abordagem diferente: o Amazon SageMaker Python SDK v3 com os trainers serverless (SFTTrainer e RLVRTrainer). Quando nenhuma configuração de computação é fornecida, o próprio SageMaker seleciona e libera a capacidade de treinamento — sem que o time precise gerenciar instâncias ou containers de treinamento. Para os notebooks oficiais, a AWS disponibiliza os exemplos de customização serverless do Amazon SageMaker Python SDK v3.

    Pré-requisitos e referências úteis

    Para reproduzir o fluxo, é necessário ter em mãos:

    • Permissões no Amazon SageMaker AI para gerenciar jobs de customização serverless, datasets e avaliadores no AI Registry, grupos de pacotes de modelo, endpoints e inferência assíncrona
    • Acesso de leitura e escrita no Amazon Simple Storage Service (Amazon S3) para catálogo-fonte, dados de treinamento transformados, artefatos de modelo e entradas/saídas de inferência assíncrona
    • Acesso ao Amazon Elastic Container Registry (Amazon ECR), necessário apenas se você construir e hospedar a imagem de inferência vLLM — o treinamento serverless não exige imagem customizada
    • Disponibilidade da customização serverless na região AWS escolhida para Qwen3-8B com SFT e RLVR
    • Cota de endpoint suficiente para ml.g6.2xlarge
    • Python 3.11+, AWS CLI v2, pandas, Amazon SageMaker Python SDK v3 e Docker (apenas para a imagem vLLM)
    • Credenciais via AWS IAM Identity Center ou outro fluxo de credenciais de curta duração — evite credenciais root e chaves de acesso de longa duração

    Referências úteis: modelos open-weight suportados e tipos de customização, Amazon SageMaker Processing e Amazon SageMaker Asynchronous Inference.

    Visão geral do fluxo

    O fluxo é dividido em três etapas bem separadas: preparação dos dados, customização serverless do modelo e inferência. O treinamento é serverless; a serving usa um endpoint provisionado. Em resumo:

    • Os dados são transformados uma vez em ativos versionados
    • O SFT ensina ao modelo o esquema de tagging
    • O RLVR otimiza o comportamento com base em uma recompensa determinística
    • O modelo final é hospedado para inferência assíncrona

    Passo 1: Preparação dos dados para SFT

    O ponto de partida é o Amazon Sales Dataset no Kaggle, com mais de 1.000 registros de produtos. Os campos utilizados são nome do produto, caminho de categoria e descrição. Em produção, o recomendado é usar o catálogo próprio da empresa com labels validadas.

    A transformação é executada como um Amazon SageMaker Processing job, garantindo que a preparação dos dados seja reproduzível e auditável. O script de processamento lê o arquivo-fonte do S3, normaliza textos e caminhos de categoria, remove linhas inutilizáveis, mapeia as informações para um esquema de tagging de nove categorias, divide os dados em treino e validação, e grava arquivos JSONL de volta no S3.

    Esses arquivos são registrados como datasets versionados no Amazon SageMaker AI Registry. Cada linha do JSONL de SFT contém um array messages:

    {"messages": [
      {"role": "system", "content": "Use the nine-category schema."},
      {"role": "user", "content": "Name: USB-C Cable | Category: Cables"},
      {"role": "assistant", "content": "1, Product Name: USB-C Cable\n...\n9, Occasion:"}
    ]}

    Os turnos de sistema e usuário formam o prompt; o turno final do assistente é o alvo supervisionado. O trainer consome o ARN do dataset versionado em vez de um canal de entrada convencional:

    from sagemaker.ai_registry.dataset import DataSet, CustomizationTechnique
    
    train_dataset = DataSet.create(
        name="amazon-sft-train",
        source="s3://amzn-s3-demo-bucket/sft/train.jsonl",
        customization_technique=CustomizationTechnique.SFT,
        wait=True,
    )
    TRAINING_DATASET_ARN = train_dataset.arn

    Passo 2: Ensinando o esquema ao Qwen3-8B com SFT serverless

    O SFTTrainer do SDK v3 submete o job de customização. Ele resolve a receita suportada para o Qwen3-8B, aplica Adaptação de Baixo Posto (LoRA), consome os ARNs dos datasets registrados e publica o resultado em um grupo de pacotes de modelo. Como nenhum argumento de computação é fornecido, o SageMaker usa capacidade de treinamento serverless gerenciada pela AWS:

    from sagemaker.train.common import TrainingType
    from sagemaker.train.sft_trainer import SFTTrainer
    
    trainer = SFTTrainer(
        model="huggingface-reasoning-qwen3-8b",
        training_type=TrainingType.LORA,
        model_package_group=model_package_group,
        training_dataset=TRAINING_DATASET_ARN,
        validation_dataset=VALIDATION_DATASET_ARN,
        sequence_length="4K",
        s3_output_path=S3_OUTPUT_PATH,
        role=ROLE_ARN,
        # No compute argument: use serverless model customization.
    )
    
    trainer.hyperparameters.max_epochs = 3
    trainer.hyperparameters.global_batch_size = 8
    trainer.hyperparameters.lora_rank = 16
    trainer.hyperparameters.merge_weights = True
    
    training_job = trainer.train(wait=True)
    SFT_MODEL_PACKAGE_ARN = training_job.output_model_package_arn

    O SFT é a etapa que gera o maior salto na aderência ao esquema, pois demonstra diretamente o comportamento de entrada/saída desejado. A próxima etapa usa RLVR para refinar os trade-offs de qualidade — não para reaprender o formato do zero.

    Passo 3: Convertendo exemplos supervisionados em dados para RLVR

    Após o SFT, o modelo já segue o esquema, mas ainda pode deixar de capturar atributos esperados ou incluir atributos desnecessários. O RLVR é adequado aqui porque a saída de tagging é estruturada e pode ser comparada a uma referência sem precisar de outro LLM como juiz.

    Para cada linha de SFT, os turnos de sistema e usuário vão para prompt, e o conteúdo final do assistente vai para reward_model.ground_truth:

    messages = json.loads(line)["messages"]
    rlvr_row = {
        "id": f"amazon-tagging-{split}-{index:05d}",
        "prompt": messages[:-1],
        "data_source": "amazon_tagging",
        "reward_model": {
            "style": "rule",
            "ground_truth": messages[-1]["content"],
        },
        "extra_info": {
            "answer": messages[-1]["content"],
            "split": split,
        },
    }

    Passo 4: Otimizando com RLVR e GRPO serverless

    O RLVR parte do pacote de modelo gerado pelo SFT e usa uma função de recompensa determinística para avaliar conjuntos de tags candidatas. O GRPO gera um grupo de completions para cada prompt — neste caso, oito candidatos com rollout_n=8. O avaliador pontua cada completion de forma independente, o GRPO calcula as vantagens relativas do grupo, e a regularização KL limita o desvio em relação ao modelo de referência SFT:

    from sagemaker.train.rlvr_trainer import RLVRTrainer
    
    training_dataset = DataSet.get(
        name="amazon-rlvr-train",
        sagemaker_session=sagemaker_session,
    )
    validation_dataset = DataSet.get(
        name="amazon-rlvr-eval",
        sagemaker_session=sagemaker_session,
    )
    
    trainer = RLVRTrainer(
        model=SFT_MODEL_PACKAGE_ARN,
        training_type=TrainingType.LORA,
        model_package_group=rlvr_model_package_group,
        custom_reward_function=REWARD_EVALUATOR_ARN,
        training_dataset=training_dataset,
        validation_dataset=validation_dataset,
        s3_output_path=S3_OUTPUT_PATH,
        role=ROLE_ARN,
        # No compute argument: use serverless model customization.
    )
    
    trainer.hyperparameters.rollout_n = 8
    trainer.hyperparameters.global_batch_size = 128
    trainer.hyperparameters.max_epochs = 4
    trainer.hyperparameters.learning_rate = 1e-5
    trainer.hyperparameters.max_prompt_length = 2048
    
    training_job = trainer.train(wait=False)

    Design da função de recompensa

    A recompensa é determinística: verifica o formato de saída das nove categorias e usa correspondência fuzzy com limiar de 0,5 para comparar as tags previstas com a referência. Isso torna o sinal de treinamento verificável sem precisar de um modelo juiz separado:

    Overall = 0,30 × recall + 0,30 × precision + 0,30 × accuracy + 0,05 × match_quality + 0,05 × formatting

    O cronograma progressivo de recompensa muda a ênfase ao longo do treinamento: nas iterações iniciais, o recall é favorecido para que o modelo aprenda a não perder atributos esperados; nas iterações posteriores, a precisão aumenta para que ele aprenda a evitar tags desnecessárias. Isso torna o trade-off de negócio explícito na recompensa, em vez de deixá-lo implícito no prompt.

    Passo 5: Deploy para inferência assíncrona

    Treinamento e inferência usam infraestruturas diferentes neste fluxo. O SFT e o RLVR usam a customização serverless do SageMaker. A serving usa um endpoint de Inferência Assíncrona do Amazon SageMaker em ml.g6.2xlarge — adequado para enriquecimento de catálogo em lote, onde as requisições podem ser enfileiradas e os resultados gravados no S3:

    sm_client.create_endpoint_config(
        EndpointConfigName=endpoint_config_name,
        ProductionVariants=[{
            "VariantName": "AllTraffic",
            "ModelName": model_name,
            "InitialInstanceCount": 1,
            "InstanceType": "ml.g6.2xlarge",
        }],
        AsyncInferenceConfig={
            "OutputConfig": {
                "S3OutputPath": "s3://amzn-s3-demo-bucket/async-output"
            }
        },
    )

    Para produção, a AWS recomenda adicionar uma política de autoescalonamento se o endpoint assíncrono precisar escalar com a profundidade da fila ou reduzir quando ocioso.

    Passo 6: Invocação e avaliação da qualidade de tagging

    As requisições são enviadas ao endpoint assíncrono em formato compatível com OpenAI. Para payloads maiores, o corpo da requisição é carregado no S3 e o URI é passado como InputLocation; o resultado é lido a partir do OutputLocation retornado. O guia usa temperature=0.1 e max_tokens=1024 para geração estável:

    response = sagemaker_runtime.invoke_endpoint_async(
        EndpointName=ENDPOINT_NAME,
        ContentType="application/json",
        InputLocation=input_location,
    )
    output_location = response["OutputLocation"]

    Resultados: o que cada etapa contribui

    Os resultados mostram que o SFT é o principal motor de qualidade, enquanto o GRPO faz um ajuste mais fino que favorece cobertura. A tabela abaixo resume os efeitos separados:

    • Baseline: Overall 0,354 | Recall 0,327 | Precision 0,397 | Accuracy 0,327
    • SFT: Overall 0,6827 | Recall 0,6689 | Precision 0,652 | Accuracy 0,6689
    • GRPO: Overall 0,6941 | Recall 0,703 | Precision 0,638 | Accuracy 0,686

    O SFT eleva o Overall de 0,354 para 0,6827 — esse é o efeito de ensinar diretamente ao modelo a tarefa e o esquema. O GRPO então faz um trade-off mais estreito: o Overall sobe de 0,6827 para 0,6941 e o recall de 0,6689 para 0,703, enquanto a precisão cai levemente de 0,652 para 0,638.

    Para um time de catálogo, isso significa que o GRPO é útil quando perder atributos válidos é mais custoso do que produzir algumas tags extras. Se tags desnecessárias forem mais prejudiciais downstream, os pesos de recompensa podem ser ajustados para favorecer a precisão.

    Vale destacar: essas métricas medem qualidade de tagging, não conversão de negócio diretamente. Use-as como sinais de seleção de modelo e valide o impacto em produção com medidas específicas do catálogo, como completude de atributos, taxa de correção manual, cobertura de busca/filtro e qualidade de recomendação downstream.

    Limpeza de recursos

    Após validar o fluxo, a AWS orienta excluir apenas os recursos criados para ele: endpoint, configuração de endpoint, modelo, Lambda de recompensa e avaliador, versões de dataset, grupos de pacotes de modelo, prefixos no S3 e a imagem de inferência no ECR. É importante confirmar os nomes dos recursos antes de excluir ativos compartilhados.

    Conclusão

    Tagging de produtos é um forte candidato à customização de modelos quando o esquema é estável, a carga de trabalho é repetitiva e a correção pode ser avaliada programaticamente. Neste exemplo, o Qwen3-8B aprende o formato de nove categorias via SFT serverless, e o RLVR com GRPO usa uma recompensa verificável para ajustar o equilíbrio entre cobertura e precisão.

    O resultado não é que todas as métricas melhoram igualmente — é que o design da recompensa torna o trade-off desejado explícito e mensurável. Um modelo de fronteira ainda é útil quando a tarefa muda com frequência, a taxonomia ainda está evoluindo ou o fluxo precisa de raciocínio mais amplo além de um esquema fixo de tagging. Para uma tarefa madura de alto volume, porém, a customização serverless do SageMaker oferece um caminho gerenciado para especializar um modelo open-weight sem precisar selecionar instâncias de treinamento ou manter containers de treinamento.

    Para reproduzir e estender o fluxo, a AWS disponibiliza os exemplos de customização serverless do Amazon SageMaker Python SDK v3 no GitHub, incluindo notebooks de SFT, RLVR, AI Registry e end-to-end. Para os conceitos do serviço e modelos suportados, consulte a documentação de customização de modelos do Amazon SageMaker AI.

    Fonte

    Build an AI-powered product tagging system with Amazon SageMaker serverless model customization (https://aws.amazon.com/blogs/machine-learning/build-an-ai-powered-product-tagging-system-with-amazon-sagemaker-serverless-model-customization/)

  • Analise eventos do CloudTrail com linguagem natural no Amazon Q Console

    O que foi anunciado

    A AWS anunciou uma nova integração entre o Amazon CloudTrail e o Amazon Q Console. A partir de agora, é possível investigar a atividade de uma conta AWS fazendo perguntas em linguagem natural — sem precisar escrever consultas ou analisar arquivos de log manualmente.

    Para quem não conhece, o Amazon CloudTrail é o serviço responsável por registrar todas as chamadas de Interfaces de Programação de Aplicações (APIs) realizadas em uma conta AWS. Ele é amplamente utilizado para auditoria de segurança, conformidade regulatória e resolução de problemas operacionais.

    O que muda na prática

    Com essa integração, o Amazon Q Console passa a funcionar como um assistente inteligente para análise de logs do CloudTrail. Em vez de construir filtros ou navegar manualmente pelos eventos, os times de segurança e operações podem simplesmente fazer perguntas diretamente ao console.

    A integração permite três grandes tipos de uso:

    • Verificação de configuração: é possível perguntar se as trilhas do CloudTrail estão devidamente configuradas, identificar lacunas na cobertura de logs e confirmar quais fontes de eventos de dados estão sendo monitoradas.
    • Investigação de segurança: o Amazon Q Console consegue responder perguntas como quem acessou uma função específica do Gerenciamento de Identidade e Acesso (IAM), quais alterações foram feitas na configuração de uma Nuvem Privada Virtual (VPC), ou se houve tentativas de acesso não autorizado na última semana.
    • Resolução de problemas operacionais: é possível perguntar quem criou ou excluiu determinados recursos, quais chamadas de API estão gerando erros, rastrear atividade a partir de um endereço IP específico, ou até entender por que a fatura do mês teve um pico inesperado.

    Como o Amazon Q consulta os dados

    O Amazon Q Console não responde com base em documentação genérica. Ele consulta diretamente as trilhas do CloudTrail, os grupos de logs associados no Amazon CloudWatch e os armazenamentos de dados de eventos — tudo dentro da própria conta AWS. Isso significa que as respostas são baseadas na atividade real da conta, tornando as investigações muito mais precisas e contextualizadas.

    Disponibilidade

    A integração está disponível em todas as regiões comerciais da AWS onde o Amazon Q Console é suportado. Para começar a usar, basta abrir o Amazon Q no Console de Gerenciamento da AWS e fazer perguntas sobre a configuração do CloudTrail ou sobre a atividade da conta.

    Para mais detalhes técnicos, a AWS disponibiliza a documentação oficial do AWS CloudTrail.

    Fonte

    Analyze your CloudTrail events using natural language in Amazon Q Console (https://aws.amazon.com/about-aws/whats-new/2026/09/cloudtrail-amazon-q-console/)

  • Automatizando Remediação de IAM no Pipeline de CI/CD com Privilégio Mínimo

    O problema real com permissões IAM em escala

    Manter o princípio de privilégio mínimo — conceder apenas as permissões estritamente necessárias — é fácil de defender em teoria, mas difícil de sustentar na prática. Quando equipes sobem aplicações na AWS, é comum conceder permissões mais amplas do que o necessário para agilizar a entrega, com a intenção de ajustar depois. Esse “depois” raramente acontece.

    Com o tempo, permissões se acumulam. Papéis do AWS Identity and Access Management (IAM) que precisavam de acesso amplo no início do projeto continuam com essas permissões muito depois de deixarem de ser necessárias. Alguns papéis chegam a cair em desuso completo. E revisões manuais não escalam — elas viram um backlog que cresce mais rápido do que qualquer equipe consegue resolver.

    A AWS publicou uma solução que trata esse problema de forma sistemática, conectando o AWS IAM Access Analyzer diretamente ao pipeline de CI/CD para automatizar a remediação. Vale entender como ela funciona.

    O que o IAM Access Analyzer já faz — e onde ele para

    O IAM Access Analyzer já resolve bem a parte de detecção: ele identifica permissões não utilizadas em papéis e usuários IAM, aponta ações que nunca foram executadas, serviços que nunca foram acessados e papéis que nunca foram assumidos. Para cada achado, ele gera uma política recomendada com as permissões em excesso removidas.

    O problema está no passo seguinte. Um engenheiro de segurança pode ajustar um papel diretamente no console hoje — mas se esse papel estiver definido em um template do AWS CloudFormation ou em uma stack do AWS Cloud Development Kit (AWS CDK), o próximo deploy restaura as permissões originais. A correção precisa acontecer onde o papel foi definido, e nem todo papel tem a mesma origem.

    Alguns papéis são gerenciados por infraestrutura como código (IaC). Outros foram criados manualmente pelo console. E alguns simplesmente não estão sendo usados. Cada cenário exige uma estratégia de remediação diferente.

    Visão geral da solução automatizada

    A solução proposta pela AWS conecta quatro capacidades: o IAM Access Analyzer para detecção e recomendações de política, o CloudTrail para identificar a origem de cada papel, o Amazon Bedrock para gerar código CDK e explicações em linguagem natural, e o pipeline de CI/CD existente para executar a remediação.

    O fluxo funciona assim: um evento agendado no Amazon EventBridge dispara diariamente uma função AWS Lambda orquestradora. Essa função consulta os achados ativos do IAM Access Analyzer, usa o CloudTrail para determinar como cada papel foi criado e, com base nessa classificação, roteia cada achado para um dos três caminhos de remediação.

    Imagem original — fonte: Aws

    Os três caminhos de remediação

    Papéis gerenciados por IaC — Pull Request automático

    Quando o CloudTrail indica que um papel foi criado via CloudFormation ou CDK, a automação identifica o repositório de origem (a partir de uma tag Repository definida no deploy) e abre um pull request nesse repositório. O PR inclui o código CDK gerado pelo Amazon Bedrock implementando exatamente a política recomendada pelo IAM Access Analyzer, um diff mostrando quais permissões estão sendo removidas, e uma explicação em linguagem natural do que muda e por quê.

    A equipe dona do papel revisa o PR pelo processo normal de code review. Após o merge, a correção é implantada de forma consistente por todo o pipeline de CI/CD existente. A correção passa a ser permanente — não um ajuste pontual que some no próximo deploy.

    Papéis criados manualmente — Issue com orientação

    Papéis criados pelo console da AWS ou pela AWS Command Line Interface (AWS CLI) não têm uma representação em código que possa ser atualizada programaticamente. Para esses casos, a automação cria uma issue no sistema de rastreamento de tarefas da equipe contendo a política recomendada pelo IAM Access Analyzer, um diff das mudanças, a explicação gerada pelo Amazon Bedrock e um guia passo a passo para importar o papel para IaC.

    Isso oferece um caminho imediato de remediação enquanto incentiva a adoção de IaC a longo prazo.

    Papéis sem uso — Desativação controlada

    Para papéis que nunca foram assumidos, a automação adota uma abordagem conservadora. Em vez de deletar diretamente, ela cria uma issue recomendando um fluxo de desativação em três etapas: anexar uma política de negação total (deny-all) ao papel, monitorar por 30 dias para confirmar que nenhuma carga de trabalho depende dele, e então deletar.

    Essa cautela é proposital. Deletar um papel é irreversível — você perde a política de confiança, as políticas anexadas e qualquer referência em políticas baseadas em recursos. A etapa de desativação suave serve como rede de segurança: se algo quebrar durante o período de monitoramento, remover a política deny-all restaura o acesso imediatamente.

    Detalhes técnicos relevantes

    Filtragem por exclusões

    Antes de processar qualquer achado, a função Lambda carrega uma configuração de exclusões para evitar que a automação tente remediar papéis que legitimamente precisam de permissões amplas. O exemplo abaixo mostra a estrutura dessa configuração:

    {
      "excluded_roles": [
        "arn:aws:iam::123456789012:role/BreakGlassRole",
        "arn:aws:iam::123456789012:role/ServiceLinkedRole"
      ],
      "excluded_permissions": [
        "iam:*",
        "sts:AssumeRole"
      ],
      "excluded_by_tag": {
        "NoRemediation": ["true"],
        "CriticalService": ["true"]
      },
      "min_unused_days": 30
    }

    O parâmetro min_unused_days evita falsos positivos com cargas de trabalho sazonais: um papel que executou um job trimestral há 25 dias não vai gerar um achado.

    Atribuição de origem via CloudTrail

    A função Lambda consulta o evento CreateRole no CloudTrail para classificar a origem de cada papel. Um papel criado via IaC tem o principal de serviço cloudformation.amazonaws.com como identidade. Um papel criado manualmente mostra o tipo IAMUser com agente de usuário console.amazonaws.com ou aws-cli/2.x.x. Essa distinção determina qual dos três caminhos de remediação será seguido.

    Geração de código com Amazon Bedrock

    Para papéis gerenciados por IaC, a função Lambda recupera a política recomendada pelo IAM Access Analyzer e envia ao Amazon Bedrock para gerar o código CDK em Python. É uma divisão clara de responsabilidades: o IAM Access Analyzer decide o que a política deve conter, e o Amazon Bedrock cuida de como isso se traduz em código CDK pronto para produção.

    O código gerado passa por uma etapa de validação antes de entrar em qualquer PR: a função Lambda compila o Python para verificar erros de sintaxe e confirma que os padrões CDK necessários estão presentes. Se a validação falhar, o achado é registrado como erro em vez de gerar um PR com código quebrado.

    A solução usa o modelo Anthropic Claude Sonnet no Amazon Bedrock para geração de código (onde precisão é crítica) e o Claude Haiku para as explicações em linguagem natural (onde velocidade e custo importam mais). Os IDs dos modelos são variáveis de ambiente configuráveis.

    Suporte a múltiplas contas

    A solução funciona tanto em modo de conta única quanto em modo organizacional. No modo organizacional, um analisador ORGANIZATION_UNUSED_ACCESS implantado em uma conta administradora delegada gera achados de todas as contas-membro. A função Lambda extrai o ID da conta do Nome de Recurso da Amazon (ARN) de cada achado e usa um papel entre contas para consultar o CloudTrail e as APIs do IAM na conta de origem.

    Controles operacionais e escalabilidade

    Na primeira execução em ambientes grandes, o volume de achados pode ser significativo — especialmente com um analisador organizacional. Dois controles de limitação evitam sobrecarregar as equipes: max_findings_per_run (padrão: 50) limita o total de achados de permissões não usadas processados por execução da Lambda, e MAX_UNUSED_ROLE_ISSUES (padrão: 10) limita as issues de papéis sem uso por execução. Os achados restantes são processados na próxima execução agendada.

    Para papéis sensíveis — com permissões administrativas ou acesso a dados críticos — é possível configurar o campo approval_required_for_tags nas exclusões. Papéis com essas tags geram issues para revisão manual em vez de PRs automáticos, independentemente de serem gerenciados por IaC.

    Após cada execução, a função Lambda publica métricas no Amazon CloudWatch: total de achados processados, papéis classificados como IaC, criados manualmente ou sem uso, PRs e issues criados, e erros de processamento. Acompanhar a proporção entre papéis IaC e manuais ao longo do tempo é um indicador natural da maturidade de governança do ambiente.

    Modo dry-run e implantação

    Antes de criar PRs e issues reais, é possível executar a automação em modo dry-run configurando "dry_run": true na configuração de CI/CD ou definindo a variável de ambiente CI_CD_PLATFORM como dryrun. Nesse modo, a função processa os achados e classifica os papéis, mas apenas registra o que criaria — sem fazer chamadas reais às APIs do repositório. É o ponto de partida recomendado para validar a acurácia da classificação e ajustar as exclusões antes de ir ao ar.

    A solução é distribuída como dois stacks CDK. O repositório GitHub com o código-fonte completo inclui os stacks, templates de configuração e instruções detalhadas de implantação para GitHub e GitLab, além do guia para configuração organizacional entre contas.

    Considerações de custo

    A solução utiliza Lambda (custo mínimo com execução diária), CloudTrail (geralmente já habilitado), IAM Access Analyzer (cobrado por papel ou usuário IAM analisado por mês para o analisador de acesso não utilizado) e Amazon Bedrock (pagamento por token para geração de código e explicações). O uso de tokens do Amazon Bedrock é a maior variável de custo, escalando com o número de achados processados por dia e a complexidade de cada política. Em implantações organizacionais, o custo do IAM Access Analyzer escala com o número de papéis analisados em todas as contas-membro.

    Conclusão

    A solução apresentada pela AWS transforma a remediação de permissões IAM de uma tarefa periódica de compliance em uma prática operacional contínua. Ao conectar os achados do IAM Access Analyzer ao pipeline de CI/CD, a correção de permissões excessivas passa a fazer parte do fluxo normal de revisão de código — o mesmo processo que as equipes já seguem.

    A abordagem em três caminhos é realista: papéis IaC recebem PRs com código pronto para produção, papéis criados manualmente recebem issues acionáveis com orientação para migrar para IaC, e papéis sem uso seguem um plano de desativação controlada que protege contra interrupções acidentais. Com o tempo, a proporção de papéis gerenciados por código aumenta e a remediação se torna cada vez mais automatizada.

    A recomendação é começar com um piloto: escolher 10 a 20 papéis de não-produção, rodar em modo dry-run, revisar os resultados de classificação, ajustar as exclusões e só então habilitar a remediação real. O código-fonte completo está disponível no repositório GitHub.

    Fonte

    Operationalizing least privilege: Automate IAM remediation through your CI/CD pipeline (https://aws.amazon.com/blogs/security/operationalizing-least-privilege-automate-iam-remediation-through-your-ci-cd-pipeline/)

  • Amazon SageMaker AI agora suporta listas de preferência de instâncias para jobs de treinamento e processamento

    O que mudou no SageMaker AI

    A AWS anunciou, em setembro de 2026, uma novidade importante no Amazon SageMaker AI: o suporte a listas de preferência de instâncias para jobs de treinamento e processamento. A mudança torna mais ágil e menos trabalhosa a tarefa de encontrar capacidade computacional disponível para cargas de trabalho de Inteligência Artificial (IA).

    O problema que existia antes

    Até então, ao submeter um job no SageMaker, era necessário informar um único tipo de instância e aguardar até que aquela configuração específica ficasse disponível. Em períodos de alta demanda — especialmente para GPUs muito procuradas — os tempos de espera podiam ser imprevisíveis.

    Para contornar isso, muitas equipes precisavam construir lógicas complexas de retry ou submeter múltiplos jobs simultâneos com tipos de instância diferentes, apostando em qual seria atendido primeiro. Uma solução funcional, mas claramente trabalhosa e pouco elegante.

    Como funciona a nova abordagem

    Com as listas de preferência, agora é possível informar uma lista priorizada de tipos de instância aceitos pelo workload. O SageMaker percorre essa lista e inicia o job na primeira configuração com capacidade disponível.

    Por exemplo, uma lista pode conter como primeira opção duas instâncias do tipo ml.g6.48xlarge ou, como alternativa, quatro instâncias do tipo ml.g5.48xlarge. O serviço avalia as opções na ordem definida e provisiona o ambiente assim que encontra disponibilidade.

    Além disso, é possível configurar a origem da capacidade — seja sob demanda (on-demand) ou a partir dos SageMaker Flexible Training Plans reservados — tudo dentro da mesma submissão de job.

    Por que isso importa na prática

    Muitos workloads de treinamento, ajuste fino (fine-tuning) e processamento de dados funcionam bem em diferentes tipos ou tamanhos de instância. A nova funcionalidade reconhece essa realidade e elimina a necessidade de workarounds manuais, permitindo que os jobs comecem mais cedo sem intervenção adicional da equipe.

    O resultado é menos tempo ocioso esperando por um tipo específico de instância e mais eficiência no uso dos recursos disponíveis — especialmente relevante em momentos de pico de demanda por GPUs.

    Disponibilidade e como usar

    O recurso está disponível hoje em todas as regiões da AWS onde o SageMaker está presente, podendo ser acessado via CLIs, APIs, SDKs e pelo Console UI do SageMaker. Para mais detalhes técnicos, a AWS disponibiliza a documentação oficial e um blog de lançamento com informações adicionais.

    Fonte

    Amazon SageMaker AI now supports instance preference lists for training and processing jobs (https://aws.amazon.com/about-aws/whats-new/2026/09/amazon-sagemaker-training-processing-instance-pref-lists/)

  • Automatize o Reabastecimento com MMF, Databricks Genie e Amazon Quick

    O problema que essa solução resolve

    No varejo, uma previsão de demanda tem prazo de validade curto. Até o momento em que um planejador exporta o relatório, cruza com a disponibilidade dos fornecedores e percorre dezenas de milhares de Unidades de Manutenção de Estoque (SKUs, do inglês Stock Keeping Units), os produtos mais vendidos já esgotaram. Por muito tempo, o gargalo era a previsão em si. Com os modelos de fundação, esse problema foi resolvido: hoje é possível prever a demanda de um catálogo inteiro sem ajuste por item.

    O gargalo se moveu para outro lugar: o espaço entre uma boa previsão e o pedido de compra gerado a partir dela. Esse gap persiste porque a previsão e a ação vivem em sistemas diferentes — a previsão fica em uma plataforma de dados governada, a disponibilidade do fornecedor fica em um feed operacional separado, e o responsável por fazer o pedido não tem acesso a nenhum dos dois.

    Para resolver isso, a AWS publicou um walkthrough técnico que descreve a construção de um loop que detecta picos de demanda, decide qual fornecedor pode atender e faz o pedido sem intervenção humana, escalando para revisão humana apenas quando nenhuma regra se aplica. A solução roda sobre Databricks e Amazon Quick, e o repositório de acompanhamento contém tudo o que é necessário para reproduzi-la.

    As quatro etapas da solução

    A arquitetura é dividida em quatro estágios. O Databricks cuida da previsão, e o Amazon Quick executa os três estágios seguintes em loop, de acordo com um agendamento:

    • Prever (Forecast): o Many Model Forecasting (MMF) do Databricks serve o modelo Chronos-2 para prever a demanda dos próximos 7 dias para cada SKU.
    • Detectar (Detect): um Databricks Genie Agent identifica os SKUs em pico de demanda — definidos como aqueles cuja média dos próximos 7 dias é pelo menos 1,5 vez a média dos 14 dias anteriores, e apenas para SKUs cuja média dos 14 dias anteriores seja de pelo menos 1 (um piso que elimina ruído de baixo volume).
    • Decidir (Decide): o Amazon Quick cruza cada SKU em pico com a disponibilidade em tempo real dos fornecedores armazenada no Amazon S3 Tables — uma capacidade do Amazon Simple Storage Service (Amazon S3) — e seleciona o fornecedor mais barato que consiga cobrir a demanda.
    • Agir (Act): o Amazon Quick Flows emite um pedido de compra rotineiro via uma API de Pedidos de Fornecedor, ou abre um ticket de revisão humana quando nenhum fornecedor individual consegue cobrir o pico.

    Como as peças se encaixam

    O Amazon Quick funciona como o elo central da solução — é o único componente que toca os dois mundos. Ele acessa a previsão por meio do Databricks Genie Agent via Protocolo de Contexto de Modelo (MCP, do inglês Model Context Protocol), puxa o feed de fornecedores do S3 Tables e chama a API de Pedidos por meio de um conector OpenAPI, unindo tudo por uma chave de produto compartilhada no momento da decisão — sem copiar dados para um único data warehouse.

    O Databricks produz a inteligência. O Amazon Quick age sobre ela.

    Pré-requisitos e configuração

    Tudo roda a partir do terminal local com as seguintes ferramentas: Databricks CLI 0.299.0+, AWS CLI 2.36.2+, jq 1.7 e uv (ou Python 3.11) para o carregador do feed de fornecedores.

    Dois pré-requisitos no nível de conta precisam ser confirmados antes de começar: o usuário do Amazon Quick precisa ter o papel de Autor ou Autor Pro (os conectores MCP e OpenAPI exigem isso), e a identidade no Databricks precisa de permissão CREATE CATALOG no metastore.

    Os valores específicos de cada conta são lidos de um arquivo .supply-chain-automation-env, criado uma vez e carregado com source. Dois scripts cobrem todos os passos automatizáveis via CLI: scripts/setup_databricks.sh e scripts/setup_aws.sh. Ambos pausam nos quatro passos que exigem o console: os dois conectores de ação, a concessão de acesso ao S3 Tables e o dataset.

    Um detalhe importante de região: a solução deve ser implantada em uma região que suporte as capacidades agentivas do Amazon Quick (conectores de ação, spaces e flows). Consulte a documentação para a lista atualizada.

    Construindo o cérebro de previsão no Databricks

    A parte de inteligência é inteiramente no Databricks, em três movimentos: executar os notebooks de previsão, expor os resultados via Genie Agent e registrar um aplicativo OAuth para que o Amazon Quick possa acessar esse agente.

    Executar os notebooks

    Os notebooks 01 e 02 vêm do exemplo fresh_retail_net do acelerador MMF, que serve a previsão zero-shot do Chronos-2 em todo o catálogo. Sobre essas tabelas, o repositório adiciona dois notebooks: o 04 (views do Genie) e o 03 (dimensões). Ao final, o catálogo mmf conterá seis objetos que o Genie Agent consultará:

    • daily_sales_raw e demand_train (notebook 01)
    • scoring_output_mv e evaluation_metrics_mv (notebook 04)
    • product_dim e location_dim (notebook 03)
    ./scripts/setup_databricks.sh notebooks # importa e executa 04 e depois 03 (execute 01 e 02 do acelerador primeiro)

    Criar o Genie Agent

    Esta etapa transforma uma tabela de previsões em algo que um usuário de negócios pode questionar em linguagem natural. A definição completa do agente está em genie/genie_space.json: as seis tabelas, as instruções de detecção de pico e uma query de exemplo fixada para garantir respostas determinísticas em execuções agendadas.

    ./scripts/setup_databricks.sh genie

    Registrar o aplicativo OAuth

    O Amazon Quick acessa o Genie Agent via MCP usando OAuth de três etapas (delegado ao usuário). Genie queries são executadas como a pessoa que autorizou a conexão. Esta etapa registra um aplicativo OAuth confidencial no Databricks e retorna um Client ID e um segredo para o conector. O segredo deve ser copiado imediatamente, pois o Databricks o exibe apenas uma vez.

    ./scripts/setup_databricks.sh oauth

    Feed de fornecedores e API de Pedidos

    O lado de ação precisa de duas coisas que a previsão não fornece: uma visão em tempo real do que os fornecedores podem enviar, e um sistema para onde enviar o pedido.

    O feed de fornecedores é um feed operacional independente no Amazon S3 Tables (Apache Iceberg). O carregador gera três fornecedores por produto e cidade em uma janela de 7 dias, produzindo 63.861 linhas de forma determinística. Um conjunto de fornecedores é deliberadamente sub-abastecido para exercitar o caminho de revisão humana.

    ./scripts/setup_aws.sh feed

    A API de Pedidos de Fornecedor é composta por Amazon API Gateway na frente de AWS Lambda e Amazon DynamoDB, com a chave da API armazenada no AWS Secrets Manager. O fluxo a chama para colocar pedidos (POST /orders) ou abrir tickets (POST /tickets). As duas tabelas do DynamoDB são onde os resultados são lidos.

    ./scripts/setup_aws.sh order-api

    Configurando o Amazon Quick

    Com o cérebro e os sistemas operacionais prontos, o restante da construção vive no Amazon Quick: a conta, os dois conectores (para o Genie Agent e para a API de Pedidos), a fonte de dados, o dataset e o space que expõem o feed de fornecedores.

    Conector Genie Agent (conector MCP)

    O Amazon Quick acessa o Databricks Genie Agent por meio de um conector de ação MCP. Os conectores de ação são criados no console do Amazon Quick. Siga os passos de conectores de ação do Amazon Quick, escolha autenticação de usuário (OAuth) e forneça os valores gerados nas etapas anteriores, incluindo o endpoint MCP do Genie, o Client ID e o segredo OAuth.

    Conector da API de Pedidos (conector OpenAPI)

    O fluxo submete pedidos de compra e abre tickets chamando a API de Pedidos por meio de um conector de ação OpenAPI. Siga os passos de conectores de ação do Amazon Quick e forneça o arquivo order-api/supplier-order-api-openapi-flows.json do repositório. O conector registra duas ações de escrita: SubmitOrder (POST /orders) e CreateTicket (POST /tickets).

    Dataset de fornecedores (S3 Tables)

    O Amazon QuickSight — a capacidade de business intelligence do Amazon Quick — lê o feed de fornecedores do S3 Tables em modo Direct Query, de modo que cada execução vê a ingestão mais recente, sem cache. Primeiro, é necessário conceder ao Quick acesso ao bucket no console. Em seguida, o script cria a fonte de dados S3 Tables:

    ./scripts/setup_aws.sh datasource

    O dataset é criado no console do Quick escolhendo Direct Query (não SPICE) para manter o feed atualizado. O procedimento completo está em Criando um dataset usando Amazon S3 Tables.

    Space de fornecedores e montagem do fluxo autônomo

    O passo de busca de fornecedores no fluxo não lê o dataset diretamente — ele lê um Quick Space ao qual o dataset pertence. O script cria esse space e adiciona o dataset supplier_availability a ele:

    ./scripts/setup_aws.sh space

    Com tudo no lugar, o fluxo é criado:

    ./scripts/setup_aws.sh flow

    A estrutura do fluxo (definida em flow/flow_definition.json) é:

    • Detectar Picos de Demanda: consulta o Genie Agent pelos SKUs em pico.
    • Processamento de SKU (loop): para cada SKU em pico:
      • Buscar Fornecedores: consulta o space S3 Tables.
      • Selecionar Melhor Fornecedor: o mais barato cuja capacidade de 7 dias cobre a previsão de 7 dias. Se nenhum cobrir, marca como exceção.
      • Emitir Pedido: executa apenas quando a decisão é rotineira.
      • Abrir Ticket: executa apenas quando é uma exceção.
      • Gerar Resumo do SKU.
    • Gerar Relatório Consolidado.

    Validação

    Com os dados de amostra do repositório, uma execução produz seis SKUs em pico, cinco pedidos rotineiros e um ticket de exceção. A exceção é o produto 122 (Nordeste) — o SKU deliberadamente sub-abastecido no feed, onde nenhum fornecedor individual cobre a demanda de 7 dias. Os cinco pedidos rotineiros são os produtos 261, 191, 299_300, 450_300 e 4. Os resultados podem ser confirmados no DynamoDB:

    # 5 pedidos: produto, fornecedor e quantidade
    aws dynamodb scan --table-name supplier-order-api-orders --region "$REGION" --profile "$AWS_PROFILE_SC" \
      --query "Items[].{product:retailer_product_id.S, supplier:supplier_id.S, qty:quantity.S}" --output table
    
    # 1 ticket: o SKU sub-abastecido
    aws dynamodb scan --table-name supplier-order-api-tickets --region "$REGION" --profile "$AWS_PROFILE_SC" \
      --query "Items[].{product:retailer_product_id.S, region:region.S}" --output table

    Decisões de design que tornam a solução operacionalmente sólida

    Conectar os componentes é a parte direta. Algumas escolhas separam um loop que pode rodar continuamente de uma demo que funciona uma vez — e elas se generalizam além de supply chain:

    • Coordenar fontes independentes, não consolidar. A previsão, o feed de fornecedores e a API de Pedidos permanecem em seus próprios sistemas, unidos por uma chave de produto compartilhada apenas no momento da decisão. Sem pipeline de ETL (Extração, Transformação e Carga) para quebrar, sem job de sincronização para monitorar, sem bugs de dados desatualizados.
    • Fixar a query de pico para que a automação seja repetível. O Genie regenera SQL por pergunta — certo para um humano explorando dados, errado para um job agendado que precisa da mesma resposta toda vez. Por isso, a definição do Genie fixa a query de pico e declara explicitamente o piso numérico (média de vendas reais dos últimos 14 dias de pelo menos 1), garantindo que seis SKUs em pico retornem como seis toda vez.
    • Graduar a autonomia pela decisão. O loop automatiza a maioria previsível e escala o restante: quando um único fornecedor cobre a previsão de 7 dias, o pedido se envia sozinho. Quando nenhum consegue, o SKU vira um ticket.
    • Não amarrar o design a um único modelo. O loop precisa de uma previsão probabilística que se generalize em um catálogo grande sem ajuste por item. O Chronos-2 entrega isso hoje, mas nada no downstream está amarrado a ele — o loop envelhece bem à medida que os modelos melhoram.

    Limpeza dos recursos

    Para evitar cobranças contínuas, o script cleanup/cleanup.sh descobre e remove toda a solução em ordem segura de dependências: o fluxo, space, dataset, fonte de dados e conectores do Quick; o Genie Agent, SQL warehouse e catálogo mmf do Databricks; o stack da API de Pedidos (Lambda, DynamoDB e secret); e o bucket S3 Tables. Recursos de nível de conta, como a assinatura do Quick e o aplicativo OAuth do Databricks, são preservados por requererem confirmação explícita.

    ./cleanup/cleanup.sh

    Conclusão

    A solução descrita pela AWS entrega um loop de reabastecimento que roda sem um humano no comando: as previsões do Chronos-2 alimentam um Genie Agent que sinaliza picos, e o Amazon Quick reconcilia cada um deles contra o feed de disponibilidade de fornecedores. O Amazon Quick Flows então faz o pedido ou escala a exceção, e o loop inteiro pode ser colocado em um agendamento.

    O padrão se generaliza além do varejo: sempre que uma previsão em um sistema precisa ser reconciliada com dados operacionais em outro e transformada em ação, essa estrutura detectar-decidir-agir se aplica. O repositório de acompanhamento contém tudo para reproduzir a solução e adaptá-la ao seu domínio.

    Fonte

    Automate replenishment with MMF, Databricks Genie, and Amazon Quick (https://aws.amazon.com/blogs/machine-learning/automate-replenishment-with-mmf-databricks-genie-and-amazon-quick/)

  • Modelos Qwen3.6-35B-A3B-NVFP4 e Wan2.1-T2V-1.3B-Diffusers chegam ao Amazon SageMaker JumpStart

    Novos modelos de fundação disponíveis no SageMaker JumpStart

    A AWS expandiu o catálogo de modelos de fundação do Amazon SageMaker JumpStart com a adição de dois novos modelos: o Qwen3.6-35B-A3B-NVFP4, da NVIDIA em parceria com a Alibaba, e o Wan2.1-T2V-1.3B-Diffusers, da Alibaba. Os dois modelos atendem a necessidades bastante distintas dentro do ecossistema de Inteligência Artificial (IA) empresarial e já estão disponíveis para implantação na infraestrutura da AWS.

    O que cada modelo oferece

    Qwen3.6-35B-A3B-NVFP4 — Raciocínio de longo contexto e codificação agêntica

    Este modelo é uma variante quantizada do Qwen3.6-35B-A3B da Alibaba, otimizada pela NVIDIA por meio do seu framework ModelOpt com precisão NVFP4. Ele foi projetado para tarefas de codificação agêntica, raciocínio multimodal e compreensão de contextos longos.

    Do ponto de vista arquitetural, trata-se de um modelo do tipo Mistura de Especialistas (MoE — Mixture-of-Experts): possui 35 bilhões de parâmetros no total, mas apenas 3 bilhões são ativados por token — utilizando 8 dos 256 especialistas disponíveis. Essa abordagem reduz significativamente o consumo de memória sem abrir mão do desempenho.

    A janela de contexto nativa suporta 262 mil tokens, com possibilidade de expansão para aproximadamente 1 milhão de tokens via escalonamento YaRN. O modelo também preserva o raciocínio entre turnos de conversa, suporta predição de múltiplos tokens e chamadas de ferramentas (tool calling), tornando-o adequado para pipelines de agentes com múltiplas etapas.

    Wan2.1-T2V-1.3B-Diffusers — Geração de vídeo a partir de texto

    O segundo modelo foca em geração de vídeo a partir de texto (T2V — Text-to-Video) e foi desenvolvido para rodar até em hardware de consumo. Com apenas 1,3 bilhão de parâmetros, ele é construído sobre o paradigma de transformador de difusão e utiliza um Autoencoder Variacional de Vídeo (VAE — Video Variational Autoencoder) proprietário.

    O modelo consegue gerar clipes de vídeo de alta qualidade e fisicamente consistentes a partir de prompts de texto, exigindo apenas 8,19 GB de VRAM. Em uma GPU RTX 4090, é capaz de produzir um vídeo de 5 segundos em resolução 480p em aproximadamente 4 minutos — posicionando-o como um dos modelos open-source de geração de vídeo mais acessíveis disponíveis atualmente.

    Como acessar e implantar os modelos

    Com o SageMaker JumpStart, a implantação de qualquer um desses modelos pode ser feita com poucos cliques, diretamente pelo catálogo de modelos no console do SageMaker. Também é possível utilizar o SDK Python do SageMaker para realizar o deploy programaticamente na conta AWS desejada.

    Para quem quiser se aprofundar nos detalhes de implantação e uso de modelos de fundação no SageMaker JumpStart, a AWS disponibiliza a documentação oficial do Amazon SageMaker JumpStart como ponto de partida.

    Fonte

    Qwen3.6-35B-A3B-NVFP4 and Wan2.1-T2V-1.3B-Diffusers models now available on Amazon SageMaker JumpStart (https://aws.amazon.com/about-aws/whats-new/2026/01/qwen3.6-35b-a3b-nvfp4-wan2.1-t2v-1.3B-diffusers-jumpstart/)

  • Modelos Gemma-4-31B-it-assistant e Gemma-4-31B-IT-NVFP4 chegam ao Amazon SageMaker JumpStart

    Novos modelos Gemma 4 disponíveis no SageMaker JumpStart

    A AWS anunciou a disponibilidade de dois novos modelos no Amazon SageMaker JumpStart: o Gemma-4-31B-it-assistant, desenvolvido pelo Google DeepMind, e o Gemma-4-31B-IT-NVFP4, uma variante otimizada pela NVIDIA. Com essa adição, o portfólio de modelos fundacionais disponíveis para clientes AWS se expande com opções de alto desempenho baseadas na arquitetura densa de 31 bilhões de parâmetros do Gemma 4.

    Os dois modelos foram projetados para atender a diferentes necessidades em cargas de trabalho empresariais — um focado em capacidade máxima e multimodalidade, e o outro em eficiência de memória e velocidade de inferência.

    Conheça cada modelo

    Gemma-4-31B-it-assistant

    Esta é a variante ajustada para assistente do modelo principal de 31 bilhões de parâmetros do Google. Ela foi construída para tarefas de raciocínio multimodal, programação e fluxos de trabalho agênticos — ou seja, sistemas de Inteligência Artificial (IA) que tomam decisões e executam ações de forma autônoma.

    Entre suas características técnicas, destacam-se:

    • Suporte a entradas de texto e imagem (incluindo vídeo como sequências de quadros), com saída em texto
    • Janela de contexto de 256 mil tokens
    • Suporte a mais de 140 idiomas
    • Mecanismo de atenção híbrido, combinando atenção local por janela deslizante e atenção global completa
    • Chamada de função nativa para construção de agentes autônomos

    O modelo ocupa a 3ª posição entre os modelos abertos no ranking de texto do Arena AI, superando modelos até 20 vezes maiores em tamanho.

    Gemma-4-31B-IT-NVFP4

    Esta variante entrega as mesmas capacidades do Gemma 4 31B com um consumo de memória significativamente menor. Ela foi quantizada com o framework ModelOpt da NVIDIA para precisão de 4 bits FP4, o que resulta em:

    • Uso de memória de aproximadamente 18,5 GB — 68% menor que o modelo base
    • Inferência aproximadamente 2,5 vezes mais rápida
    • Retenção de 97 a 99% da qualidade do modelo original

    É a opção recomendada para implantações em produção com alto volume de requisições e foco em custo-benefício, compatível com GPUs NVIDIA RTX, DGX Spark e GPUs de data center.

    Como implantar pelo SageMaker JumpStart

    Com o SageMaker JumpStart, a AWS permite que qualquer um desses modelos seja implantado com poucos cliques. Para começar, basta acessar o catálogo de modelos do SageMaker JumpStart pelo console do SageMaker, ou utilizar o SDK Python do SageMaker para realizar a implantação diretamente na sua conta AWS.

    Para mais detalhes sobre como implantar e utilizar modelos fundacionais no SageMaker JumpStart, consulte a documentação oficial do Amazon SageMaker JumpStart.

    Fonte

    Gemma-4-31B-it-assistant and Gemma-4-31B-IT-NVFP4 models now available on Amazon SageMaker JumpStart (https://aws.amazon.com/about-aws/whats-new/2026/01/gemma-4-31b-it-assistant-gemma-4-31b-it-nvfp4-jumpstart/)

  • Modelos Ministral-3-3B e Ministral-3-8B da Mistral AI chegam ao Amazon SageMaker JumpStart

    Novos modelos compactos da Mistral AI disponíveis no JumpStart

    A AWS anunciou a disponibilidade dos modelos Ministral-3-3B-Instruct-2512 e Ministral-3-8B-Instruct-2512, da Mistral AI, no Amazon SageMaker JumpStart. A chegada desses dois modelos amplia o portfólio de modelos de fundação acessíveis aos clientes AWS, com foco em cenários de borda (edge) e ambientes com recursos computacionais limitados.

    Ambos pertencem à família Ministral 3 e combinam capacidades de visão computacional com processamento de linguagem natural em formatos compactos — uma combinação interessante para equipes que precisam de IA de alta performance sem depender de infraestrutura pesada.

    O que cada modelo oferece

    Ministral-3-3B-Instruct-2512 — leveza com visão multimodal

    Este modelo foi projetado para implantações ultra-leves em ambientes de borda. Ele combina um modelo de linguagem de 3,4 bilhões de parâmetros com um encoder de visão de 0,4 bilhões de parâmetros, cabendo em apenas 8 GB de VRAM no formato FP8. Entre os destaques técnicos:

    • Janela de contexto de 256 mil tokens
    • Análise de imagens (visão multimodal)
    • Seguimento de instruções em múltiplos idiomas — inglês, francês, espanhol, alemão, chinês, japonês, coreano, árabe e outros
    • Alta aderência a prompts de sistema
    • Chamada nativa de funções com saída estruturada em JSON
    • Licença Apache 2.0

    Ministral-3-8B-Instruct-2512 — capacidade de ponta em formato compacto

    O modelo de 8 bilhões de parâmetros entrega desempenho comparável ao Mistral Small 3.2 24B — um modelo muito maior — em um formato bem mais enxuto. Ele reúne um modelo de linguagem de 8,4 bilhões de parâmetros com o mesmo encoder de visão de 0,4 bilhões, ocupando 12 GB de VRAM em FP8. Seus diferenciais incluem:

    • Padrão de atenção deslizante intercalada (interleaved sliding-window attention) para inferência mais rápida e eficiente em memória
    • Mesmas capacidades de visão, multilinguismo, agentes e chamada de funções do modelo 3B
    • Raciocínio e geração de texto com desempenho superior ao irmão menor

    Como acessar os modelos no SageMaker JumpStart

    Com o SageMaker JumpStart, a AWS permite que qualquer um desses modelos seja implantado em poucos cliques, diretamente pelo catálogo de modelos no console do SageMaker. Também é possível usar o SDK Python do SageMaker para fazer o deploy na sua conta AWS de forma programática.

    Para aprender mais sobre como implantar e utilizar modelos de fundação no SageMaker JumpStart, a AWS disponibiliza a documentação oficial do Amazon SageMaker JumpStart.

    Fonte

    Ministral-3-3B-Instruct-2512 and Ministral-3-8B-Instruct-2512 models now available on Amazon SageMaker JumpStart (https://aws.amazon.com/about-aws/whats-new/2026/01/ministral-3-3b-instruct-2512-ministral-3-8B-Instruct-2512-jumpstart/)

  • Modelos granite-speech-4.1-2b, kanana-2-30b-a3b-instruct e OpenFold3 chegam ao Amazon SageMaker JumpStart

    Três novos modelos especializados chegam ao SageMaker JumpStart

    A AWS anunciou a disponibilidade de três novos modelos de fundação no Amazon SageMaker JumpStart: o granite-speech-4.1-2b da IBM, o kanana-2-30b-a3b-instruct da Kakao e o OpenFold3 do OpenFold Consortium. A adição amplia o portfólio da plataforma com capacidades especializadas em reconhecimento de fala multilíngue, IA agêntica bilíngue e predição de estruturas biomoleculares.

    Conheça cada modelo

    granite-speech-4.1-2b — Reconhecimento de fala multilíngue da IBM

    Desenvolvido pela IBM, o granite-speech-4.1-2b foi criado especificamente para Reconhecimento Automático de Fala (ASR) multilíngue e Tradução de Fala Bidirecional (AST), com suporte a inglês, francês, alemão, espanhol, português e japonês. Apesar de compacto — apenas 2 bilhões de parâmetros —, o modelo entrega uma taxa de erro de palavras de 5,33% com um fator de tempo real de aproximadamente 231, posicionando-o entre os modelos ASR mais eficientes de sua categoria. Distribuído sob a licença Apache 2.0, ele se integra a fluxos de trabalho corporativos de voz para transcrição, tradução e processamento de áudio em escala.

    kanana-2-30b-a3b-instruct — IA agêntica bilíngue da Kakao

    Criado pela Kakao, o kanana-2-30b-a3b-instruct se destaca em seguimento de instruções bilíngue coreano-inglês e em fluxos de trabalho de IA agêntica. Sua arquitetura combina Atenção Latente Multi-cabeça (MLA) e Mistura de Especialistas (MoE), ativando apenas 3 bilhões dos 30 bilhões de parâmetros totais a cada passagem direta — o que garante alta eficiência de processamento. O modelo passou por ajuste fino supervisionado e aprendizado por reforço, suporta até 128 mil tokens via escalonamento YaRN e foi projetado para atuar como um colaborador de IA capaz de entender contexto e agir de forma proativa.

    OpenFold3 — Predição de estruturas biomoleculares

    Desenvolvido pelo OpenFold Consortium em parceria com o AlQuraishi Lab da Universidade de Columbia, o OpenFold3 realiza predição de estruturas de complexos biomoleculares em nível atômico completo, abrangendo proteínas, DNA, RNA e ligantes de pequenas moléculas. Baseado em difusão, o modelo vai além da predição de proteínas individuais para modelar complexos de múltiplas cadeias e interações biomoleculares heterogêneas. Suas aplicações incluem design de fármacos assistido por computador e pesquisa acadêmica e farmacêutica.

    Como acessar os modelos no SageMaker JumpStart

    Com o SageMaker JumpStart, qualquer um desses modelos pode ser implantado com poucos cliques diretamente pelo console do SageMaker ou via SDK Python do SageMaker. Para mais detalhes sobre como implantar e utilizar modelos de fundação na plataforma, a AWS disponibiliza a documentação oficial do Amazon SageMaker JumpStart.

    Fonte

    granite-speech-4.1-2b, kanana-2-30b-a3b-instruct, and OpenFold3 models now available on Amazon SageMaker JumpStart (https://aws.amazon.com/about-aws/whats-new/2026/01/granite-speech-4.1-2b-edge-kanana-2-30b-a3b-instruct-openfold3-jumpstart/)