Escola da Nuvem · Aula visual parte 2

O balaio
volta.
Agora elevado ao quadrado
e rodando na AWS.

Ontem você aprendeu a medir um modelo. Hoje a gente vai mais fundo na régua (MSE, RMSE, R²), aprende a perguntar pro modelo por que ele decidiu (PDPs), e termina onde rodar tudo isso pagando menos com Trainium e Inferentia. Mexa nos controles. Aprende fazendo.

Bora continuar 🐾
😺 🐱 🐈‍⬛ 🐈 😸 😻 x² √x R² Trn · Inf
📐 MSE🚧 RMSE🎯 R²🔬 PDPs🧠 EC2 TRAINIUM⚡ EC2 INFERENTIA📐 MSE🚧 RMSE🎯 R²🔬 PDPs🧠 EC2 TRAINIUM⚡ EC2 INFERENTIA
00 · Recap rápido

Onde a gente parou.

Lembra dos 5 gatinhos do balaio cujo peso o modelo tava prevendo? Mel, Bento, Pipoca, Salem e Estrela. A gente calculou o MAE: 0,32 kg. Era simples: a média de quanto a gente errou, sem importar pra que lado.

🧠 Os mesmos 5 gatinhos, agora tabelados:

Gato Peso real Previsão Erro |real − previsto| Erro²
🐈 Mel3,2 kg3,5 kg0,30,09
🐈 Bento4,5 kg4,0 kg0,50,25
🐈 Pipoca2,8 kg3,0 kg0,20,04
🐈 Salem5,1 kg4,8 kg0,30,09
🐈 Estrela3,9 kg4,2 kg0,30,09
📏 MAE
(0,3 + 0,5 + 0,2 + 0,3 + 0,3) ÷ 5 = 0,32 kg
Trata todo erro igual. Pra cima ou pra baixo, mesma coisa.
📐 Erros² somados
0,09 + 0,25 + 0,04 + 0,09 + 0,09 = 0,56
Já dá pra sentir: erros maiores pesam mais. Bora pra MSE.
01 · MSE · Mean Squared Error

Elevar o erro ao quadrado muda tudo.

MSE faz uma coisinha aparentemente boba: ao invés de só somar os erros, ela eleva cada um ao quadrado antes. Parece detalhe, mas o efeito é dramático: erros grandes ficam GIGANTES, erros pequenos viram migalha.

⚠️ O efeito do gato outlier

Imagina que um 6º gatinho chega no balaio: o Garfield. É um gatão obeso e o modelo erra feio nele. Mexe no slider pra controlar o erro e veja como MAE e MSE reagem bem diferente:

Quanto maior o erro, mais o MSE explode. MAE só anda devagarinho.
MAE (kg)
0,52
RMSE (kg)
0,68
MSE = Σ (real − previsto)2 n
"E se eu não quiser deixar o modelo errar feio?"

O MSE é exatamente isso: ele amplifica os erros grandes ao quadrá-los. Errou 1 kg? Vira 1. Errou 2 kg? Vira 4 (não 2!). Errou 5 kg? Vira 25 (não 5!). Erros grandes contribuem desproporcionalmente pra métrica.

A unidade do MSE é estranha: se você prevê peso em kg, MSE vem em kg². Não dá pra falar "o modelo erra 0,5 kg²" pro chefe, ele te olha torto. Por isso a gente quase sempre passa do MSE pro RMSE (próximo capítulo).

Mas o MSE é a estrela quando você TREINA o modelo. Muitos algoritmos otimizam MSE internamente porque ele é derivável e convexo — propriedades matemáticas que ajudam o algoritmo a aprender melhor.

Quando usar? Quando você não tolera erros gigantes. Se o modelo prevê tempo de chegada de Uber: errar 5 min é ruim, errar 50 min é catastrófico. MSE/RMSE penalizam isso direito. MAE não percebe a diferença com a mesma intensidade.
02 · RMSE · Root Mean Squared Error

A raiz quadrada de volta ao chão.

RMSE é literalmente √MSE. Você tira a raiz quadrada do MSE e pronto: volta pra unidade original (kg, reais, minutos), mantendo a propriedade de "punir mais os erros grandes" que veio do quadrado.

📊 MAE vs RMSE lado a lado

