MLOps e escalonamento na AWS
Domine MLOps e escalonamento para o exame AIF-C01, SageMaker Pipelines como um DAG JSON com 16 tipos de etapa, gates Condition e Fail, paralelismo e cache de etapas, aprovação no Model Registry que dirige o CI/CD, SageMaker Projects com CodeConnections, servidores de rastreamento MLflow, auto scaling de destino/de etapa/agendado com métricas de alta resolução, escala para zero assíncrona, limites das opções de inferência e o flywheel de retreino do EventBridge.
Um modelo que funciona em um notebook não é um sistema. No momento em que um segundo engenheiro precisa reproduzir a execução de treinamento, no momento em que o tráfego dobra às 09h, e no momento em que os dados de treinamento mudam de distribuição seis meses depois, você para de fazer machine learning e começa a fazer operações: e a AWS lhe dá duas famílias distintas de ferramentas para isso: uma camada de pipeline / registry / CI-CD que decide como um modelo chega à produção, e uma camada de escalonamento que decide quanta computação o serve. O exame AIF-C01 testa se você consegue nomear cada ferramenta com precisão, citar seus limites e recusar as opções que soam plausíveis, mas estão documentadas para outro serviço.
====================================================================
LESSON 13 — MLOps & SCALING ON AWS
====================================================================
MATURITY (AWS three-level standard)
L0 manual ......... notebooks + manual CreateModel / endpoint
L1 pipeline ....... ONE automated pipeline = the deployed artifact
L2 full CI/CD ...... many pipelines + registry + automated testing
--------------------------------------------------------------------
BUILD LAYER SERVE LAYER
Pipelines = JSON DAG (16 types) real-time ... <= 25 MB, 60 s
Condition: if/else on eval.json serverless .. <= 4 MB, 60 s
Fail: end the run as Failed async ....... <= 1 GB, 60 min
Parallelism (per execution) batch ....... GB, days, no EP
Caching OFF by default (PT1H)
Registry: group -> versions 1,2.. SCALING (App Auto Scaling)
Approval: Approved / Rejected / target tracking (target 70)
PendingManualApproval step scaling (+1 from zero)
Projects: Service Catalog / CFN scheduled actions
Git via CodeConnections high-res metric = 10 s
MLflow tracking server (your S3) cooldown default 300 s
--------------------------------------------------------------------
AUTOMATION LAYER
SageMaker -> EventBridge (near real-time)
Monitor hourly -> CloudWatch alarm -> StartPipelineExecution
<= 5 targets per rule / no schedule on custom or partner buses
====================================================================Como ler esta lição. Três regras se aplicam do começo ao fim. (1) Números são o exame: tetos de payload, cooldowns, valores de destino, períodos de alarme e transições de aprovação são todos valores publicados, e são eles que são testados. (2) A AWS documenta dois mecanismos de escalonamento por um motivo: target tracking mantém um nível de carga, step scaling acorda um serviço, e apenas a combinação deles escala um endpoint assíncrono a partir de zero. (3) Tudo que a AWS não confirma em primeira party é sinalizado, nunca ensinado como material de memorização; os sinalizados são coletados no final da lição.
Ao final desta lição você será capaz de:
- posicionar uma prática de ML no modelo de maturidade de três níveis da AWS (0, 1, 2) e separá-lo das variantes Google, Azure e do blog da AWS do mesmo framework;
- ler um SageMaker Pipeline como um DAG JSON e dizer quais arestas carregam dados (
properties) versus apenas ordenação (DependsOn); - selecionar o tipo de etapa certo para uma tarefa, incluindo Condition, Fail, Callback, Lambda, ClarifyCheck e QualityCheck, e citar quantos tipos existem;
- configurar
ParallelismConfiguratione cache de etapas (ExpireAfterem ISO 8601, apenas execuções bem-sucedidas) corretamente; - dirigir o deployment através do Model Registry: numeração de versões,
ModelApprovalStatuse as quatro transições de aprovação que iniciam (ou não) o CI/CD; - construir ou adotar um SageMaker Project com CodePipeline / Jenkins, explicar por que os modelos de CodeCommit desapareceram em 28 de outubro de 2024 e nomear a tag CodeConnections e as ações IAM necessárias para GitHub;
- escolher entre Experiments (Studio Classic) e MLflow on SageMaker AI, e dizer onde os dados de rastreamento e os artefatos fisicamente vivem;
- configurar target tracking, step scaling e ações agendadas com o
ServiceNamespace,ResourceIdeScalableDimensioncorretos, e fazer a aritmética de capacidade com divisão com arredondamento para cima; - acordar um endpoint assíncrono a partir de zero com uma step policy mais um alarme
HasBacklogWithoutCapacity; - escolher a opção de inferência correta a partir do payload, latência, duração e requisitos do endpoint, e defender a escolha em termos de custo;
- ligar o flywheel de MLOps: Model Monitor → CloudWatch → EventBridge →
StartPipelineExecution; - defender o Veredito Comparativo: MLOps gerenciado vs scripts DIY vs operações manuais.
1. Maturidade de MLOps: nível 0, nível 1, nível 2
1.1 O padrão de três níveis da AWS
A AWS enquadra o MLOps como um modelo de maturidade de três níveis, e o exame espera que você reconheça o nível a partir de uma descrição e nomeie as ferramentas que levam até lá. A questão que distingue nunca é "quanto de ML você faz": é qual é o artefato implantado.
Nível | Nome | Características (AWS) | Ferramentas AWS |
|---|---|---|---|
0 | Fluxo de trabalho de ML manual | orientado pelo cientista; treinamento e implantação manuais; sem pipeline | SageMaker Studio notebooks; CreateModel manual e criação de endpoint |
1 | Automação de pipeline de ML (treinamento contínuo) | Uma pipeline automatizada roda recorrentemente, com a mesma implementação em desenvolvimento, pré-produção e produção; a própria pipeline é o artefato implantado | SageMaker Pipelines (DAG JSON, cache, paralelismo), EventBridge, Model Registry |
2 | Automação completa de CI/CD | Múltiplas pipelines, um registry servindo muitos modelos, testes automatizados e retreino-redeploy horário ou diário | SageMaker Projects + CodePipeline / CodeBuild / GitHub, Model Monitor → alarme → retreino, infrastructure as code |
Não importe a numeração de outro framework. AWS, Google e o blog de ML da AWS todos descrevem maturidade de MLOps, e eles não são intercambiáveis:
Framework | Escala | Marcos |
|---|---|---|
AWS (padrão do exame) | 0, 1, 2 | L2 = registry + muitos modelos + CI/CD |
Blog de ML da AWS (2022) | Initial → Repeatable → Reliable → Scalable | multi-conta, templateizado, multi-equipe |
Google | 0, 1, 2 | mesma forma da AWS |
Azure | 0 to 4 | 1 = DevOps sem MLOps · 2 = treinamento automatizado · 3 = implantação automatizada · 4 = MLOps completo com retreino disparado por drift |
Uma opção de exame que descreve "nível 3" ou "nível 4" de maturidade está descrevendo a escala do Azure, não a da AWS. |
1.2 Onde isso aparece no exame
MLOps pertence ao Domínio 1, Tarefa 1.3 do guia AIF-C01. O exame em si é de 65 questões = 50 pontuadas + 15 não pontuadas, com sem penalidade por chute e pesos de domínio publicados de 20 / 24 / 28 / 14 / 14 %. A AWS publica apenas os pesos de domínio: a contagem de questões por tarefa não é publicada, então trate qualquer dimensionamento por tarefa que você leia em outro lugar como orientação, não como orçamento.
- 📚 Você sabia? As 15 questões não pontuadas de um exame AIF-C01 são indistinguíveis para você enquanto você faz o teste: elas estão intercaladas com as 50 pontuadas e são usadas para coletar estatísticas antes que um item seja qualquer vez pontuado. A consequência prática é um ponto de estratégia, não de curiosidade: nunca pule uma questão pensando "esta pode ser não pontuada". Cada questão consome o mesmo tempo, e apenas as 50 pontuadas decidem seu resultado, então o movimento racional é responder todas as 65 no máximo de sua capacidade.
2. SageMaker Pipelines: o contrato do DAG
2.1 O que é uma pipeline
Um SageMaker Pipeline é um grafo acíclico direcionado expresso em JSON. Cada nó é uma etapa, cada aresta é uma dependência, e ciclos são rejeitados, um DAG que dá laços não é uma pipeline mais lenta, é uma definição inválida. A definição segue o SageMaker AI Pipeline Definition JSON Schema, e ela pode ser produzida por quatro produtores equivalentes: o editor visual no Studio, o SageMaker SDK, boto3 e AWS CloudFormation. As execuções da pipeline são cobradas como os jobs subjacentes (processing, training, transform) mais o uso do Studio, a camada de orquestração em si não é um SKU separado e pesado.
Existem dois tipos de aresta, e confundi-los é o erro arquitetural mais comum nesta área:
Tipo de aresta | Escrito como | Carrega | Exemplo |
|---|---|---|---|
Aresta de dados | step.properties.*, resolvida pela API Describe* correspondente | artefatos reais (URIs do S3, dados do modelo, JSON de avaliação) | Train lê a saída train_data de Process |
Aresta apenas de ordenação | DependsOn / add_depends_on(...) | nada além de "rodar depois" | Train precisa esperar uma segunda etapa de preparação não relacionada |
A regra prática: se o valor flui, é uma referência properties; se apenas o timing importa, é DependsOn. ParallelismConfiguration não é um mecanismo de ordenação: ela limita quantas etapas já elegíveis rodam ao mesmo tempo.
2.2 O DAG da pipeline
Esta é a forma canônica que o exame descreve: pré-processar → treinar → avaliar → registrar apenas se a métrica passar, caso contrário falhar com uma mensagem.
2.3 Exemplo resolvido 1, o gate de MSE, ponta a ponta
Uma pipeline de regressão para um modelo tabular estilo abalone, construída com o SageMaker SDK:
- Parâmetros são declarados uma vez e reutilizados em todo lugar:
processing_instance_count,instance_type,model_approval_status(padrãoPendingManualApproval),input_data,batch_data,mse_threshold. Processproduz as saídastrain_dataetest_data. A etapa de treinamento as consome comstep_process.properties.ProcessingOutputConfig.Outputs["train_data"].S3Output.S3Uri: essa string é a aresta do DAG, não um comentário.Evalé uma etapa Processing comproperty_files, então sua saídaevaluation.json(contendoregression_metrics.mse) é exposta às etapas posteriores como uma propriedade estruturada, e não como um caminho no S3 que você precisa analisar sozinho.MSECondé uma etapa Condition:if_steps = [RegisterModel],else_steps = [Fail]. A etapa Fail carrega uma mensagem composta como"MSE above threshold " + mse_thresholde termina a execução com status Failed: a execução não "termina com um aviso"..start()a executa. PassarModelApprovalStatus="Approved"como valor de parâmetro torna o registro imediatamente implantável (um atalho de desenvolvimento/teste), eCacheConfig(enable_caching=True, expire_after="PT1H")permite que etapas inalteradas reutilizem suas saídas anteriores.
Por que uma etapa Fail em vez de apenas deixar a condição ser falsa? Uma etapa Condition com else_steps vazio silenciosamente não faz nada: a execução reporta Succeeded enquanto nenhum modelo foi registrado. A etapa Fail existe precisamente para que "a métrica estava ruim" seja registrado como uma execução Failed com mensagem personalizada, que é o que uma regra do EventBridge ou um sistema de CI/CD precisa para abrir um incidente em vez de comemorar um build verde.
3. Os 16 tipos de etapa, e os dois que decidem os resultados
3.1 O mapa completo de etapas
A AWS documenta 16 tipos de etapa. Aprenda a tabela pela coluna "gancho de exame": o exame raramente pergunta "o que uma etapa Training faz", ele pergunta qual etapa deve ser usada para X.
Tipo de etapa | Roda | Config-chave | Gancho de exame |
|---|---|---|---|
Processing | preparação, avaliação, baseline | URIs de saída no S3, property_files | "qual etapa avalia o modelo?" → Processing |
Training / Tuning / AutoML | job de treinamento / HPO / AutoML | hiperparâmetros, canais de uma etapa anterior, intervalos de busca, métrica alvo | precisa de dados de treino e validação |
Model (Create model) | CreateModel | imagem do container, ModelDataUrl | pré-requisito para Transform / Deploy |
Register model | versão do model package | grupo, status de aprovação, listas de instância | versionamento mais aprovação |
Deploy model | criação/atualização de endpoint | config do endpoint, variantes | blue/green = uma atualização de endpoint |
Transform | batch transform | MaxPayloadInMB, MaxConcurrentTransforms | pontuação offline, sem endpoint |
Condition | ramificação | if_steps / else_steps | gate → registrar ou Fail |
Fail | interrompe a execução como Failed | error_message personalizado | "terminar com um motivo" |
Callback | espera um callback token | token | aprovação externa ou de Step Functions |
Lambda | uma função Lambda | ARN / helper do SDK | no máximo 10 min, padrão 2 min; hooks de deploy leves |
ClarifyCheck / QualityCheck | viés e explicabilidade, qualidade de dados e modelo | estatísticas e restrições de baseline, skip_check, register_new_baseline | gate de drift mais baseline |
EMR / Notebook Job | etapa EMR / notebook agendado | cluster e argumentos / computação e cron | preparação de big data / análises agendadas |
3.2 Condition e Fail como gate de avaliação
O padrão documentado é mecânico e vale a pena memorizar:
- A etapa Processing de avaliação declara
property_files=["evaluation.json"]. - A etapa Condition lê
evaluation.jsone compara um escalar: por exemploregression_metrics.msecontra o parâmetro da pipelinemse_threshold. - Ramificação true → Register model (opcionalmente precedida por
Create model, e seguida por uma etapaTransformpara uma passagem de sanidade em lote). - Ramificação false → Fail com um
error_messagecomposto viaJoin(...), produzindo um status de execução Failed.
Uma segunda variante, igualmente comum, coloca uma etapa QualityCheck ou ClarifyCheck antes do registro: a baseline é produzida com register_new_baseline=true e skip_check=true na primeira execução, e execuções posteriores comparam contra aquela baseline. Mesma forma: um gate cuja ramificação falsa é uma etapa Fail.
- 📚 Você sabia? A etapa Fail não é uma falha bruta: é uma interrupção controlada. A etapa em si conclui com sucesso o trabalho dela, e é a execução da pipeline que termina como
Failed, com sua mensagem anexada. Essa distinção importa quando você constrói uma regra do EventBridge: você reage ao status da execução, não a uma exceção lançada no seu código Python, então uma etapa Fail lhe dá um sinal limpo e estável em schema que umexit 1de script de shell não dá.
4. Paralelismo e cache: as duas alavancas que mudam o custo de execução
4.1 O paralelismo é por execução, não por pipeline
Etapas independentes rodam em paralelo por padrão: qualquer uma que esteja elegível roda. Você limita isso com ParallelismConfiguration(MaxParallelExecutionSteps). Duas propriedades desta configuração importam para o exame:
- ela se aplica por execução: o exemplo documentado de 50 significa que uma execução roda no máximo 50 etapas concorrentemente, e duas execuções concorrentes podem portanto rodar 100 etapas ao mesmo tempo;
- ela pode ser sobrescrita no start, no retry e na atualização, então é um padrão de política, não uma propriedade imutável da pipeline.
Paralelismo não é um mecanismo de dependência. Definir MaxParallelExecutionSteps = 2 não faz a etapa B esperar a etapa A; apenas limita quantas etapas prontas executam simultaneamente.
4.2 O cache é opt-in, ISO 8601 e apenas para execuções bem-sucedidas
Propriedade | Comportamento verificado |
|---|---|
Padrão | Desligado: cada execução reexecuta cada etapa |
Ativar | CacheConfig { Enabled, ExpireAfter } na etapa |
Formato do ExpireAfter | duração ISO 8601, por exemplo PT1H: não um timestamp Unix |
Quais execuções são reutilizadas | apenas as bem-sucedidas; uma execução falhada nunca é fonte de cache |
Resolução de correspondência | a execução bem-sucedida correspondente mais recente vence |
O que invalida | atributos que afetam a saída: localização dos dados, hiperparâmetros e código local (o SDK faz hash do código local no S3) |
O que ainda pode acertar | mudanças em atributos que não afetam a saída: instance_type ainda pode acertar |
O uso prático é um loop de desenvolvimento: você reexecuta uma pipeline de cinco etapas após tocar apenas no relatório, e PT1H deixa Process, Train e Eval devolverem seus artefatos anteriores em segundos enquanto a etapa alterada executa de verdade.
Cache desligado por padrão é a armadilha, não o recurso. Um candidato que assume "pipelines pulam trabalho inalterado automaticamente" vai malinterpretar toda pergunta de custo sobre execuções repetidas. Nada é colocado em cache até você definir CacheConfig, a entrada precisa ter sucedido, e ela precisa estar não expirada. Inversamente, um candidato que assume "cache significa modelos obsoletos" está errado pelo motivo oposto: mudanças de dados, hiperparâmetros e código todas erram o cache por design.
5. Model Registry: versões e a aprovação que direciona o deploy
5.1 Estrutura do registry
O registry organiza modelos em model groups, e um grupo contém pacotes/versões. As versões são simples e estritamente ordenadas: elas começam em 1 e incrementam em 1 para cada pacote adicionado ao grupo. Um pacote versionado precisa pertencer a um grupo, e seu ARN carrega as coordenadas: …:model-package-group/name/version.
5.2 ModelApprovalStatus
Cada model package carrega um status extraído de exatamente três valores:
ModelApprovalStatus = Approved | Rejected | PendingManualApprovalUm modelo versionado precisa estar Approved para ser implantado. O status pode ser definido através de update_model_package, através do Studio, através de uma etapa Condition dentro de uma pipeline, ou passado como um parâmetro da pipeline cujo padrão é PendingManualApproval.
5.3 As quatro transições de aprovação
Esta é a tabela de maior rendimento da lição, porque o exame pergunta "qual ação inicia o deployment?":
Transição | Efeito em um template de SageMaker Project |
|---|---|
PendingManualApproval → Approved | Inicia o CI/CD: a pipeline de deploy começa |
PendingManualApproval → Rejected | Nada acontece |
Rejected → Approved | Inicia o CI/CD |
Approved → Rejected | Reimplanta o modelo Approved mais recente (semântica de rollback) |
5.4 Exemplo resolvido 2: da aprovação à produção
- Um SageMaker Project é criado a partir do template "Model building, training, and deployment with third-party Git repositories using CodePipeline", com dois repositórios GitHub e um ARN do CodeConnections com a tag
sagemaker=true. - Um commit no repositório de modelagem dispara a ação de fonte (
DetectChanges), que executasource → build: o CodeBuild cria ou atualiza o SageMaker Pipeline e o inicia. - A pipeline registra a versão 7 com
ModelApprovalStatus = PendingManualApproval. - Um revisor vira a v7 para
Approved(Studio, CLI ou uma etapa Condition alimentada por um parâmetro de aprovação). - A regra EventBridge do template inicia a pipeline de deploy:
source → build → deploy-staging(stack do CloudFormation) → aprovação manual →deploy-prod. - Se o staging revelar um defeito e a v7 for virada de
Approved→Rejected, o pacote aindaApprovedmais recente é reimplantado: esse é o rollback documentado. Em um loop puro de dev/teste, você contorna as etapas 4 to 5 passandoModelApprovalStatus="Approved"como parâmetro da pipeline.
6. SageMaker Projects, Git e CI/CD
6.1 O que um Project realmente é
SageMaker Projects são produtos do AWS Service Catalog suportados por CloudFormation. Criar um provisiona, como uma unidade única: repositórios Git, um SageMaker Pipeline, CodePipeline ou Jenkins, um model group, um bucket S3, um registry ECR e regras do EventBridge. Existem duas formas canônicas:
Forma do Project | Caminho da pipeline |
|---|---|
Build | source → build |
Deploy | source → build → deploy-staging → aprovação manual → deploy-prod |
As famílias de template fornecidas cobrem build/train/deploy com Git de terceiros (CodePipeline ou Jenkins), Model Monitor e construção de imagens (ECR + CodeBuild + EventBridge).
6.2 A mudança de CodeCommit de 28 de outubro de 2024
Templates de projeto baseados em CodeCommit foram removidos em 28 de outubro de 2024. Qualquer opção de exame que afirme que você pode iniciar um novo SageMaker Project a partir de um template de CodeCommit "a partir de hoje" está errada. O caminho suportado é GitHub / GitHub Enterprise / GitLab / Bitbucket, e templates personalizados são construídos como CloudFormation no Service Catalog ou, recomendado pela AWS, templates hospedados no S3 consumidos através de CfnTemplateProvider.
A mecânica da ação de fonte do GitHub vale a pena citar com precisão:
-
a ação do CodePipeline é
CodeStarSourceConnection; -
a conexão deve ser uma conexão CodeConnections com a tag
sagemaker=true; -
o role da pipeline precisa de ambas
codestar-connections:UseConnectionecodeconnections:UseConnection; -
a detecção de mudanças é
DetectChangesno commit, então o build começa sem um gatilho manual; -
o CloudFormation de um template personalizado deve declarar
SageMakerProjectNameeSageMakerProjectId. -
📚 Você sabia? "CodeStar" sobrevive no nome da ação (
CodeStarSourceConnection) muito tempo depois que o produto foi substituído pelo CodeConnections. É por isso que a política IAM precisa de duas ações quase idênticas: uma para o namespace legado e uma para o serviço atual. Candidatos que memorizam apenas uma das duas consistentemente falham neste item, e os próprios walkthroughs da AWS listam ambas.
7. Experiments e MLflow: onde o rastreamento de execuções vive hoje
7.1 A migração
A API SageMaker Experiments, CreateExperiment, Trials como grupos de execução, trial components como execuções individuais, é documentada como disponível apenas no Studio Classic. Para a nova experiência do Studio, a AWS recomenda MLflow on SageMaker AI. Em termos de exame: uma opção que descreve Trials e trial components como a maneira atual e recomendada de rastrear execuções está descrevendo uma superfície legada.
SageMaker Experiments (SDK) | MLflow on SageMaker AI | |
|---|---|---|
Status | apenas Studio Classic | recomendação atual (GA) |
Tracking URI | Experiments API | mlflow.set_tracking_uri(<tracking server ARN>) |
Credenciais | role de execução do SageMaker | plugin AWS, assinatura SigV4 |
Backend store | metadata store do Experiments | na conta de serviço do SageMaker |
Artifact store | gerenciado pela SageMaker | seu próprio bucket S3 |
Tamanhos / limites | : | Small / Medium / Large, criados em no máximo 25 minutos |
Auditoria | CloudTrail nas APIs do SageMaker | CloudTrail sob CallMlflowApp para AWS::SageMaker::MlflowApp |
A divisão é o ponto do exame: a computação e o backend store rodam na conta de serviço do SageMaker, mas os artefatos vivem em um S3 que você possui e paga: que é exatamente o que um revisor de conformidade quer ouvir sobre reprodutibilidade.
8. Auto scaling de endpoints: target tracking, step scaling, ações agendadas
8.1 Os identificadores
O escalonamento de endpoints roda através do Application Auto Scaling (RegisterScalableTarget mais PutScalingPolicy) ou através do assistente do console. Cite as coordenadas com exatidão:
Campo | Valor |
|---|---|
ServiceNamespace | sagemaker |
ResourceId | endpoint/{endpoint-name}/variant/{variant-name} |
ScalableDimension | sagemaker:variant:DesiredInstanceCount |
Métrica do assistente do console | fixa em SageMakerVariantInvocationsPerInstance |
A AWS oferece três estratégias, target tracking (recomendado), step scaling e ações agendadas (CLI/API), e, para o target tracking, a AWS gerencia os alarmes para você.
8.2 As métricas
Métrica | Tipo | Alvo | Período |
|---|---|---|---|
SageMakerVariantInvocationsPerInstance | Predefinida (padrão recomendado) | 70 invocações/instância/min | 1 min |
ConcurrentRequestsPerModelHighResolution | custom de alta resolução | 5 requisições concorrentes/modelo | 10 s |
InferenceComponentConcurrentRequestsPerCopyHighResolution | alta resolução (inference components) | 5 | 10 s |
CPUUtilization, ExplanationsPerInstance | custom | sua escolha (por exemplo 50) | 1 min |
ApproximateBacklogSizePerInstance | assíncrona | 5 | 1 min |
8.3 Exemplo resolvido 3: aritmética de capacidade do target tracking
A capacidade sempre arredonda para cima: esse é o comportamento de ajuste documentado, e é aritmética examinável:
- Teste de carga mostra 210 invocações/min, alvo 70 → 210 / 70 = 3 instâncias.
- O tráfego sobe para 351/min → 351 / 70 = 5,01, arredondado para cima → 6 instâncias (nunca 5).
- Registre o destino:
register_scalable_target(ServiceNamespace="sagemaker", ResourceId="endpoint/prod/variant/AllTraffic", ScalableDimension="sagemaker:variant:DesiredInstanceCount", MinCapacity=1, MaxCapacity=10). - Anexe a política:
put_scaling_policy(PolicyType="TargetTrackingScaling", {"TargetValue": 70.0, "PredefinedMetricSpecification": {"PredefinedMetricType": "SageMakerVariantInvocationsPerInstance"}, "ScaleInCooldown": 600, "ScaleOutCooldown": 300}). - Efeito: scale-out dentro de cerca de um minuto; o cooldown de scale-in de 600 s suprime o flapping após um burst, e o cooldown de scale-out de 300 s evita over-provisioning durante um trem de picos.
8.4 Exemplo resolvido 4: aritmética de concorrência em alta resolução
- Com
ConcurrentRequestsPerModelHighResolutionno alvo 5, uma carga de 18 requisições concorrentes → 18 / 5 = 3,6, arredondado para cima → 4 instâncias. - A métrica emite a cada 10 segundos em vez de a cada 1 minuto: detecção ~6× mais rápida para o scale-out; o timing de scale-in não muda.
- Usando inference components? A métrica vira
InferenceComponentConcurrentRequestsPerCopyHighResolution. - Múltiplas políticas de target tracking podem compartilhar um único destino escalável: adicione uma segunda política em
CPUUtilizationcomTargetValue = 50, e ambas mantêm seus próprios alvos contra o mesmoDesiredInstanceCount.
8.5 A comparação das estratégias de escalonamento
Dimensão | Target tracking (recomendado) | Step scaling | Ações agendadas | Serverless (totalmente gerenciado) |
|---|---|---|---|---|
Gatilho | métrica vs alvo | alarme violado | cron/data | o próprio tráfego |
Métricas | predefinida InvocationsPerInstance, alta res. ConcurrentRequestsPer*, custom CPUUtilization / ExplanationsPerInstance, assíncrona ApproximateBacklogSizePerInstance | qualquer métrica de alarme | , | , |
Granularidade | 1 min, ou 10 s em alta resolução | o período do seu alarme | horários fixos | automático |
Ajuste | mantido no alvo, arredonda para cima | exato (por exemplo +1) | absoluto ou percentual | opaco |
Cooldowns | ScaleInCooldown / ScaleOutCooldown (padrão do SageMaker 300 s) | Cooldown (exemplo 300) | , | , |
Escala para 0 | não para variantes real-time; assíncrona apenas com uma step policy e alarme extras | ✅ o mecanismo from-zero | ✅ se MinCapacity = 0 | ✅ sempre |
Melhor para | carga sustentada | picos precisos, zero acordamentos | picos conhecidos | tráfego intermitente |
Cooldowns são em segundos e se aplicam em ambas as direções. ScaleInCooldown e ScaleOutCooldown são valores separados (o exemplo documentado usa 600 e 300), o padrão da variante SageMaker é 300 segundos, e os ajustes arredondam para cima: então uma política de target tracking nunca escala para uma fração de instância e nunca escala para baixo mais rápido do que seu cooldown permite. Uma questão que define cooldowns em minutos, ou que afirma que scale-in e scale-out compartilham um único valor, está errada.
9. Inferência assíncrona: escalonamento a partir de zero
9.1 Por que a assíncrona é especial
Endpoints assíncronos têm uma fila na frente deles, o que significa que o backlog, não a taxa de requisições, é o sinal que importa. A AWS documenta estas métricas de fila:
Métrica | Significado | Uso típico |
|---|---|---|
ApproximateBacklogSizePerInstance | requisições enfileiradas divididas por instâncias | target tracking, alvo 5 |
ApproximateBacklogSize | profundidade absoluta da fila | alarmes custom |
ApproximateAgeOfOldestRequest | latência da fila | SLO de frescor |
HasBacklogWithoutCapacity | 1 quando a fila não está vazia e instâncias = 0 | o alarme de escala from-zero |
9.2 O design de escalonamento a partir de zero
Target tracking não consegue acordar um serviço que tem zero capacidade. Com MinCapacity = 0, uma política de target tracking não tem instâncias contra as quais computar uma métrica …PerInstance, então ela não escalará a partir de zero. A resposta documentada da AWS é uma combinação: uma step scaling policy com ScalingAdjustment = +1 e um cooldown de 300 segundos, dirigida por um alarme em HasBacklogWithoutCapacity com threshold 1, EvaluationPeriods = 2 (DatapointsToAlarm 2) e Period 60 s. O target tracking assume o controle uma vez que a capacidade existe.
9.3 Exemplo resolvido 5: aritmética da fila e o despertar
- Configure
MinCapacity=0, MaxCapacity=5e uma política de target tracking emApproximateBacklogSizePerInstancecomTargetValue = 5. - Um burst enfileira 27 requisições em 1 instância em execução → 27 / 5 = 5,4, arredondado para cima → 6 → limitado a
MaxCapacity= 5. - O tráfego para; o scale-in devolve o endpoint a 0 instâncias e o gasto ocioso vai a zero. Requisições que chegam nesse meio-tempo são enfileiradas, não perdidas:
ApproximateAgeOfOldestRequestreporta há quanto tempo a mais antiga espera. - A próxima requisição após o idle:
HasBacklogWithoutCapacityvira para 1, mantém por 2 períodos de avaliação de 60 s, dispara o alarme, a step policy adiciona +1 instância após o cooldown de 300 s, e o target tracking retoma.
10. Escolhendo a opção de inferência
10.1 As quatro opções e seus limites rígidos
Real-time | Serverless | Assíncrona | Batch transform | |
|---|---|---|---|---|
Endpoint | REST persistente | gerenciado, escala para 0 | fila persistente, escala para 0 | nenhum (apenas job) |
Limite de payload | 25 MB | 4 MB | 1 GB | datasets na escala de GB |
Tempo de processamento | 60 s (8 min com streaming) | 60 s | 60 minutos | dias |
Controle de escalonamento | políticas de auto scaling (seção 8) | totalmente gerenciado (+ Provisioned Concurrency opcional) | métricas de backlog mais step scaling a partir de 0 | MaxConcurrentTransforms, contagem de instâncias |
Forma do custo | paga por instâncias provisionadas incluindo ociosas | paga por duração da requisição e dados | paga enquanto processa, 0 ocioso | paga por instância-hora do job |
Melhor ajuste | sustentada, baixa latência, previsível | tráfego esporádico ou intermitente tolerante a cold starts | payloads grandes, enfileiráveis, sensíveis a custo | pontuação em massa offline |
Monitoramento | Model Monitor mais data capture ✅ | nenhum suportado ❌ | SNS sucesso/erro → S3 | BatchTransformInput |
Específicos do batch transform: MaxPayloadInMB no máximo 100, e MaxConcurrentTransforms × MaxPayloadInMB no máximo 100 MB.
Exclusões do serverless (memorize a lista): sem GPUs; sem imagens de Marketplace ou de registry privado; sem multi-model endpoints; sem configuração de VPC; sem data capture; sem Model Monitor; sem múltiplas variantes; sem inference pipelines; imagem do container no máximo 10 GB; converter um endpoint real-time existente para serverless é rejeitado; Provisioned Concurrency é opcional.
10.2 A decisão
10.3 Exemplo resolvido 6: 40 GB, toda noite, sem usuários
Uma equipe de fraude pede "um endpoint real-time para o nosso job de pontuação noturno de 40 GB". A resposta correta é batch transform:
- Sem tráfego interativo → a única vantagem do real-time (latência) não tem valor, e sua forma de custo, pagar por instâncias provisionadas incluindo horas ociosas, é desperdício puro para um job que roda uma vez por dia.
- 40 GB passa do teto de 4 MB do serverless e do teto de 1 GB do assíncrono; é território firme de "dados na escala de GB ao longo de dias".
- O batch transform roda instâncias apenas para o job:
MaxPayloadInMB ≤ 100eMaxConcurrentTransforms × MaxPayloadInMB ≤ 100 MBmantêm cada requisição dentro dos limites,S3Outputcoleta os registros pontuados, e nenhum endpoint existe entre execuções: então nada é cobrado às 03h. - O monitoramento usa
BatchTransformInputem vez do Model Monitor; se a equipe mais tarde quiser detecção de drift, essa é uma decisão separada sobre um endpoint real-time ou assíncrono.
- 📚 Você sabia? A orientação de otimização de custos da AWS para inferência se resume a uma frase: combine a opção com a forma do tráfego. A assíncrona é dimensionada para uma taxa de processamento ótima mais escala para zero; o serverless é por requisição; o real-time é capacidade provisionada; e em todas elas SageMaker Savings Plans podem ser comprados por 1 ou 3 anos e se aplicam sobre Studio, processing, training, inferência real-time e batch transform. Comprar um Savings Plan para um job que roda 20 minutos por noite é o desalinhamento clássico: o plano desconta uso comprometido, e um lote noturno quase não tem.
11. EventBridge e o flywheel de MLOps
11.1 O que a AWS envia, e para quê
O SageMaker emite eventos para o EventBridge em quase tempo real para jobs, endpoints, model packages, execuções e etapas de pipeline, e mudanças de imagem. Os alvos incluem Lambda, Step Functions, Kinesis e SNS: e, criticamente, o próprio SageMaker Pipelines é um alvo:
Configuração | Valor |
|---|---|
Alvo | SageMaker Pipeline |
Ação do role | SageMaker::StartPipelineExecution |
Mapeamento de parâmetro | SageMakerPipelineParameter |
Máximo de alvos por regra | 5 |
Agendamentos em buses custom / de parceiros | não suportado |
Agendamento programático | SDK PipelineSchedule (rate / cron) |
Gatilhos de retreino (lista completa) | agendamento ( rate / cron, PipelineSchedule) e evento (alarme CloudWatch, ModelPackageStateChange, S3 ObjectCreated) |
11.2 O flywheel
11.3 Exemplo resolvido 7: monitorar, alarmar, retreinar, aprovar, implantar
- Habilite data capture no endpoint de produção para que requisições e respostas aterrissem no S3, e agende o Model Monitor de hora em hora (
CronExpressionGenerator.hourly()). - Produza a baseline com uma etapa
QualityCheckusandoregister_new_baseline=trueeskip_check=truena primeira execução; execuções posteriores comparam contra ela. - Quando o drift exceder a restrição, o alarme do CloudWatch entra em ALARM → a regra EventBridge dispara → alvo = SageMaker Pipeline, invocando
StartPipelineExecutioncom umSageMakerPipelineParametermapeado. - A pipeline retreina, avalia, passa pela etapa Condition, registra uma nova versão como
PendingManualApproval→ a aprovação a vira paraApproved→ a regra do template de deploy atualiza o endpoint. - Execute o gatilho de calendário ao lado do gatilho de drift:
cron(0 12 1 * ? *)retreina no dia 1 de cada mês às 12:00 UTC, ou usePipelineSchedule(name, cron="15 10 ? * 6L 2022-2023")para um agendamento com limite de tempo. Lembre-se de no máximo 5 alvos por regra e de nenhum agendamento em buses de eventos custom ou de parceiros.
11.4 Infrastructure as code para a stack inteira
Tudo nesta lição é descritível como código, e a orientação da AWS aponta para o CloudFormation diretamente ou através do AWS CDK: cdk synth emite um template do CloudFormation por stack, e os constructs L1 Cfn* cobrem a superfície: sagemaker.CfnEndpointConfig (incluindo AsyncInferenceConfig), sagemaker.CfnPipeline, mais os nativos AWS:SageMaker:Domain, AWS:SageMaker:UserProfile e AWS:SageMaker:Pipeline.
Codifique, no mínimo: VPC, KMS, o bucket S3, o role de execução da pipeline, o Model Package Group, CodePipeline + CodeBuild + CodeConnections, regras do EventBridge e o destino escalável com suas políticas. Para templates de projeto, a AWS prefere templates hospedados no S3 via CfnTemplateProvider a portfólios do Service Catalog, e um template personalizado deve expor SageMakerProjectName e SageMakerProjectId. Dividir a stack em DevStack e ProdStack permite testar a infraestrutura com unit tests antes que ela toque a produção.
11.5 Atualizações de 2026 (em outubro de 2026)
Três mudanças verificadas de 2025 to 2026 tocam o material das seções 8 até 13, e a AWS agora as anuncia através de vocabulário de ciclo de vida em vez de aposentadorias silenciosas. Todas as três são documentadas, datadas e examináveis.
1. O nome do produto mudou. A AWS documenta que "o Amazon SageMaker atual foi renomeado para Amazon SageMaker AI" (3 de dezembro de 2024), ao lado de uma geração separada de next-generation SageMaker (Unified Studio, Catalog, Lakehouse, zero-ETL). Uma opção de exame dizendo SageMaker AI é atual, não exótica: e os identificadores que você cita da seção 8 não mudaram com a renomeação: ServiceNamespace = sagemaker, ResourceId = endpoint/…/variant/…, SageMakerVariantInvocationsPerInstance e a ação do role SageMaker:StartPipelineExecution ainda são todos escritos do jeito antigo.
2. Model Monitor e Clarify estão em manutenção. O SageMaker AI End of Support Notice lista Model Monitor e Clarify: junto com Ground Truth, A2I, Studio Lab, Debugger, Role Manager, Geospatial e Mechanical Turk: como "não mais aberto a novos clientes a partir de 30 de julho de 2026". Leia essa frase com precisão: o status é manutenção = nenhum cliente novo, nenhum recurso novo, clientes existentes continuam usando-os. Não é um desligamento completo, e não é um rebranding para Bedrock Model Evaluations. O flywheel de drift de 11.2 portanto ainda roda para clientes existentes; para trabalho novo a AWS aponta para métricas e anomaly detection do CloudWatch, CloudWatch Evidently, EventBridge + Lambda, SHAP e, no lado generativo, Bedrock Model Evaluations: que é exatamente por que o exemplo 4.2.2 do guia do exame agora lê "Clarify plus Bedrock Model Evaluations".
3. O guia do exame mudou. O histórico de mudanças da AWS lista v1.0 publicada em 26 de março de 2026 e v1.1 publicada em 30 de abril de 2026, e afirma que atualizações aparecem no exame cerca de um mês após a publicação (trate a v1.1 como a âncora confiável; a data da v1.0 é uma republicação de documentação). Exemplos alterados que tocam esta lição: 1.1.3 (inferência assíncrona e serverless), 1.3.4 (Bedrock, Amazon Quick, Kiro, SageMaker AI) e 4.2.2 (Clarify mais Bedrock Model Evaluations). Inalterados, e portanto seguros de continuar citando: 65 questões (50 pontuadas + 15 não pontuadas), 90 minutos, aprovação 700 / 1.000, validade de 3 anos, domínios 20 / 24 / 28 / 14 / 14 %.
Data (verificada) | Mudança | O que isso significa no exame |
|---|---|---|
3 de dezembro de 2024 | Amazon SageMaker renomeado Amazon SageMaker AI | o novo nome é atual; identificadores de serviço, métrica e API inalterados |
26 de março de 2026 | Guia do exame v1.0 listado no histórico de mudanças | linha de base do conjunto de conteúdo de 2026 |
30 de abril de 2026 | Guia do exame v1.1 publicado | no ar no exame a partir de cerca de finais de maio de 2026; exemplos alterados 1.1.3, 1.3.4, 4.2.2 |
30 de junho de 2026 | Ground Truth Plus fim do suporte; Amazon Kendra entra em manutenção | datas de distrator, não respostas de MLOps |
30 de julho de 2026 | Model Monitor, Clarify, Ground Truth, A2I, Studio Lab, Debugger, Role Manager, Geospatial, Mechanical Turk e Kendra fechados para novos clientes | manutenção ≠ desligamento ≠ rebranding: cite o estado, não um boato |
30 de setembro de 2026 | Mechanical Turk fim do suporte (o post What's New diz 29 de setembro, o digest sinaliza o conflito) | não cite o dia |
24 de setembro de 2026 | Referência do AWS Service Lifecycle publicada | use o vocabulário de três palavras abaixo |
Vocabulário de ciclo de vida (AWS General Reference): Maintenance = nenhum cliente novo, nenhum recurso novo, ainda suportado · Sunset = fim de operações planejado, tipicamente cerca de 12 meses · Full Shutdown = removido do portfólio.
- 📚 Você sabia? A AWS afirma que mudanças no guia do exame aparecem no exame no ar cerca de um mês após a publicação: então o material da v1.1 (30 de abril de 2026) era examinável a partir de finais de maio de 2026. O corolário corre nas duas direções: um recurso anunciado depois da versão do seu guia não é automaticamente testável, enquanto um exemplo alterado como 4.2.2 → Clarify mais Bedrock Model Evaluations é testável muito antes de qualquer data de aposentadoria importar. Leia o histórico de mudanças, não o blog de release.
12. Veredito comparativo: MLOps gerenciado vs scripts DIY vs manual
Veredito Comparativo: MLOps gerenciado (SageMaker Pipelines / Registry / Projects) vs scripts DIY (código cola no CodeBuild) vs operações manuais (notebooks e cliques no console)
- Operações manuais. Um cientista treina em um notebook, exporta um arquivo de modelo, e uma segunda pessoa clica através da criação do endpoint. É rápido para uma pessoa e um modelo, não precisa de design de IAM nem de role de pipeline: e falha em toda pergunta auditável: sem versionamento (versões do registry começam em 1 e não existe um passo 2), sem registro de aprovação (
ModelApprovalStatusnunca existiu), sem reprodutibilidade (dados, hiperparâmetros e código são o que o estado do notebook fosse), e sem caminho para a maturidade de Nível 1. Use-o apenas para exploração. - Scripts DIY. Código cola de shell ou Python no CodeBuild que chama
training.py,evaluate.py,upload_model.py. É totalmente customizável e portátil: você pode acoplar qualquer sistema de CI e qualquer framework de teste, e nenhum limite de serviço o constrange. Seus modos de falha são os que você agora precisa inventar sozinho: ordenação de etapas (você constrói o DAG à mão), cache (você escreve a própria reutilização de artefatos), semântica de falha (uma métrica ruim precisa virar um build falhado com mensagem), gates de aprovação (você implementa a máquina de estados), limites de paralelismo, retries e a trilha de evidência do CloudTrail. Você está reimplementando 16 tipos de etapa, e o gabarito do exame é o gerenciado. - MLOps gerenciado. O SageMaker Pipelines dá um DAG JSON com 16 tipos de etapa, gates Condition e Fail, paralelismo por execução e cache opt-in; o Model Registry dá grupos, versões a partir de 1, e as transições de aprovação que iniciam o CI/CD; os Projects dão provisionamento de repos, pipeline, model group, bucket, ECR e regras do EventBridge via CloudFormation / Service Catalog; o EventBridge dá o loop de retreino em quase tempo real com no máximo 5 alvos por regra. Seus limites: tudo tem a forma do SageMaker (um job de treinamento não-SageMaker precisa de uma etapa custom ou Lambda), a escolha de templates é finita (templates de CodeCommit removidos em 28 de out de 2024), e o rastreamento de experimentos mudou para o MLflow, com o Studio Classic como superfície legada.
- Regra prática para o exame: a pergunta pede como um modelo chega à produção, com versionamento, um gate de aprovação e uma trilha de auditoria → MLOps gerenciado (Pipelines + Registry + Projects). A pergunta pede uma ferramenta sob medida ou um sistema de CI não-AWS existente → scripts DIY, mas mantenha o registry como o ponto de transferência. A pergunta descreve um cientista único iterando em um protótipo → manual é aceitável, e só então: e se a opção mencionar retreino disparado por drift, a resposta é o loop EventBridge →
StartPipelineExecution, não um script cron.
Sinal de decisão | Manual | Scripts DIY | MLOps gerenciado |
|---|---|---|---|
Definição de execução reprodutível | Não | Apenas se você escrever | Sim (DAG JSON, verificado por schema) |
Semântica de falha em nível de etapa | Não | DIY | Sim (etapa Fail mais mensagem personalizada) |
Registry de modelos versionado | Não | DIY | Sim (grupos, versões a partir de 1) |
Aprovação que inicia o deploy | Não | DIY | Sim ( Pending → Approved inicia o CI/CD) |
Limite de paralelismo por execução | n/d | DIY | Sim ( ParallelismConfiguration) |
Cache de resultados de etapas | Não | DIY | Sim (opt-in, PT1H, apenas execuções bem-sucedidas) |
Provisionado por infrastructure as code | Não | Sim | Sim (Projects = Service Catalog / CloudFormation) |
Retreino disparado por drift | Não | DIY | Sim (Monitor → alarme → EventBridge → pipeline) |
Funciona fora do SageMaker | n/d | Sim | Parcialmente (etapas custom e Lambda) |
Evidência de auditoria | histórico do notebook | seus logs | CloudTrail mais registry mais histórico de execuções da pipeline |
13. Armadilhas do exame e os números que valem a pena memorizar
As armadilhas que custam pontos exatamente neste material:
- "A SDK Experiments é a maneira atual de rastrear execuções." Ela é apenas Studio Classic; a AWS recomenda MLflow on SageMaker AI para a nova experiência do Studio.
- "Iniciar um SageMaker Project a partir de um template de CodeCommit." Esses templates foram removidos em 28 de outubro de 2024: use GitHub, GitLab ou Bitbucket através do CodeConnections (
CodeStarSourceConnection, com a tagsagemaker=true). - "Definir
ALBRequestCountPerTargetem um endpoint SageMaker." Essa é uma métrica genérica do Application Auto Scaling que precisa de umResourceLabelde ALB; a métrica do SageMaker éSageMakerVariantInvocationsPerInstance. - "
PendingManualApproval → Rejectedimplanta o modelo anterior." Ela não faz nada; apenasApproved → Rejectedreimplanta o pacoteApprovedmais recente. - "Target tracking sozinho escala a assíncrona a partir de zero." Ele não consegue: você precisa de uma step policy (+1, cooldown 300) mais um alarme
HasBacklogWithoutCapacity(threshold 1, 2 × 60 s). - "
ExpireAfteré um timestamp Unix, e execuções em cache incluem falhas." Ele é ISO 8601 (PT1H) e apenas execuções bem-sucedidas são reutilizadas. - "Paralelismo força ordenação."
MaxParallelExecutionStepslimita a concorrência por execução; a ordenação éproperties(dados) ouDependsOn(timing). - "Serverless suporta VPC, Model Monitor e multi-model endpoints." Ele não suporta nenhum deles, limita payloads a 4 MB e imagens a 10 GB, e GPUs não estão disponíveis.
- "Agendamentos cron podem ser anexados a qualquer event bus." Nenhum agendamento em buses custom ou de parceiros, e uma regra tem no máximo 5 alvos.
- "Um modelo versionado pode ser implantado em qualquer estado de aprovação." Ele precisa estar
Approved.
Número testável | Valor |
|---|---|
Tipos de etapa da pipeline | 16 (incl. Fail, Condition, Lambda, Callback, ClarifyCheck, QualityCheck) |
Exemplo de ParallelismConfiguration | 50, por execução (2 execuções ⇒ 100) |
Cache de etapas | desligado por padrão · ExpireAfter ISO 8601 (PT1H) · apenas execuções bem-sucedidas |
Versões de model package | começam em 1, +1 por pacote no grupo |
ModelApprovalStatus | Approved / Rejected / PendingManualApproval |
Transições de aprovação que iniciam CI/CD | Pending → Approved, Rejected → Approved |
Alvos do EventBridge por regra | 5 no máximo |
Alvos de destino / concorrência / backlog | 70 inv/instância/min · 5 concorrentes/modelo · 5 backlog/instância |
Período da métrica | padrão 1 min vs alta resolução 10 s |
Alarme HasBacklogWithoutCapacity | threshold 1 · Evaluation e Datapoints 2 · Period 60 s · step +1 · Cooldown 300 |
Cooldowns | ScaleIn 600 / ScaleOut 300 (exemplo); padrão do SageMaker 300 s; ajustes arredondam para cima |
Limites de payload | real-time 25 MB · serverless 4 MB · assíncrona 1 GB |
Tempos de processamento | real-time 60 s (8 min streaming) · serverless 60 s · assíncrona 60 min · batch dias |
Payload do batch transform | MaxPayloadInMB ≤ 100; MaxConcurrentTransforms × MaxPayloadInMB ≤ 100 MB |
Tamanho da imagem serverless | ≤ 10 GB |
Tamanhos/criação do servidor MLflow | Small, Medium, Large · ≤ 25 min |
Templates de CodeCommit removidos | 28 de outubro de 2024 |
Timeout da etapa Lambda | ≤ 10 min, padrão 2 min |
Questões/domínios do AIF-C01 | 65 (50 pontuadas + 15 não pontuadas) · 20 / 24 / 28 / 14 / 14 % |
Sinalizado como não verificado nesta lição (não os afirme no exame): a frase "requisições por destino" como ela aparece em alguns dumps de estudo, ela mapeia para o ALBRequestCountPerTarget genérico, que não é documentado para endpoints SageMaker, então trate-a como InvocationsPerInstance, a menos que haja um ALB na arquitetura; a contagem exata de templates de projeto fornecidos (a AWS enumera famílias, não uma lista numerada); o roadmap de multi-model endpoint (docs vivos e não descontinuados em outubro de 2026, mas sem página de roadmap pública); o peso das questões de MLOps especificamente (apenas pesos de domínio são publicados); qualquer data de fim de suporte do Experiments no Studio Classic; preços do servidor MLflow; os tamanhos de memória e concorrência máxima de endpoints serverless; quotas de endpoint (instâncias por variante, variantes por endpoint); o padrão numérico de MaxParallelExecutionSteps (docs mostram como defini-lo, exemplo 50, mas não publicam um padrão); e GitHub Actions como resposta de exame, ele aparece apenas em um blog e em um template personalizado de aws-samples, enquanto as respostas seguras são CodePipeline / CodeBuild e Jenkins.
- 📚 Você sabia? A etapa Lambda do SageMaker tem um timeout padrão de 2 minutos e permite até 10 minutos: um teto deliberadamente pequeno, porque a etapa existe para trabalho de orquestração leve (virar uma aprovação, chamar uma API, mover um arquivo), não para rodar um job de treinamento. Se a sua "etapa" precisa de uma hora, é uma etapa Processing fantasiada.
14. Casos Reais
A AWS publica histórias de clientes porque cada uma é uma versão documentada de uma decisão que esta lição ensinou no abstrato. Os cinco abaixo são os casos relevantes para MLOps, pipelines e inferência, citados com os serviços AWS exatos, os números exatos impressos e a página de origem: uma porcentagem sem origem é marketing, e uma porcentagem sem "antes" é pior.
Como citar um estudo de caso em uma resposta de exame. Cada número nesta seção é alegado pelo cliente ou pela AWS e não auditado; apenas a Sun Finance divulga uma base amostral (585 imagens) e apenas a Adobe divulga seu próprio conjunto de teste. Leia "de até" como um teto, nunca como uma média. A AWS publica exatamente uma taxa de resultado de projeto, 65% dos projetos do Generative AI Innovation Center chegaram à produção em 2025, de mais de 1.000 implementações, então uma opção afirmando que "todos" ou "a maioria" dos projetos de IA da AWS vão a produção está errada, e a armadilha inversa (afirmar uma taxa de falha publicada) também está errada. Não cite os números não recuperados que circulam: taxas de estagnação de pilotos de agentes e alegações de terceiros de que "95% dos pilotos de GenAI falham" não são documentadas pela AWS.
14.1 Forethought: inferência é uma decisão de pipeline com uma conta anexada
- Serviços: multi-model endpoints do SageMaker, Serverless Inference e Model Deployment, substituindo um Amazon EKS auto-gerenciado.
- Números: −66% no custo de inferência com multi-model endpoints e melhor latência; ≈ −80% no Serverless Inference (manchete de até −80%); mais de 80% da inferência de GPU agora roda no SageMaker; 30 M de interações/ano; uma equipe de 3 pessoas que já não conseguia rodar os modelos e o Kubernetes (exceções de memória, indisponibilidades).
- Origem:
aws.amazon.com/solutions/case-studies/forethought-technologies-case-study(a página não traz chip de ano: trate a data como não declarada). - Ângulo de exame: esta é a seção 10 com uma fatura anexada. Capacidade de GPU compartilhada → multi-model endpoints; classificadores pequenos e esporádicos → serverless. O custo que eles apagaram foi o imposto de serving DIY: a coluna "scripts DIY" do Veredito Comparativo, aplicada à inferência em vez de ao CI/CD.
14.2 HAYAT HOLDING: treinamento e tuning gerenciados em vez de ambientes construídos à mão
- Serviços: AWS IoT Greengrass (SiteWise Edge Gateway) → SageMaker Model Training + Automatic Model Tuning + Model Deployment, com o SageMaker Edge Manager servindo o modelo no dispositivo.
- Números: 194 sensores transmitidos via OPC-UA; ambientes de ML auto-construídos eram "demorados e complicados"; resultado documentado de US$ 300.000 por ano economizados mais qualidade de painel maior.
- Origem:
aws.amazon.com/blogs/machine-learning/hayat-holding-uses-amazon-sagemaker-to-increase-product-quality-and-optimize-manufacturing-output-saving-300000-annually(2023). - Ângulo de exame: esta é maturidade de Nível 1 em uma fábrica: uma pipeline automatizada do sensor ao modelo ajustado, com o Automatic Model Tuning substituindo a varredura manual de hiperparâmetros em 194 entradas e o Edge Manager dono do caminho de deployment no dispositivo.
14.3 RareJob: treinamento spot resolveu um problema de fila, não de modelo
- Serviços: treinamento SageMaker em managed spot, alimentado por AWS Glue e Amazon Athena, substituindo um PC local e depois uma configuração EC2/ECS com gargalo.
- Números: −25% no tempo de treinamento, mais de 10× de eficiência de desenvolvimento, 100 horas por mês economizadas, resultados de pontuação em 2 to 3 minutos; um modelo por desenvolvedor era o teto antes da mudança.
- Origem:
aws.amazon.com/solutions/case-studies/rare-job-case-study(2020). - Ângulo de exame: o gargalo era o throughput de experimentos, não a precisão. Jobs de spot paralelos são a alavancagem de custo documentada para treinamento: e a mesma lógica de "pagar por capacidade interrompida com desconto" que torna um Savings Plan ou estratégia de spot uma resposta do Domínio 4 (custo).
14.4 Chronomics: quatro meses de DIY contra três semanas de AutoML gerenciado
- Serviços: Amazon Rekognition Custom Labels (AutoML), pontuado com
DetectCustomLabels. - Números: 4 meses de visão computacional custom in-house nunca atingiram a meta; Custom Labels entregue em 3 to 4 semanas com 96,5% de precisão / F1 de 97,9%. Elevar o limiar de confiança para 0,99 dá 99,6% de precisão enquanto descarta 5% das previsões; 0,999 dá 99,87% enquanto descarta 27%.
- Origem:
aws.amazon.com/blogs/machine-learning/chronomics-detects-covid-19-test-results-with-amazon-rekognition-custom-labels(2022). - Ângulo de exame: duas lições. Primeiro, para uma tarefa de visão estreita, o nível gerenciado supera uma construção in-house: o padrão de falha documentado é CV DIY. Segundo, cada limiar que você eleva cria uma cauda descartada que precisa de um caminho humano (a razão pela qual o A2I existe), então uma questão de precisão é sempre também uma questão de cobertura.
14.5 Sun Finance: uma pipeline multi-etapas cujo primeiro protótipo foi rejeitado
- Serviços: Amazon Textract (OCR) → Amazon Rekognition (fallback e checagens de rosto) → Claude Sonnet 4 (apenas estruturamento) → regras de validação → Amazon Titan Multimodal Embeddings em S3 Vectors para similaridade de fraude; construído com o AWS Generative AI Innovation Center, avaliado em 585 imagens.
- Números: precisão 79,73% → 90,80% (número de ID 74,32 → 89,40%, tipo de documento 78,43 → 96,40%), −91% no custo por documento, 20 horas → menos de 5 segundos, detecção de fraude 81%. Tentativa 1, apenas Claude Sonnet 4, pontuou 61,8% no geral e 43% no número de ID e foi rejeitada.
- Origem:
aws.amazon.com/blogs/machine-learning/sun-finance-automates-id-extraction-and-fraud-detection-with-generative-ai-on-aws(2026). - Ângulo de exame: esta é uma mentalidade de etapa Condition em forma de produção: construa a baseline, meça, rejeite a tentativa que falha, re-arquitete (separe OCR de raciocínio), meça novamente. Avaliação é uma fase, não uma caixa de seleção: e a extração de PII só com LLM é o protótipo falhado documentado.
Tabela 14-A: Antes / depois, exatamente como a AWS imprimiu
Caso | Métrica | Antes | Depois | Movimento |
|---|---|---|---|---|
Sun Finance | precisão geral do documento | 79,73% | 90,80% | +11,07 pp |
Sun Finance | custo por documento · tempo de manuseio | linha de base · até 20 h | −91% · < 5 s | ~1.000× mais rápido |
Sun Finance | primeira tentativa, só com LLM | : | 61,8% (número de ID 43%) | rejeitada |
Chronomics | tempo até um modelo funcional | 4 meses DIY, meta perdida | 3 to 4 semanas | ~4× mais rápido |
Chronomics | precisão / F1 | meta nunca alcançada | 96,5% / 97,9% | entregue |
RareJob | tempo de treinamento · eficiência do dev | linha de base · 1 modelo/dev | −25% · > 10× | +100 h/mês |
HAYAT | custo anual de infraestrutura | ambientes de ML auto-construídos | US$ 300.000/ano economizados | 194 sensores |
Forethought | custo de inferência | Amazon EKS auto-gerenciado | −66% MME · ≈ −80% serverless | >80% da inferência de GPU |
Tabela 14-B: Escolhendo o nível: pré-construído → custom gerenciado → generativo
Nível | Quando a AWS diz para usá-lo | Casos e números | Serviços |
|---|---|---|---|
Serviço de IA pré-construído | tarefa estreita e estruturada; "sem experiência em ML necessária" | Anthem 80% do fluxo de trabalho de claims automatizado (meta 90%+, 20 min/claim antes); Chronomics 96,5% em 3 to 4 semanas | Amazon Textract, Rekognition Custom Labels |
ML custom gerenciado | seus dados e seu modelo, mas você se recusa a ser dono da infraestrutura | HAYAT US$ 300 mil/ano; RareJob 10× de eficiência; Forethought −66% / −80% | treinamento SageMaker, managed spot, Automatic Model Tuning, multi-model endpoints, Serverless Inference, Edge Manager |
IA generativa + RAG | raciocínio, sumarização e recuperação sobre documentos | Sun Finance 90,8%; Nippon India > 95% de precisão com alucinação −90 to 95%; Adobe + 20% de precisão de recuperação; Bynder − 75% no tempo de busca | Amazon Bedrock, Knowledge Bases, Guardrails, embeddings em S3 Vectors |
- 📚 Você sabia? A AWS publica exatamente um número de taxa de produção para o próprio trabalho de IA generativa: 65% dos projetos do Generative AI Innovation Center chegaram à produção em 2025, de mais de 1.000 implementações, com o mais rápido em 45 dias: e a AWS enquadra o método como os Cinco Vs: Value → Visualize → Validate → Verify → Venture. O número que vale a pena internalizar é os outros 35%: a AWS espera que você planeje para projetos que estagnam, e é por isso que baseline antes de construir e avaliação como fase aparecem em cada caso acima.
Perguntas de Prática (Practice Questions)
Como responder
Questão de múltipla escolha com 4 opções. Selecione uma opção e escolha Verificar resposta.
Uma pipeline deve pré-processar dados, treinar um modelo, avaliá-lo, registrar o modelo apenas quando o MSE da avaliação estiver abaixo de um limite e, caso contrário, terminar a execução com uma mensagem personalizada. Qual conjunto de etapas está correto?
Como responder
Questão de múltipla escolha com 4 opções. Selecione uma opção e escolha Verificar resposta.
Qual afirmação sobre cache de etapas no SageMaker Pipelines é VERDADEIRA?
Como responder
Questão de múltipla escolha com 4 opções. Selecione uma opção e escolha Verificar resposta.
Uma etapa de treinamento precisa consumir a saída da etapa 1 como dados, mas também precisa esperar a etapa 2, que não produz nada de que o treinador precise. Qual é a abordagem correta?
Como responder
Questão de múltipla escolha com 4 opções. Selecione uma opção e escolha Verificar resposta.
Em um template de SageMaker Project, qual transição de aprovação inicia o deployment de CI/CD?
Como responder
Questão de múltipla escolha com 4 opções. Selecione uma opção e escolha Verificar resposta.
Um model package que é a versão 7 em um model package group precisa ser implantado em um endpoint de produção. Qual afirmação está correta?
Como responder
Questão de múltipla escolha com 4 opções. Selecione uma opção e escolha Verificar resposta.
Um endpoint real-time deve manter invocações médias perto de 70 por instância por minuto. Qual configuração alcança isso?
Como responder
Questão de múltipla escolha com 4 opções. Selecione uma opção e escolha Verificar resposta.
Um endpoint assíncrono vê bursts separados por longos períodos ociosos. Requisitos: custo ocioso zero e um acordamento rápido na primeira requisição após o idle. Qual design está correto?
Como responder
Questão de múltipla escolha com 4 opções. Selecione uma opção e escolha Verificar resposta.
Qual afirmação sobre métricas de escalonamento de endpoints SageMaker está correta?
Como responder
Questão de múltipla escolha com 4 opções. Selecione uma opção e escolha Verificar resposta.
Uma equipe precisa pontuar um dataset de 40 GB toda noite. Não há tráfego interativo e nenhum usuário está esperando uma resposta. Qual opção é a MELHOR?
Como responder
Questão de múltipla escolha com 4 opções. Selecione uma opção e escolha Verificar resposta.
Qual par de afirmações sobre templates pré-construídos do SageMaker Projects está correto?
Como responder
Questão de múltipla escolha com 4 opções. Selecione uma opção e escolha Verificar resposta.
Um engenheiro quer que o drift do Model Monitor dispare uma pipeline de retreino automaticamente. Qual arquitetura está correta?
Como responder
Questão de múltipla escolha com 4 opções. Selecione uma opção e escolha Verificar resposta.
Qual configuração de endpoint de inferência serverless é válida?
Como responder
Questão de múltipla escolha com 4 opções. Selecione uma opção e escolha Verificar resposta.
Em 30 de julho de 2026, qual é o status documentado do SageMaker Model Monitor e do SageMaker Clarify?
Como responder
Questão de múltipla escolha com 4 opções. Selecione uma opção e escolha Verificar resposta.
Uma equipe de suporte SaaS de três pessoas atualmente auto-gerencia inferência de GPU no Amazon EKS, com exceções de memória e indisponibilidades, servindo 30 milhões de interações por ano com vários modelos por cliente. Qual resultado corresponde ao estudo de caso publicado pela AWS?
Como responder
Exercício de preenchimento com 4 lacunas. Digite as palavras que faltam e verifique a resposta.
Preencha os números verificados dos estudos de caso e das atualizações de 2026 desta lição:
A Forethought cortou o custo de inferência em espaço com multi-model endpoints e cerca de espaço com Serverless Inference. A Chronomics entregou um modelo Rekognition Custom Labels em espaço semanas com 96,5% de precisão. O SageMaker Model Monitor e o SageMaker Clarify foram fechados para novos clientes em espaço de 2026.
Banco de Palavras, arraste as palavras para os espaços acima:
Como responder
Exercício de associação com 6 pares. Associe cada item à esquerda com a resposta à direita.
Relacione cada conceito de MLOps ou escalonamento ao seu valor AWS verificado:
Arraste as respostas daqui:
Como responder
Exercício de ordenação com 6 itens. Coloque-os na ordem correta e verifique a resposta.
Ordene as etapas do flywheel de retreino disparado por drift, do tráfego de produção a um modelo reimplantado:
Armadilhas da lição para revisar antes de seguir em frente:
- A SDK Experiments é apenas Studio Classic: a orientação atual é MLflow on SageMaker AI, com artefatos no seu S3;
- Templates de projeto de CodeCommit foram removidos em 28 de outubro de 2024: fluxos GitHub usam CodeConnections, a ação
CodeStarSourceConnection, a tagsagemaker=truee ambas as ações IAM; - Target tracking é recomendado, mas não consegue escalar a partir de zero: o acordamento assíncrono precisa de uma step policy (+1, cooldown 300) mais um alarme
HasBacklogWithoutCapacity; - a aprovação dirige o CI/CD:
PendingManualApproval → ApprovedeRejected → Approvediniciam a pipeline de deploy,Pending → Rejectednão faz nada, eApproved → Rejectedreimplanta o modelo Approved mais recente; - modelos versionados precisam estar
Approved, versões começam em 1, e um pacote versionado deve estar em um grupo; - o cache está desligado por padrão,
ExpireAfteré ISO 8601 (PT1H), e apenas execuções bem-sucedidas são reutilizadas; - o paralelismo é por execução e nunca estabelece ordenação;
- tetos de payload são 25 MB / 4 MB / 1 GB para real-time / serverless / assíncrona, e o batch transform não tem endpoint nenhum;
- uma regra do EventBridge aceita no máximo 5 alvos e não pode carregar um agendamento em um bus custom ou de parceiro.
Pontos Principais (Key Takeaways):
- Maturidade: a AWS usa um modelo de três níveis, L0 manual, L1 uma pipeline automatizada (a pipeline é o artefato implantado), L2 CI/CD completo com um registry servindo muitos modelos e testes automatizados, e não é a escala 0 to 4 do Azure nem o enquadramento Initial→Repeatable→Reliable→Scalable do blog da AWS; MLOps mapeia para a Tarefa 1.3 do Domínio 1 de um exame de 65 questões (50 pontuadas + 15 não pontuadas) com pesos 20 / 24 / 28 / 14 / 14 %.
- Pipelines: um SageMaker Pipeline é um DAG JSON (verificado por schema, ciclos rejeitados) produzido pelo editor visual, SDK, boto3 ou CloudFormation, com 16 tipos de etapa; arestas de dados usam
properties, arestas apenas de ordenação usamDependsOn,ParallelismConfigurationlimita a concorrência por execução (exemplo 50), e o cache é opt-in viaCacheConfigcomExpireAfterISO 8601 (PT1H) para apenas execuções bem-sucedidas. - Gates e aprovação: uma etapa Condition ramifica em
evaluation.jsonviaproperty_filespara Register model, e a etapa Fail termina a execução como Failed com mensagem personalizada; no registry, versões começam em 1,ModelApprovalStatus∈ {Approved,Rejected,PendingManualApproval}, apenasApprovedimplanta,Pending → ApprovedeRejected → Approvediniciam o CI/CD,Pending → Rejectedé silencioso, eApproved → Rejectedreimplanta o modelo Approved mais recente. - Projects e Git: SageMaker Projects são produtos Service Catalog / CloudFormation que provisionam repos, pipeline, CodePipeline ou Jenkins, model group, bucket, ECR e regras do EventBridge; templates de CodeCommit foram removidos em 28 de out de 2024, então GitHub usa CodeConnections (
CodeStarSourceConnection, tagsagemaker=true, IAMcodestar-connections:UseConnectionecodeconnections:UseConnection), e templates personalizados precisam deSageMakerProjectName/SageMakerProjectId. - Escalonamento: use target tracking (recomendado) em
ServiceNamespace=sagemaker,ResourceId=endpoint/{name}/variant/{variant},ScalableDimension=sagemaker:variant:DesiredInstanceCount, comSageMakerVariantInvocationsPerInstanceem 70 ou métricas de concorrência em alta resolução emitindo a cada 10 s com alvo 5; ajustes arredondam para cima, cooldowns são em segundos (padrão 300, exemplo 600 / 300), e a escala from-zero assíncrona = step policy +1 com cooldown de 300 s dirigida porHasBacklogWithoutCapacitycom threshold 1 sobre 2 × 60 s. - Escolhas de serving: real-time 25 MB / 60 s (8 min streaming), serverless 4 MB / 60 s sem GPUs, VPC, data capture, Model Monitor, MME, múltiplas variantes ou inference pipelines e imagens ≤ 10 GB, assíncrona 1 GB / 60 min escalando para 0, batch na escala de GB ao longo de dias sem endpoint (
MaxPayloadInMB≤ 100 e concorrência × payload ≤ 100 MB): escolha pela forma do tráfego e precifique com SageMaker Savings Plans de 1 ou 3 anos onde o uso é estável. - O flywheel: Model Monitor de hora em hora → alarme CloudWatch → EventBridge →
StartPipelineExecution(ação do roleSageMaker:StartPipelineExecution, parâmetros viaSageMakerPipelineParameter, ≤ 5 alvos por regra, nenhum agendamento em buses custom/de parceiros, SDKPipelineSchedule, exemplo de calendáriocron(0 12 1 * ? *)), com CDK/CloudFormation codificando a stack inteira: e MLOps gerenciado supera scripts DIY e cliques manuais sempre que versionamento, um gate de aprovação e uma trilha de auditoria forem exigidos.