Engenheiro de ML Sênior
Padrões de engenharia de ML em produção para implantação de modelos, infraestrutura MLOps e integração de LLM.
Sumário
Workflow de Implantação de Modelo
Implante um modelo treinado em produção com monitoramento:
- Exporte o modelo para formato padronizado (ONNX, TorchScript, SavedModel)
- Empacote o modelo com dependências em container Docker
- Implante no ambiente de staging
- Execute testes de integração no staging
- Implante canary (5% do tráfego) em produção
- Monitore latência e taxas de erro por 1 hora
- Promova para produção completa se as métricas passarem
- Validação: latência p95 < 100ms, taxa de erro < 0,1%
Template de Container
FROM python:3.11-slim
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY model/ /app/model/
COPY src/ /app/src/
HEALTHCHECK CMD curl -f http://localhost:8080/health || exit 1
EXPOSE 8080
CMD ["uvicorn", "src.server:app", "--host", "0.0.0.0", "--port", "8080"]
Opções de Serving
| Opção |
Latência |
Throughput |
Caso de Uso |
| FastAPI + Uvicorn |
Baixa |
Médio |
REST APIs, modelos pequenos |
| Triton Inference Server |
Muito Baixa |
Muito Alto |
Inferência GPU, batching |
| TensorFlow Serving |
Baixa |
Alto |
Modelos TensorFlow |
| TorchServe |
Baixa |
Alto |
Modelos PyTorch |
| Ray Serve |
Média |
Alto |
Pipelines complexos, multi-modelo |
Configuração de Pipeline MLOps
Estabeleça treinamento e implantação automatizados:
- Configure feature store (Feast, Tecton) para dados de treinamento
- Configure tracking de experimentos (MLflow, Weights & Biases)
- Crie pipeline de treinamento com logging de hiperparâmetros
- Registre o modelo no model registry com metadados de versão
- Configure implantação em staging acionada por eventos do registry
- Configure infraestrutura de teste A/B para comparação de modelos
- Habilite monitoramento de drift com alertas
- Validação: Novos modelos avaliados automaticamente contra baseline
Padrão de Feature Store
from feast import Entity, Feature, FeatureView, FileSource
user = Entity(name="user_id", value_type=ValueType.INT64)
user_features = FeatureView(
name="user_features",
entities=["user_id"],
ttl=timedelta(days=1),
features=[
Feature(name="purchase_count_30d", dtype=ValueType.INT64),
Feature(name="avg_order_value", dtype=ValueType.FLOAT),
],
source=FileSource(path="data/user_features.parquet"),
)
Gatilhos de Retreinamento
| Gatilho |
Detecção |
Ação |
| Agendado |
Cron (semanal/mensal) |
Retreinamento completo |
| Queda de performance |
Acurácia < threshold |
Retreinamento imediato |
| Drift de dados |
PSI > 0,2 |
Avaliar, depois retreinar |
| Volume de novos dados |
X novas amostras |
Atualização incremental |
Workflow de Integração de LLM
Integre APIs de LLM em aplicações de produção:
- Crie camada de abstração de provedor para flexibilidade de vendor
- Implemente lógica de retry com backoff exponencial
- Configure fallback para provedor secundário
- Configure contagem de tokens e truncamento de contexto
- Adicione cache de resposta para queries repetidas
- Implemente rastreamento de custo por requisição
- Adicione validação de saída estruturada com Pydantic
- Validação: Resposta parseia corretamente, custo dentro do orçamento
Abstração de Provedor
from abc import ABC, abstractmethod
from tenacity import retry, stop_after_attempt, wait_exponential
class LLMProvider(ABC):
@abstractmethod
def complete(self, prompt: str, **kwargs) -> str:
pass
@retry(stop=stop_after_attempt(3), wait=wait_exponential(min=1, max=10))
def call_llm_with_retry(provider: LLMProvider, prompt: str) -> str:
return provider.complete(prompt)
Gerenciamento de Custos
| Provedor |
Custo de Entrada |
Custo de Saída |
| GPT-4 |
$0,03/1K |
$0,06/1K |
| GPT-3.5 |
$0,0005/1K |
$0,0015/1K |
| Claude 3 Opus |
$0,015/1K |
$0,075/1K |
| Claude 3 Haiku |
$0,00025/1K |
$0,00125/1K |
Implementação de Sistema RAG
Construa pipeline de geração aumentada por recuperação:
- Escolha o banco de dados vetorial (Pinecone, Qdrant, Weaviate)
- Selecione o modelo de embedding com base na relação qualidade/custo
- Implemente estratégia de chunking de documentos
- Crie pipeline de ingestão com extração de metadados
- Construa recuperação com embedding de query
- Adicione reranking para melhoria de relevância
- Formate o contexto e envie para o LLM
- Validação: Resposta referencia contexto recuperado, sem alucinações
Seleção de Banco de Dados Vetorial
| Banco de Dados |
Hospedagem |
Escala |
Latência |
Melhor Para |
| Pinecone |
Gerenciado |
Alta |
Baixa |
Produção, gerenciado |
| Qdrant |
Ambos |
Alta |
Muito Baixa |
Crítico em performance |
| Weaviate |
Ambos |
Alta |
Baixa |
Busca híbrida |
| Chroma |
Self-hosted |
Média |
Baixa |
Prototipagem |
| pgvector |
Self-hosted |
Média |
Média |
Postgres existente |
Estratégias de Chunking
| Estratégia |
Tamanho do Chunk |
Sobreposição |
Melhor Para |
| Fixo |
500-1000 tokens |
50-100 |
Texto geral |
| Por sentença |
3-5 sentenças |
1 sentença |
Texto estruturado |
| Semântico |
Variável |
Baseado em significado |
Artigos de pesquisa |
| Recursivo |
Hierárquico |
Parent-child |
Documentos longos |
Monitoramento de Modelo
Monitore modelos em produção para drift e degradação:
- Configure rastreamento de latência (p50, p95, p99)
- Configure alertas de taxa de erro
- Implemente detecção de drift nos dados de entrada
- Rastreie mudanças na distribuição de predições
- Registre ground truth quando disponível
- Compare versões de modelo com métricas A/B
- Configure gatilhos de retreinamento automatizados
- Validação: Alertas disparam antes de degradação visível ao usuário
Detecção de Drift
from scipy.stats import ks_2samp
def detect_drift(reference, current, threshold=0.05):
statistic, p_value = ks_2samp(reference, current)
return {
"drift_detected": p_value < threshold,
"ks_statistic": statistic,
"p_value": p_value
}
Thresholds de Alerta
| Métrica |
Atenção |
Crítico |
| Latência p95 |
> 100ms |
> 200ms |
| Taxa de erro |
> 0,1% |
> 1% |
| PSI (drift) |
> 0,1 |
> 0,2 |
| Queda de acurácia |
> 2% |
> 5% |
Documentação de Referência
Padrões de Produção MLOps
references/mlops_production_patterns.md contém:
- Pipeline de implantação de modelo com manifestos Kubernetes
- Arquitetura de feature store com exemplos Feast
- Monitoramento de modelo com código de detecção de drift
- Infraestrutura de teste A/B com divisão de tráfego
- Pipeline de retreinamento automatizado com MLflow
Guia de Integração de LLM
references/llm_integration_guide.md contém:
- Padrão de camada de abstração de provedor
- Estratégias de retry e fallback com tenacity
- Templates de prompt engineering (few-shot, CoT)
- Otimização de tokens com tiktoken
- Cálculo e rastreamento de custos
Arquitetura de Sistema RAG
references/rag_system_architecture.md contém:
- Implementação do pipeline RAG com código
- Comparação e integração de banco de dados vetorial
- Estratégias de chunking (fixo, semântico, recursivo)
- Guia de seleção de modelo de embedding
- Padrões de busca híbrida e reranking
Ferramentas
Pipeline de Implantação de Modelo
python scripts/model_deployment_pipeline.py --model model.pkl --target staging
Gera artefatos de implantação: Dockerfile, manifestos Kubernetes, health checks.
RAG System Builder
python scripts/rag_system_builder.py --config rag_config.yaml --analyze
Cria scaffolding do pipeline RAG com integração de vector store e lógica de recuperação.
Suite de Monitoramento de ML
python scripts/ml_monitoring_suite.py --config monitoring.yaml --deploy
Configura detecção de drift, alertas e painéis de performance.
Tech Stack
| Categoria |
Ferramentas |
| Frameworks de ML |
PyTorch, TensorFlow, Scikit-learn, XGBoost |
| Frameworks LLM |
LangChain, LlamaIndex, DSPy |
| MLOps |
MLflow, Weights & Biases, Kubeflow |
| Dados |
Spark, Airflow, dbt, Kafka |
| Implantação |
Docker, Kubernetes, Triton |
| Bancos de Dados |
PostgreSQL, BigQuery, Pinecone, Redis |
1---2name: senior-ml-engineer3description: Skill de engenharia de ML para colocar modelos em produção, construir pipelines MLOps e integrar LLMs. Cobre implantação de modelos, feature stores, monitoramento de drift, sistemas RAG e otimização de custos. Use quando o usuário perguntar sobre implantar modelos de ML em produção, configurar infraestrutura MLOps (MLflow, Kubeflow, Kubernetes, Docker), monitorar performance ou drift de modelos, construir pipelines RAG ou integrar APIs de LLM com lógica de retry e controles de custo.4---56# Engenheiro de ML Sênior78Padrões de engenharia de ML em produção para implantação de modelos, infraestrutura MLOps e integração de LLM.910---1112## Sumário1314- [Workflow de Implantação de Modelo](#model-deployment-workflow)15- [Configuração de Pipeline MLOps](#mlops-pipeline-setup)16- [Workflow de Integração de LLM](#llm-integration-workflow)17- [Implementação de Sistema RAG](#rag-system-implementation)18- [Monitoramento de Modelo](#model-monitoring)19- [Documentação de Referência](#documentação-de-referência)20- [Ferramentas](#ferramentas)2122---2324## Workflow de Implantação de Modelo2526Implante um modelo treinado em produção com monitoramento:27281. Exporte o modelo para formato padronizado (ONNX, TorchScript, SavedModel)292. Empacote o modelo com dependências em container Docker303. Implante no ambiente de staging314. Execute testes de integração no staging325. Implante canary (5% do tráfego) em produção336. Monitore latência e taxas de erro por 1 hora347. Promova para produção completa se as métricas passarem358. **Validação:** latência p95 < 100ms, taxa de erro < 0,1%3637### Template de Container3839```dockerfile40FROM python:3.11-slim4142COPY requirements.txt .43RUN pip install --no-cache-dir -r requirements.txt4445COPY model/ /app/model/46COPY src/ /app/src/4748HEALTHCHECK CMD curl -f http://localhost:8080/health || exit 14950EXPOSE 808051CMD ["uvicorn", "src.server:app", "--host", "0.0.0.0", "--port", "8080"]52```5354### Opções de Serving5556| Opção | Latência | Throughput | Caso de Uso |57|--------|---------|------------|----------|58| FastAPI + Uvicorn | Baixa | Médio | REST APIs, modelos pequenos |59| Triton Inference Server | Muito Baixa | Muito Alto | Inferência GPU, batching |60| TensorFlow Serving | Baixa | Alto | Modelos TensorFlow |61| TorchServe | Baixa | Alto | Modelos PyTorch |62| Ray Serve | Média | Alto | Pipelines complexos, multi-modelo |6364---6566## Configuração de Pipeline MLOps6768Estabeleça treinamento e implantação automatizados:69701. Configure feature store (Feast, Tecton) para dados de treinamento712. Configure tracking de experimentos (MLflow, Weights & Biases)723. Crie pipeline de treinamento com logging de hiperparâmetros734. Registre o modelo no model registry com metadados de versão745. Configure implantação em staging acionada por eventos do registry756. Configure infraestrutura de teste A/B para comparação de modelos767. Habilite monitoramento de drift com alertas778. **Validação:** Novos modelos avaliados automaticamente contra baseline7879### Padrão de Feature Store8081```python82from feast import Entity, Feature, FeatureView, FileSource8384user = Entity(name="user_id", value_type=ValueType.INT64)8586user_features = FeatureView(87 name="user_features",88 entities=["user_id"],89 ttl=timedelta(days=1),90 features=[91 Feature(name="purchase_count_30d", dtype=ValueType.INT64),92 Feature(name="avg_order_value", dtype=ValueType.FLOAT),93 ],94 online=True,95 source=FileSource(path="data/user_features.parquet"),96)97```9899### Gatilhos de Retreinamento100101| Gatilho | Detecção | Ação |102|---------|-----------|--------|103| Agendado | Cron (semanal/mensal) | Retreinamento completo |104| Queda de performance | Acurácia < threshold | Retreinamento imediato |105| Drift de dados | PSI > 0,2 | Avaliar, depois retreinar |106| Volume de novos dados | X novas amostras | Atualização incremental |107108---109110## Workflow de Integração de LLM111112Integre APIs de LLM em aplicações de produção:1131141. Crie camada de abstração de provedor para flexibilidade de vendor1152. Implemente lógica de retry com backoff exponencial1163. Configure fallback para provedor secundário1174. Configure contagem de tokens e truncamento de contexto1185. Adicione cache de resposta para queries repetidas1196. Implemente rastreamento de custo por requisição1207. Adicione validação de saída estruturada com Pydantic1218. **Validação:** Resposta parseia corretamente, custo dentro do orçamento122123### Abstração de Provedor124125```python126from abc import ABC, abstractmethod127from tenacity import retry, stop_after_attempt, wait_exponential128129class LLMProvider(ABC):130 @abstractmethod131 def complete(self, prompt: str, **kwargs) -> str:132 pass133134@retry(stop=stop_after_attempt(3), wait=wait_exponential(min=1, max=10))135def call_llm_with_retry(provider: LLMProvider, prompt: str) -> str:136 return provider.complete(prompt)137```138139### Gerenciamento de Custos140141| Provedor | Custo de Entrada | Custo de Saída |142|----------|------------|-------------|143| GPT-4 | $0,03/1K | $0,06/1K |144| GPT-3.5 | $0,0005/1K | $0,0015/1K |145| Claude 3 Opus | $0,015/1K | $0,075/1K |146| Claude 3 Haiku | $0,00025/1K | $0,00125/1K |147148---149150## Implementação de Sistema RAG151152Construa pipeline de geração aumentada por recuperação:1531541. Escolha o banco de dados vetorial (Pinecone, Qdrant, Weaviate)1552. Selecione o modelo de embedding com base na relação qualidade/custo1563. Implemente estratégia de chunking de documentos1574. Crie pipeline de ingestão com extração de metadados1585. Construa recuperação com embedding de query1596. Adicione reranking para melhoria de relevância1607. Formate o contexto e envie para o LLM1618. **Validação:** Resposta referencia contexto recuperado, sem alucinações162163### Seleção de Banco de Dados Vetorial164165| Banco de Dados | Hospedagem | Escala | Latência | Melhor Para |166|----------|---------|-------|---------|----------|167| Pinecone | Gerenciado | Alta | Baixa | Produção, gerenciado |168| Qdrant | Ambos | Alta | Muito Baixa | Crítico em performance |169| Weaviate | Ambos | Alta | Baixa | Busca híbrida |170| Chroma | Self-hosted | Média | Baixa | Prototipagem |171| pgvector | Self-hosted | Média | Média | Postgres existente |172173### Estratégias de Chunking174175| Estratégia | Tamanho do Chunk | Sobreposição | Melhor Para |176|----------|------------|---------|----------|177| Fixo | 500-1000 tokens | 50-100 | Texto geral |178| Por sentença | 3-5 sentenças | 1 sentença | Texto estruturado |179| Semântico | Variável | Baseado em significado | Artigos de pesquisa |180| Recursivo | Hierárquico | Parent-child | Documentos longos |181182---183184## Monitoramento de Modelo185186Monitore modelos em produção para drift e degradação:1871881. Configure rastreamento de latência (p50, p95, p99)1892. Configure alertas de taxa de erro1903. Implemente detecção de drift nos dados de entrada1914. Rastreie mudanças na distribuição de predições1925. Registre ground truth quando disponível1936. Compare versões de modelo com métricas A/B1947. Configure gatilhos de retreinamento automatizados1958. **Validação:** Alertas disparam antes de degradação visível ao usuário196197### Detecção de Drift198199```python200from scipy.stats import ks_2samp201202def detect_drift(reference, current, threshold=0.05):203 statistic, p_value = ks_2samp(reference, current)204 return {205 "drift_detected": p_value < threshold,206 "ks_statistic": statistic,207 "p_value": p_value208 }209```210211### Thresholds de Alerta212213| Métrica | Atenção | Crítico |214|--------|---------|----------|215| Latência p95 | > 100ms | > 200ms |216| Taxa de erro | > 0,1% | > 1% |217| PSI (drift) | > 0,1 | > 0,2 |218| Queda de acurácia | > 2% | > 5% |219220---221222## Documentação de Referência223224### Padrões de Produção MLOps225226`references/mlops_production_patterns.md` contém:227228- Pipeline de implantação de modelo com manifestos Kubernetes229- Arquitetura de feature store com exemplos Feast230- Monitoramento de modelo com código de detecção de drift231- Infraestrutura de teste A/B com divisão de tráfego232- Pipeline de retreinamento automatizado com MLflow233234### Guia de Integração de LLM235236`references/llm_integration_guide.md` contém:237238- Padrão de camada de abstração de provedor239- Estratégias de retry e fallback com tenacity240- Templates de prompt engineering (few-shot, CoT)241- Otimização de tokens com tiktoken242- Cálculo e rastreamento de custos243244### Arquitetura de Sistema RAG245246`references/rag_system_architecture.md` contém:247248- Implementação do pipeline RAG com código249- Comparação e integração de banco de dados vetorial250- Estratégias de chunking (fixo, semântico, recursivo)251- Guia de seleção de modelo de embedding252- Padrões de busca híbrida e reranking253254---255256## Ferramentas257258### Pipeline de Implantação de Modelo259260```bash261python scripts/model_deployment_pipeline.py --model model.pkl --target staging262```263264Gera artefatos de implantação: Dockerfile, manifestos Kubernetes, health checks.265266### RAG System Builder267268```bash269python scripts/rag_system_builder.py --config rag_config.yaml --analyze270```271272Cria scaffolding do pipeline RAG com integração de vector store e lógica de recuperação.273274### Suite de Monitoramento de ML275276```bash277python scripts/ml_monitoring_suite.py --config monitoring.yaml --deploy278```279280Configura detecção de drift, alertas e painéis de performance.281282---283284## Tech Stack285286| Categoria | Ferramentas |287|----------|-------|288| Frameworks de ML | PyTorch, TensorFlow, Scikit-learn, XGBoost |289| Frameworks LLM | LangChain, LlamaIndex, DSPy |290| MLOps | MLflow, Weights & Biases, Kubeflow |291| Dados | Spark, Airflow, dbt, Kafka |292| Implantação | Docker, Kubernetes, Triton |293| Bancos de Dados | PostgreSQL, BigQuery, Pinecone, Redis |