Deriva: a falha que não gera erro
- ⬜🔗 Pipelines, Model Registry e o passo de condição(AWS ML Engineer Associate (MLA-C01))
Recomendamos completar os pré-requisitos antes de seguir, mas nada te impede de continuar.
A falha que não gera erro
Um endpoint de ML degrada sem quebrar. Ele continua respondendo em 40 milissegundos, com código 200, sem exceção no log. O que mudou foi a qualidade da previsão — e nenhum sinal de infraestrutura consegue expressar isso. É por essa razão que monitoramento de ML é uma disciplina separada de monitoramento de serviço, e é o eixo do domínio 4.
| Tipo de deriva | O que mudou | Exemplo | Retreinar resolve? |
|---|---|---|---|
| De dado | A distribuição da ENTRADA | A faixa etária dos clientes mudou após uma campanha | Sim, em geral |
| De conceito | A relação entre entrada e SAÍDA | O que caracteriza fraude mudou porque o fraudador se adaptou | Sim, mas com rótulo NOVO |
| De rótulo | A distribuição da variável alvo | A taxa de inadimplência dobrou na base | Depende — pode exigir recalibrar limiar |
| De qualidade | O dado chegou quebrado | Um campo passou a vir nulo depois de um deploy a montante | Não — corrija a origem |
A distinção entre deriva de dado e de conceito é a que a prova explora
Deriva de dado se detecta sem rótulo nenhum: basta comparar a distribuição de entrada atual com a de referência. Deriva de conceito NÃO se detecta assim — a entrada pode estar idêntica e a relação com a resposta ter mudado. Detectá-la exige rótulo verdadeiro, que costuma chegar com atraso, e é por isso que ela é a mais perigosa: o alarme que você configurou provavelmente não a pega.
O que o Model Monitor observa
- Qualidade de dado — a entrada respeita o esquema, os tipos e as faixas da linha de base? Pega campo nulo, tipo trocado e valor fora do domínio.
- Qualidade de modelo — as previsões batem com o rótulo verdadeiro quando ele chega? É o único que mede acerto de verdade, e depende do rótulo existir.
- Deriva de viés — o tratamento entre grupos mudou desde a implantação?
- Deriva de atribuição de atributo — a importância relativa dos atributos mudou? É um sinal precoce e sutil de que o mundo mudou antes de a métrica cair.
Os quatro dependem de uma LINHA DE BASE capturada a partir do conjunto de treino: as estatísticas e restrições que definem o que é normal. Sem linha de base não há do que divergir, e é o passo que mais se esquece de configurar.
Alarme sem ação é ruído com custo
Configurar detecção de deriva sem decidir o que acontece quando ela dispara produz um painel que ninguém olha depois do terceiro mês. Cada alarme precisa de uma resposta escrita: retreinar automaticamente, abrir chamado, degradar para regra de negócio, ou notificar e nada mais — desde que "nada mais" seja uma decisão consciente, e não o padrão por omissão.
from sagemaker.model_monitor import DefaultModelMonitor, DataCaptureConfig
from sagemaker.model_monitor.dataset_format import DatasetFormat
# 0. Sem captura, não há o que comparar depois. Precisa estar ligado no DEPLOY.
modelo.deploy(..., data_capture_config=DataCaptureConfig(
enable_capture=True, sampling_percentage=20,
destination_s3_uri="s3://lago/capturado/"))
monitor = DefaultModelMonitor(role=ROLE, instance_count=1, instance_type="ml.m5.xlarge")
# 1. A linha de base sai do conjunto de TREINO: é a definição do que é normal.
monitor.suggest_baseline(
baseline_dataset="s3://lago/curado/train/dados.csv",
dataset_format=DatasetFormat.csv(header=True),
output_s3_uri="s3://lago/baseline/",
)
# 2. A programação compara o capturado contra a linha de base, de hora em hora.
monitor.create_monitoring_schedule(
endpoint_input=predictor.endpoint_name,
output_s3_uri="s3://lago/relatorios-monitor/",
schedule_cron_expression="cron(0 * ? * * *)",
enable_cloudwatch_metrics=True,
)
# 3. Alarme SEM ação escrita vira ruído que ninguém olha no terceiro mês.
# Ligue-o a algo: retreinar, abrir chamado, ou degradar para regra de negócio.
cloudwatch.put_metric_alarm(
AlarmName="deriva-credito", MetricName="feature_baseline_drift_valor",
Threshold=0.3, ComparisonOperator="GreaterThanThreshold",
AlarmActions=[TOPICO_SNS_QUE_DISPARA_O_PIPELINE],
)Um modelo de detecção de fraude piora ao longo de dois meses. A distribuição das entradas está idêntica à da linha de base. Que tipo de deriva é essa?
Retreinar: quando, e disparado por quê
| Gatilho | Como funciona | Risco |
|---|---|---|
| Por calendário | Toda semana, todo mês | Retreina sem necessidade e não retreina quando precisa |
| Por deriva detectada | Alarme de distribuição dispara o pipeline | Depende de linha de base bem escolhida |
| Por queda de métrica | Qualidade de modelo abaixo do limiar | Só funciona onde o rótulo verdadeiro chega |
| Manual | Alguém decide | Não escala, mas é honesto quando o rótulo é raro |
O calendário é o mais usado e o mais fraco: ele não sabe nada sobre o estado do modelo. A combinação que a prova prefere é gatilho por deriva com portão de qualidade no pipeline — o alarme dispara o retreino, e o passo de condição impede que o resultado seja promovido se não superar o modelo atual.
Você quer detectar degradação de um modelo cujo rótulo verdadeiro só chega 90 dias depois da previsão. O que monitorar enquanto isso?
Uma equipe configurou detecção de deriva mas nunca definiu o que fazer quando o alarme dispara. Qual é a consequência?
Próximo passo
Falta a camada que atravessa tudo o que veio antes: quem pode treinar, de onde o dado sai, com que chave ele é cifrado e como se prova depois quem fez o quê.
Perguntas frequentes
❓ Qual a diferença entre drift de dados e drift de conceito?
❓ Como monitorar um modelo quando o rótulo verdadeiro demora meses para chegar?
❓ Qual o melhor gatilho para retreinar um modelo em produção?
Terminou de ler?
Marcar como concluído registra o XP, mantém sua sequência e coloca 3 cartas deste módulo na fila de revisão espaçada.
Próximos passos sugeridos
Temas deste módulo
Discussão
Carregando comentários…