Logo GH

Implantação de modelos ML

1) Papel e objetivos

Implantação = entrega confiável de uma inferência para o produto e operações, cumprindo RG/AML/Legal e orçamentos.
Metas: baixa latência, alta disponibilidade, reprodução, segurança e reversibilidade rápida (rollback).

2) Arquiteturas da Serving

2. 1 Pattern

Online (real-time): REST/gRPC, p95 50-150 ms para personalização; ≤2-5 s para alertas RG/AML.
Near-real-time: Microatches 1-5 min (vitrines OLAP).
Batch/offline: Vitrines noturnas Gold, Exportação WORM para regulador.
In-processo scoring: incorporando o modelo light ao serviço (baixa demora).
Serverless: funções com início frio para tarefas raras.

2. 2 Topologias

Single Model Service → fácil e rápido.
O Conjunto/Graph (router → predrocess → model → postprocess) → piplins complexos.
O Sidecar Função Fetcher → puxa os fichas online a partir do dinheiro (Redis/Scylla).

3) Registro e versões modelo

Registry: 'model _ id', 'version', 'estágio =\Staging, Produção, Arquived 03', artefatos (peso, precificação, calibração), requisitos (CPU/GPU/memória), cartão do modelo (dados, métricas, riscos, fairness).
Artefatos imutáveis: conteúdo-hash; cópias WRM de lançamentos.
Política de conclusão: somente através de registro e manifestos declaratórios.

4) Contêiner e embalar

Dockerfile (esboço):
dockerfile
FROM python:3. 11-slim
ENV PYTHONUNBUFFERED=1
WORKDIR /app
COPY requirements. txt.
RUN pip install -r requirements. txt --no-cache-dir
COPY artifacts/./artifacts/
COPY src/./src/
CMD ["python", "src/serve. py"]
Servidor (FastAPI + gRPC, ideia):
python serve. py from fastapi import FastAPI import joblib, time app = FastAPI()
model = joblib. load("artifacts/model. joblib")
scaler = joblib. load("artifacts/scaler. joblib")

@app. post("/score")
def score(payload: dict):
t0 = time. time()
x = preprocess(payload, scaler)
y = float(model. predict_proba([x])[0,1])
return {"score": y, "latency_ms": int((time. time()-t0)1000), "model_version": "1. 8. 3"}

5) Kubernetes/Helm e skailing automático

Deployment (fatia):
yaml apiVersion: apps/v1 kind: Deployment metadata: {name: ml-score, labels: {app: ml-score}}
spec:
replicas: 3 selector: {matchLabels: {app: ml-score}}
template:
metadata: {labels: {app: ml-score}}
spec:
containers:
- name: api image: registry/ml-score:1. 8. 3@sha256:...
ports: [{containerPort: 8080}]
resources:
requests: {cpu: "500m", memory: "512Mi"}
limits:  {cpu: "2",  memory: "2Gi"}
envFrom: [{secretRef: {name: ml-secrets}}]
readinessProbe: {httpGet: {path: /healthz, port: 8080}, periodSeconds: 5}
livenessProbe: {httpGet: {path: /livez,  port: 8080}, periodSeconds: 10}
HPA (RPS/CPU):
yaml apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: {name: ml-score-hpa}
spec:
scaleTargetRef: {apiVersion: apps/v1, kind: Deployment, name: ml-score}
minReplicas: 3 maxReplicas: 50 metrics:
- type: Pods pods:
metric: {name: requests_per_second}
target: {type: AverageValue, averageValue: "15"}
- type: Resource resource: {name: cpu, target: {type: Utilization, averageUtilization: 70}}

6) Estratégias de descarte

Shadow (lançamento escuro): o novo modelo processa cópias de solicitações, e as respostas são ignoradas; comparação entre métricas/latência/custo.
Canary: 1-10% de tráfego → 25% → 50% → 100% para SLO verde; reversão automática em caso de degradação.
Blue-Green: pilhas paralelas; Um suingue instantâneo de roda.
Função Gradual Flag: Rotação por mercados/tenantes/dispositivos.
A/B/n: Experimentos online com sequential testing.

