9 min leitura • Guide 766 of 877
Gerenciamento de Projetos de Machine Learning
Projetos de machine learning diferem do software tradicional - experimentos falham frequentemente, cronogramas são incertos e a implantação é complexa. O GitScrum ajuda equipes a gerenciar trabalho de ML efetivamente.
Fases do Projeto de ML
Estrutura de Fase
CICLO DE VIDA DO PROJETO ML:
┌─────────────────────────────────────────────────────────────┐
│ │
│ FASE 1: DEFINIÇÃO DO PROBLEMA │
│ ───────────────────────────── │
│ Duração: 1-2 semanas │
│ │
│ Tarefas: │
│ ☐ Definir problema de negócio │
│ ☐ Identificar métricas de sucesso │
│ ☐ Avaliar viabilidade │
│ ☐ Definir escopo MVP │
│ │
│ Saída: Decisão go/no-go, carta do projeto │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ FASE 2: PREPARAÇÃO DE DADOS │
│ ───────────────────────────── │
│ Duração: 2-4 semanas │
│ │
│ Tarefas: │
│ ☐ Coleta de dados │
│ ☐ Exploração de dados │
│ ☐ Engenharia de features │
│ ☐ Criação de pipeline de dados │
│ ☐ Divisão treino/teste │
│ │
│ Saída: Conjunto de dados limpo, conjunto de features, pipeline│
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ FASE 3: EXPERIMENTAÇÃO │
│ ───────────────────────────── │
│ Duração: 2-6 semanas (com limite de tempo) │
│ │
│ Tarefas: │
│ ☐ Modelo baseline │
│ ☐ Iterações de experimento │
│ ☐ Seleção de modelo │
│ ☐ Ajuste de hiperparâmetros │
│ │
│ Saída: Modelo treinado atendendo critérios (ou decisão de parar)│
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ FASE 4: PRODUÇÃO │
│ ─────────────────────────── │
│ Duração: 2-4 semanas │
│ │
│ Tarefas: │
│ ☐ Infraestrutura de serviço de modelo │
│ ☐ Monitoramento │
│ ☐ Configuração de teste A/B │
│ ☐ Rollout │
│ │
│ Saída: Modelo em produção │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ FASE 5: MANUTENÇÃO │
│ ────────────────────── │
│ Contínuo │
│ │
│ Tarefas: │
│ ☐ Monitoramento de modelo │
│ ☐ Detecção de drift │
│ ☐ Retreinamento │
│ │
└─────────────────────────────────────────────────────────────┘
Gerenciamento de Experimentos
Tarefas de Experimento
TAREFA DE EXPERIMENTO ML:
┌─────────────────────────────────────────────────────────────┐
│ │
│ ESTRUTURA DE EXPERIMENTO: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ ML-EXP-05: Testar BERT para classificação de sentimento││
│ │ ││
│ │ HIPÓTESE: ││
│ │ BERT fine-tuned superará sentimento baseado em regras ││
│ │ atual em 15%+ no score F1. ││
│ │ ││
│ │ BASELINE: ││
│ │ Atual baseado em regras: 0.72 F1 ││
│ │ ││
│ │ CRITÉRIOS DE SUCESSO: ││
│ │ ≥ 0.85 F1 no conjunto de teste ││
│ │ ││
│ │ LIMITE DE TEMPO: ││
│ │ Máximo 1 semana ││
│ │ ││
│ │ ABORDAGEM: ││
│ │ ☐ Fine-tune bert-base-uncased ││
│ │ ☐ Usar conjunto de treinamento rotulado (10K exemplos)││
│ │ ☐ Validação cruzada 5-fold ││
│ │ ☐ Comparar com baseline ││
│ │ ││
│ │ RECURSOS: ││
│ │ • GPU: 1x V100 ││
│ │ • Tempo de treinamento: ~4 horas ││
│ │ ││
│ │ CONDIÇÕES DE PARADA: ││
│ │ • F1 < 0.75 após 3 epochs → Parar, tentar modelo diferente││
│ │ • Treinamento diverge → Verificar dados, reiniciar ││
│ │ • Tempo excedido → Documentar resultados, decidir próximo││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ RESULTADOS DE EXPERIMENTO: │
│ │
│ ✅ SUCESSO: │
│ Atendeu critérios, prosseguir para produção │
│ │
│ ⚠️ PARCIAL: │
│ Alguma melhoria, decidir se vale continuar │
│ │
│ ❌ FALHA: │
│ Abaixo do baseline ou não vale complexidade │
│ → Ainda valioso! Documentar aprendizados │
└─────────────────────────────────────────────────────────────┘
Rastreando Resultados
DOCUMENTAÇÃO DE RESULTADOS DE EXPERIMENTO:
┌─────────────────────────────────────────────────────────────┐
│ │
│ ATUALIZAR TAREFA QUANDO CONCLUÍDA: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ ML-EXP-05: Testar BERT para sentimento ││
│ │ Status: ✅ Concluído ││
│ │ ││
│ │ RESULTADOS: ││
│ │ ─────────────────────────────────────────────────────── ││
│ │ Modelo F1 Precisão Recall Tempo ││
│ │ Baseline 0.72 0.70 0.74 - ││
│ │ BERT-base 0.89 0.87 0.91 4.2h ││
│ │ ─────────────────────────────────────────────────────── ││
│ │ ││
│ │ RESULTADO: ✅ Sucesso - excedeu alvo 0.85 ││
│ │ ││
│ │ APRENDIZADOS: ││
│ │ • BERT superou significativamente baseado em regras ││
│ │ • 10K exemplos suficientes para esta tarefa ││
│ │ • Treinamento GPU prático para retreinamento diário ││
│ │ ││
│ │ PRÓXIMOS PASSOS: ││
│ │ → Criar ML-PROD-01 para produção ││
│ │ ││
│ │ ARTEFATOS: ││
│ │ • Execução MLflow: [link] ││
│ │ • Checkpoint do modelo: s3://models/bert-sentiment-v1 ││
│ │ • Notebook: experiments/exp-05-bert.ipynb ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ EXPERIMENTOS FALHADOS SÃO VALIOSOS: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ ML-EXP-04: Testar regressão logística mais simples ││
│ │ Status: ❌ Não atendeu critérios ││
│ │ ││
│ │ RESULTADOS: F1 = 0.68 (abaixo do baseline) ││
│ │ ││
│ │ APRENDIZADOS: ││
│ │ • Bag of words insuficiente para sentimento nuançado ││
│ │ • Confirma necessidade de embeddings contextuais ││
│ │ ││
│ │ → Informa decisão EXP-05 de tentar BERT ││
│ └─────────────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────────────┘
Produção
Do Experimento à Produção
TAREFAS DE PRODUÇÃO ML:
┌─────────────────────────────────────────────────────────────┐
│ │
│ ÉPICO DE PRODUÇÃO: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ ML-PROD-01: Implantar modelo de sentimento ││
│ │ ││
│ │ De: ML-EXP-05 (modelo de sentimento BERT) ││
│ │ ││
│ │ Infraestrutura: ││
│ │ ☐ ML-PROD-01a: API de serviço de modelo ││
│ │ ☐ ML-PROD-01b: Otimização de inferência ││
│ │ ☐ ML-PROD-01c: Teste de carga ││
│ │ ││
│ │ Monitoramento: ││
│ │ ☐ ML-PROD-01d: Log de predições ││
│ │ ☐ ML-PROD-01e: Dashboards de performance ││
│ │ ☐ ML-PROD-01f: Detecção de drift ││
│ │ ││
│ │ Rollout: ││
│ │ ☐ ML-PROD-01g: Modo sombra (comparar com prod) ││
│ │ ☐ ML-PROD-01h: Configuração de teste A/B ││
│ │ ☐ ML-PROD-01i: Rollout gradual ││
│ │ ││
│ │ Documentação: ││
│ │ ☐ ML-PROD-01j: Cartão do modelo ││
│ │ ☐ ML-PROD-01k: Runbook ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ TAREFA DE SERVIÇO DE MODELO: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ ML-PROD-01a: API de serviço de modelo ││
│ │ ││
│ │ Endpoint: POST /api/v1/sentiment ││
│ │ ││
│ │ Requisitos: ││
│ │ • Latência p99 < 100ms ││
│ │ • Throughput: 1000 req/sec ││
│ │ • Disponibilidade: 99.9% ││
│ │ ││
│ │ Implementação: ││
│ │ ☐ TorchServe ou TF Serving ││
│ │ ☐ Quantização de modelo para velocidade ││
│ │ ☐ Batching para eficiência ││
│ │ ☐ Camada de cache ││
│ │ ☐ Degradação graciosa (fallback para baseado em regras)││
│ └─────────────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────────────┘
Monitoramento e Manutenção
Monitoramento de ML
TAREFAS DE MONITORAMENTO DE MODELO:
┌─────────────────────────────────────────────────────────────┐
│ │
│ MONITORAMENTO CONTÍNUO: │
│ │
│ MÉTRICAS DE PERFORMANCE: │
│ • Latência de predição │
│ • Throughput │
│ • Taxa de erro │
│ │
│ QUALIDADE DO MODELO: │
│ • Acurácia em amostras rotuladas │
│ • Distribuição de predições │
│ • Drift de features │
│ • Drift de labels │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ TAREFA DE ALERTA DE DRIFT: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ 🔴 ML-ALERT-12: Drift de modelo de sentimento detectado││
│ │ ││
│ │ Alerta: Mudança na distribuição de predições ││
│ │ Predições positivas: 40% → 65% (semana passada) ││
│ │ ││
│ │ Causas possíveis: ││
│ │ • Mudança genuína no sentimento do usuário ││
│ │ • Problema no pipeline de dados ││
│ │ • Degradação do modelo ││
│ │ ││
│ │ Investigação: ││
│ │ ☐ Verificar pipeline de dados ││
│ │ ☐ Amostrar e rotular manualmente predições recentes ││
│ │ ☐ Comparar distribuições de input de features ││
│ │ ││
│ │ Se problema de modelo: ││
│ │ ☐ Retreinar com dados recentes ││
│ │ ☐ Teste A/B de novo modelo ││
│ │ ☐ Roll out se melhor ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ CRONOGRAMA DE RETREINAMENTO: │
│ │
│ Tarefa de retreinamento regular (mensal): │
│ ☐ Coletar novos dados rotulados │
│ ☐ Retreinar modelo │
│ ☐ Avaliar vs produção │
│ ☐ Implantar se melhorado │
└─────────────────────────────────────────────────────────────┘
Coordenação de Equipe
Estrutura de Equipe de ML
COORDENAÇÃO DE EQUIPE ML:
┌─────────────────────────────────────────────────────────────┐
│ │
│ ROLES TÍPICOS EM PROJETO ML: │
│ │
│ Cientista de Dados: │
│ • Experimentação │
│ • Desenvolvimento de modelo │
│ • Engenharia de features │
│ │
│ Engenheiro de ML: │
│ • Produção │
│ • Serviço de modelo │
│ • Automação de pipeline │
│ │
│ Engenheiro de Dados: │
│ • Pipelines de dados │
│ • Feature stores │
│ • Qualidade de dados │
│ │
│ Gerente de Produto: │
│ • Definição de problema │
│ • Métricas de sucesso │
│ • Coordenação de stakeholders │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ ENTREGAS: │
│ │
│ DS → Engenheiro ML (produção): │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Entrega inclui: ││
│ │ ☐ Checkpoint do modelo ││
│ │ ☐ Código de treinamento ││
│ │ ☐ Pipeline de pré-processamento ││
│ │ ☐ Requisitos de performance ││
│ │ ☐ Limitações conhecidas ││
│ │ ☐ Casos de teste ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ EQUILÍBRIO DE SPRINT: │
│ • Misturar experimentos com produção │
│ • Não deixar experimentos privar trabalho de produção │
│ • Não deixar trabalho de produção bloquear experimentação│
└─────────────────────────────────────────────────────────────┘