Mexa de novo o slider do Garfield (lá em cima) e repare: MAE cresce devagarzinho. RMSE dispara quando o outlier piora. Mesma unidade (kg), comportamentos opostos.

Critério MAE RMSE
Fórmula média de |erro| √(média de erro²)
Unidade igual à variável (kg) igual à variável (kg)
Sensível a outliers? não muito MUITO
Fácil de explicar? sim, é a média do erro mais ou menos
Usada pra treinar? às vezes muito comum (via MSE)
RMSE = ( Σ (real − previsto)2 n )
"Por que não usar só MAE então?"

MAE e RMSE respondem a perguntas diferentes. MAE responde "em média, quanto erro?". RMSE responde "quão volátil é meu erro?". Um modelo pode ter MAE baixo mas RMSE alto: a maioria das previsões boas, mas alguns erros enormes escondidos.

Regra prática: se MAE e RMSE estão próximos, seus erros são todos parecidos — sem outliers. Se RMSE é bem maior que MAE, você tem casos catastróficos escondidos que merecem investigação.

Lê assim: "RMSE de 0,52 kg" = "o erro típico fica em torno de ±0,52 kg, mas com inclinação a punir mais os pontos longe da média".

No nosso caso: se o veterinário usa o modelo pra dose de remédio, RMSE alto te alerta: tem gatos onde o modelo se perde feio. Esses são os pacientes que vão sofrer overdose ou underdose. Vale a pena olhar caso a caso.
03 · R² · Coeficiente de Determinação

Seu modelo é melhor que chutar a média?

MAE e RMSE te dizem quanto seu modelo erra. Mas isso é "muito" ou "pouco"? Depende. R² responde de outro ângulo: quanto da variação dos dados o modelo consegue explicar?

A ideia é comparar com um baseline burro: um "modelo" que sempre prevê a média do peso (3,9 kg pra todo gato). R² mede o quanto seu modelo melhora em relação a esse burrão.

previsão perfeita Peso real (kg) Previsão do modelo (kg) 2 6 2 6 Peso previsto vs Peso real (15 gatos)
R² (Coeficiente de Determinação)
0,84
O modelo explica 84% da variação no peso dos gatos.
"Vale a pena ter modelo, ou chutar a média já basta?"

Imagina que eu nunca treinei modelo. Pra todo gato novo, eu digo "chuto 3,9 kg" (a média do treino). É o baseline mais idiota possível. Ele já erra alguma coisa, mas... é o piso.

R² compara meu modelo com esse burro:

  • R² = 1,0: modelo perfeito, sem erro nenhum
  • R² = 0,84: modelo explica 84% da variação. Excelente.
  • R² = 0: meu modelo é tão ruim quanto o burro
  • R² < 0: meu modelo é PIOR que o burro. Joga fora.

Cuidado: R² alto NÃO significa modelo "bom" pra qualquer coisa. Se os dados já têm pouca variação, até modelos preguiçosos têm R² alto. Sempre olhe junto com MAE/RMSE.

Quando usar? Pra comparar modelos num mesmo problema, ou pra responder ao chefe: "vale a pena ter ML aqui ou eu uso só uma média?". Se R² baixo, o ML não tá agregando muito sobre o trivial.
04 · PDP · Partial Dependence Plots

Por que o modelo decidiu assim?

Mudamos de problema: agora o modelo prevê "chance do gato ser adotado" (0 a 100%). Ele olha um monte de features: idade, peso, pelagem, castração. Mas... qual delas mais influencia a decisão? O PDP responde isso.

PDP = "se eu mudar UMA feature mantendo o resto fixo, como a previsão média muda?". É a maneira mais simples de abrir a caixa-preta sem matemática pesada. Clica nas features abaixo:

🐾Idade do gato
⚖️Peso (kg)
🎨Pelagem
🩺Castrado?
Idade do gato (anos) % chance de adoção 0% 100% Efeito da idade na chance de adoção
Leitura: filhotes (0-1 ano) têm a maior chance de adoção (~85%). Cai forte conforme o gato envelhece. Gatos idosos (10+ anos) caem pra menos de 20%. Triste, mas é o que o modelo aprendeu dos dados.
"O modelo é uma caixa-preta. Como entender o que ele pensa?"