Roteiro (ideia):
yaml routes:
- match: {tenant: "EEA"} # feature-flags/rules to: {model: "1. 8. 3", weight: 20}
- match: {tenant: "EEA"}
to: {model: "1. 7. 9", weight: 80}

7) Fici online/offline: equivalência

Uma única biblioteca de transformações e uma função store (online + offline).
Teste de equivalência: MAE/MAPE entre fichas online e referência offline na amostra de referência.
Cash fish: Redis/Scylla, TTL para sinais de janela; temporizadores e fallbacks.

8) Observabilidade, SLO e alerting

8. 1 SLI/SLO de referência

Latência: p95 ≤ 150 ms (personalização), p99 ≤ 300 ms; RG/AML alert ≤ 5 com end-to-end.
Disponibilidade: ≥ 99. 9%.
Erro de inferência: ≤ 0. 5% 5xx; coverage ≥ 99%.
À deriva: PSI fich/score <limiar, ECE (calibragem) estável.
Бизнес: uplift Net Revenue, fraud saved, time-to-intervene.

8. 2 Métricas (Prometheus)

yaml
- http_request_duration_seconds{quantile="0. 95"}
- http_requests_total{code=~"5.."}
- model_inference_latency_ms_bucket
- feature_fetch_latency_ms_bucket
- model_score_distribution_bucket
- psi_feature_{name}
- expected_cost_live
Alertas (fragmento):
yaml
- alert: HighP95Latency expr: histogram_quantile(0. 95, sum(rate(model_inference_latency_ms_bucket[5m])) by (le)) > 0. 15 for: 10m
- alert: DriftDetected expr: psi_feature_amount_base > 0. 25 for: 15m

Трейсинг: OpenTelemetry — span’ы `feature_fetch`, `score`, `postprocess`, `guardrail`.

9) RG/AML guardrales e política de segurança

Pre-/Post-filter: máscaras de ação proibida (frequência de exibição, cooldown, proibição de offs agressivos).
Policy Shielding: escavação acima do limite RG → intervenção suave/pausa.
Auditoria: Loging 'policy _ id', 'propensity', 'mask', 'decision', 'reason'.
PII e residência: tokens em vez de ID, chaves individuais de criptografia e cluster em EEA/UK/BR; proibição de join's cruzado regional sem base.
Segredos: KMS/CMK, Secret Gerente; Nada de PII em logs/trens.

10) Calibragem, liminares e políticas de decisão

Calibragem (Platt/Isotonic) como artefato.
Limite de expected cost; configurável no registro/bandeira de fich.
Safety caps: limites superiores/inferiores de ação, override manual para complacência.

11) Retrocessos, degradação e DR

One-click rollback: alterna a rota para o anterior 'modelo _ versão'.
Runbook: cenários «latentnost↑», «erros de 5xx↑», «A deriva/calibragem quebrou», «o provedor de fit externo não está disponível».
Isolamento de falhas: circuito breaker, retry/backoff, dinheiro da última solução de validade.
DR.: bacapes artefatos/registro, replicação para a região «quente», ensinamentos.

Circuito breaker (pseudo-código):
python try:
features = fetch_features(timeout=30)
except TimeoutError:
features = last_known_good(user_id) # fallback

12) Costa-engenharia e desempenho

Perfilando caminho: fichas (30-60%), modelo (20-40%), rede/IO (10-30%).
Redução de custo: armazenamento em dinheiro, quotas de replay, modelos lightweight, INT8/FP16 (se apropriado), lazy-postprocess.
HPA em RPS/CPU/latency, limite state-size em strim-fiech.
Chargeback: cost/request, cost/feature; orçamentos para mercados/equipes.

13) Lançamentos seguros e conformidade

Critérios de pré-produção: SLO verde em shadow, sem deriva/fuga, cartão de modelo preenchido, fairness slides normal.
Regulador: Arquivo de lançamento WORM (peso, calibração, liminares, métricas, logs de testes), relatórios de exportação imutáveis.
DSAR/PTBF: procedimentos para remover vestígios de um usuário específico dos cajos/logs/fichas.

14) QA antes de sair

Testes de integração: API, esquema de fic, mala em branco/final.
Carga: p99, caudas de distribuição, tráfego burst.
Teste de equivalência online/offline.
Testes Chaos: desativação do fich-dinheiro/base, temporizações de serviços externos.

15) Exemplos de configuração

Ingresss com roteiro canarinho (ideia):
yaml
- match: [headers: {x-exp: "canary"}]
route:
- destination: {host: ml-score-v1-8-3, weight: 20}
- destination: {host: ml-score-v1-7-9, weight: 80}
Modelo de saúde (endpoint):
python
@app. get("/healthz")
def health():
return {"ok": True, "model_version": "1. 8. 3", "registry_sig_ok": verify_signature()}

16) Processos e RACI

R (Resolvível): MLOps (serving/orquestração/observação), Data Eng (fichas/cachês/contratos), Data Science (cartões de modelo/calibração/limiar).
A (Accountable): Head of Data / CDO.
C (Consulted): Compliance/DPO (PII/RG/AML/DSAR), Security (KMS/segredos/auditoria), SRE (SLO/incidentes), Finance (ROY/orçamentos).
I (Informed): Produto/Marketing/Operações/Suporte.

17) Mapa de trânsito de implementação

MVP (3-6 semanas):

1. Registro de modelo e artefatos imutáveis; FastAPI/gRPC-serviço + K8s/Helm.

2. Lançamento Shadow com monitoramento de p95/5xx/à deriva, teste de equivalência de fic.

3. Canary 10% → 50% → 100% com descarte automático e alertas.

4. Cartão modelo, calibragem, porta expected-cost e Guardrails v1.

Fase 2 (6-12 semanas):
  • Fic-cash, circuito breakers, runbooks/DR-ensinamentos.
  • Skeiling automático em RPS/latency, costa-dashboard e chargeback.
  • Monitoramento de slides fairness, arquivo de lançamento WORM.
Fase 3 (12-20 semanas):
  • Conde de Serving (candidatos → re-rank), slate-logity propensity.
  • Região Multi, Residência (EEA/UK/BR) com chaves individuais.
  • Auto-revezamento/à deriva, relatórios automáticos de qualidade/calibragem.

18) Folha de cheque pred pronto

  • O cartão do modelo está cheio; dados/fici/calibragem/liminares são versionizados.
  • Contratos Fiech e teste de equivalência online/offline - verdes.
  • SLO: p95, 5xx, coverage - verde em shadow e 10% canary ≥ 24 h.
  • Alertas e dashboards (latência/erros/deriva/expected-cost) estão incluídos.
  • Guardrails RG/AML e as auditorias de soluções estão ativas; PII/residência respeitados.
  • One-click rollback e runbook incidentes testados.
  • O custo se encaixa no orçamento; O HPA e o dinheiro estão configurados.

19) Anti-pattern e riscos

Saques manuais sem registro e artefactos imutáveis.
Fici online/offline discordantes → divergências de venda.
Falta de shadow/canary → regressão oculta.
O limiar não é expectado, não é calibrado.
Lookups externos sincronizados sem temporizações/cachê.
Nenhum DR./rollback, nenhum arquivo de lançamento WORM.

20) Total

A produção de ML não é um «desafio de modelo», mas uma plataforma de engenharia: registro e versões, saques seguros (shadow/canary/blue-green), disciplina de fic e calibragem, observabilidade e SLO, guardrails para RG/AML e um plano claro de reversão. Seguindo este playbook, você terá uma inferência rápida, confiável e complexa que gera um valor de negócio estável a um custo controlado.

Contact

Entrar em contacto

Contacte-nos para qualquer questão ou necessidade de apoio.Estamos sempre prontos para ajudar!

Telegram
@Gamble_GC
Iniciar integração

O Email é obrigatório. Telegram ou WhatsApp — opcionais.

O seu nome opcional
Email opcional
Assunto opcional
Mensagem opcional
Telegram opcional
@
Se indicar Telegram — responderemos também por lá.
WhatsApp opcional
Formato: +indicativo e número (ex.: +351XXXXXXXXX).

Ao clicar, concorda com o tratamento dos seus dados.