O PDP responde isso em uma linha simples por feature: ele varia só aquela feature em todos os valores possíveis, mantendo as outras nas suas distribuições reais, e calcula a previsão média. O resultado é a curva.

Como ler:

  • Curva subindo → mais dessa feature, mais alta a previsão
  • Curva descendo → mais dessa feature, mais baixa
  • Curva flat → essa feature não importa muito pro modelo
  • Curva com "joelhos" → existem thresholds importantes

Cuidados: PDP assume que as features são independentes. Se idade e peso são correlacionados (filhote pesa pouco), o PDP pode mentir um pouquinho. Pra casos mais robustos, existem ALE plots e SHAP values.

Onde vira ouro? Compliance, regulamentação, debugging. Em finanças/saúde, você tem que explicar a decisão do modelo. PDP é a primeira parada de qualquer auditoria. "Por que negou meu crédito?" → mostra o PDP da renda, da idade, do score.
Mudança de cena

Beleza. O modelo
tá pronto.
Onde rodar agora?

Métricas resolvidas, modelo afinado, PDP bonito. Agora vem a pergunta que aparece em toda prova de AWS e em toda reunião com o time de plataforma: onde a gente treina e onde a gente serve esse modelo, gastando o mínimo possível?

📊 dados 🧠 treino 🤖 modelo ⚡ inferência 💰 ROI
05 · EC2 Trainium · Família Trn

O chip da AWS feito pra treinar modelos.

Treinar um modelo grande de ML em GPU tradicional custa muito caro. A AWS desenhou um chip próprio só pra essa tarefa: o AWS Trainium. Você encontra ele nas instâncias EC2 da família Trn1 e Trn2.

Trn TRAINIUM
EC2 Family · Trn1 / Trn2
Trainium
🧠 Para TREINO

Chip desenhado pela AWS pra treinar ML.

A AWS criou o Trainium pra resolver um problema concreto: as GPUs caras (NVIDIA A100, H100) são ótimas pra ML, mas custam um rim e nem sempre tão disponíveis. Trainium é o chip proprietário deles, voltado especificamente pra workloads de treino.

As instâncias EC2 que carregam esse chip são da família Trn1 (geração 1, mais comum hoje) e Trn2 (geração 2, mais nova e potente). Você acessa via SDK chamado AWS Neuron, que integra com PyTorch, TensorFlow e Hugging Face.

O grande apelo: custa significativamente menos por hora de treino que instâncias GPU equivalentes, especialmente em modelos grandes (LLMs, foundation models, deep learning pesado).

Família EC2
trn1.* / trn2.*
SDK
AWS Neuron
Workload
Treino
Vs GPU
↓ até ~50% custo

💰 Calculadora: treinar nosso modelo de adoção

Imagine que pra retreinar o classificador do AdoteUmaPata.com, você precisa rodar X horas em GPU ou em Trainium. Mexe no slider e veja o impacto:

Modelos pequenos: ~10-50h. Modelos grandes (LLMs, visão): 500h+. Foundation models: milhares.
🖥️ GPU tradicional
R$ 1.530
~R$ 15,30/hora (instância GPU comparável)
🧠 EC2 Trn1
R$ 770
~R$ 7,70/hora (trn1 comparável)
💵 Você economiza por treino
R$ 760 (50%)

Bora de Trainium quando...

  • Treinos longos e recorrentes (LLMs, foundation models)
  • Custo é o critério #1 (startup, projeto interno)
  • Modelos em PyTorch/TensorFlow padrão
  • Você quer ficar 100% na AWS sem depender de cota NVIDIA
🛑

Talvez ainda não:

  • Você usa frameworks/operadores muito exóticos não suportados
  • Time já produtivo em CUDA e não quer adaptar via Neuron
  • Treino curtinho, onde a economia não compensa o esforço
  • POCs rápidas onde reaproveitar código GPU é mais valioso
06 · EC2 Inferentia · Família Inf

O chip da AWS feito pra servir o modelo.

Treinar o modelo é uma coisa. Mas depois ele precisa responder pra milhões de fotos/dia do app de adoção. Isso é inferência, e a AWS tem um chip diferente, especializado nisso: o AWS Inferentia. Vive nas instâncias da família Inf1 e Inf2.

Inf INFERENTIA
EC2 Family · Inf1 / Inf2
Inferentia
⚡ Para INFERÊNCIA

Chip otimizado pra rodar em produção.

Servir um modelo é um problema diferente de treinar. Em treino, você roda gradient descent, atualiza pesos, faz forward + backward. Em inferência é só "forward": input entra, predição sai. Bilhões de vezes por dia, com latência baixa.

A AWS desenhou o Inferentia com isso em mente. Ele tem alto throughput (muitas predições/segundo) e baixa latência por inferência. As instâncias EC2 são da família Inf1 (geração 1) e Inf2 (geração 2, com mais memória — boa pra LLMs grandes).

O grande apelo: custo por inferência muito menor que GPU equivalente. Em escala (milhões/bilhões de requests/mês), a economia vira números absurdos.

Família EC2
inf1.* / inf2.*
SDK
AWS Neuron
Workload
Inferência
Vs GPU
↓ até ~70% custo

💰 Calculadora: servir o classificador em produção

O AdoteUmaPata.com recebe N fotos/mês pra classificar. Mexe no slider de volume mensal e veja o quanto a infra muda de preço:

App pequeno: ~1M/mês. App médio: 10-50M. App grande: 100M+. LLMs: bilhões.
🖥️ GPU tradicional
R$ 12.000
~R$ 1.200 por milhão de requests
⚡ EC2 Inf2
R$ 4.000
~R$ 400 por milhão de requests
💵 Economia mensal estimada
R$ 8.000 (66%)

Bora de Inferentia quando...

  • Volume de inferência é alto (milhões/bilhões/mês)
  • Custo por predição é a métrica principal
  • Modelos comuns (CV, NLP, recomendação, LLM)
  • Deploy via SageMaker, EKS ou EC2 puro
🛑

Talvez não compense:

  • Volume baixo (a economia não cobre o esforço de migrar)
  • Modelos com operadores customizados não suportados pelo Neuron
  • Latência ultra-baixa que pede outra arquitetura (edge, mobile)
  • Sua stack é Bedrock/SageMaker JumpStart e você não toca infra
🧠 Resumo na cabeça:

Trainium e Inferentia são "primos": ambos chips da AWS, acessados pelo mesmo SDK (Neuron), com a mesma promessa: menos custo que GPU NVIDIA. A diferença é o que cada um faz melhor: Trn pra treinar, Inf pra servir. Lembra: Trn = Training, Inf = Inference. Pronto, decorou.

TL;DR · Cola final da Parte 2

A cola da aula de hoje.

Salva, imprime, tira print. Tudo que vimos hoje em um cartão por conceito.

📐 MSE
média de (erro)²
"Quão MAL eu erro quando erro?"
Pune muito os erros grandes. Unidade estranha (kg², R²). Usado pra treinar.
🚧 RMSE
√MSE
"E em kg, quanto eu erro tipicamente?"
Mesma unidade da variável. Sensível a outliers. RMSE > MAE significa outliers escondidos.
🎯 R²
1 − SS_res / SS_tot
"Meu modelo é melhor que chutar a média?"
0 a 1 (ou negativo se ruim). R² > 0,8 é bom. Cuidado: depende da variação dos dados.
🔬 PDP
Partial Dependence Plot
"Como cada feature afeta a previsão?"
Curva por feature. Sobe = ajuda; desce = atrapalha; flat = não importa. Ótimo pra explicabilidade.
🧠 EC2 Trainium (Trn)
trn1.* / trn2.*
"Onde treino pagando menos?"
Chip AWS pra TREINO. Acessado via SDK Neuron. Economia significativa vs GPU NVIDIA.
⚡ EC2 Inferentia (Inf)
inf1.* / inf2.*
"Onde sirvo pagando menos?"
Chip AWS pra INFERÊNCIA. Mesmo SDK Neuron. Economia grande quando o volume é alto.
🪡 Trn vs Inf
mnemônico simples
"Como não confundir os dois?"
Trn = Training. Inf = Inference. Nome ajuda. Os dois SDK mesmo: Neuron.
🐾 Resumão geral
"Que pipeline montar?"
Mede (MSE/RMSE/R²) → explica (PDPs) → treina em Trn → serve em Inf → lucro (a métrica que o chefe quer).