Pular para o conteúdo principal

Capítulo 2: MLOps vs DevOps vs DataOps

Entendendo o Cenário Ops​

O cenário moderno de dados e software envolve várias disciplinas "Ops". Compreender como elas se relacionam e diferem é crucial para construir equipes e sistemas eficazes.

Visão Geral da Comparação​

Tabela Comparativa Detalhada​

AspectoDevOpsDataOpsMLOps
Foco PrincipalEntrega de softwareEntrega de pipeline de dadosEntrega de modelos de ML
Artefato PrincipalCódigo da aplicaçãoProdutos de dadosModelos de ML
TestesUnitário, integração, E2EQualidade dos dados, esquemaValidação de modelo, A/B
VersionamentoApenas códigoLinhagem de dadosCódigo + Dados + Modelos
MonitoramentoMétricas de app, logsMétricas de qualidade de dadosPerformance do modelo, drift
Alvo de CI/CDDeploy de aplicaçõesDeploy de pipelines de dadosDeploy de modelos
Ciclo de FeedbackRelatórios de bugsProblemas de dadosDegradação do modelo

DevOps: A Fundação​

DevOps foca em encurtar o ciclo de desenvolvimento enquanto entrega funcionalidades, correções e atualizações com frequência.

Práticas Centrais de DevOps​

# Example: Standard DevOps CI/CD Pipeline
name: Application CI/CD
on:
push:
branches: [main, develop]
pull_request:
branches: [main]

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Build
run: npm run build

- name: Unit Tests
run: npm test

- name: Integration Tests
run: npm run test:integration

- name: Build Docker Image
run: docker build -t myapp:${{ github.sha }} .

deploy:
needs: build
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
steps:
- name: Deploy to Production
run: kubectl apply -f k8s/

Ferramentas DevOps​

CategoriaFerramentas
Controle de VersãoGit, GitHub, GitLab
CI/CDJenkins, GitHub Actions, GitLab CI
ContainersDocker, Podman
OrquestraçãoKubernetes, Docker Swarm
MonitoramentoPrometheus, Grafana, Datadog
IaCTerraform, Ansible, Pulumi

DataOps: Gerenciando Pipelines de Dados​

DataOps aplica princípios de DevOps aos fluxos de trabalho de análise e engenharia de dados.

Práticas Centrais de DataOps​

# Example: DataOps Pipeline with Great Expectations
import great_expectations as gx
from great_expectations.core.batch import BatchRequest

# Create data context
context = gx.get_context()

# Define expectations for data quality
validator = context.get_validator(
batch_request=BatchRequest(
datasource_name="my_datasource",
data_connector_name="default_inferred_data_connector",
data_asset_name="sales_data",
),
expectation_suite_name="sales_data_expectations"
)

# Data quality checks
validator.expect_column_values_to_not_be_null("customer_id")
validator.expect_column_values_to_be_between("quantity", min_value=1, max_value=1000)
validator.expect_column_values_to_be_unique("order_id")
validator.expect_column_values_to_match_regex("email", r"^[\w\.-]+@[\w\.-]+\.\w+$")

# Save expectations
validator.save_expectation_suite(discard_failed_expectations=False)

Ferramentas DataOps​

CategoriaFerramentas
OrquestraçãoApache Airflow, Dagster, Prefect
Qualidade de DadosGreat Expectations, dbt tests, Soda
Catálogo de DadosDataHub, Amundsen, Apache Atlas
ETL/ELTdbt, Spark, Fivetran
Linhagem de DadosOpenLineage, Marquez

MLOps: A Interseção​

MLOps está na interseção entre DevOps e DataOps, herdando práticas de ambos e adicionando capacidades específicas de ML.

O que MLOps Adiciona​

Desafios Específicos de MLOps​

DesafioDescriçãoSolução
Reprodutibilidade de ModeloMesmo código, resultados diferentesFixação de seed, bloqueio de ambiente
Data DriftDados de entrada mudam com o tempoDetecção de drift, monitoramento
Decaimento do ModeloPerformance do modelo degradaTreinamento contínuo, alertas
Gestão de ExperimentosRastrear muitos experimentosMLflow, W&B, Neptune
Consistência de FeaturesInconsistência entre treino/servingFeature stores

Estruturas de Equipe​

Opção 1: Equipe Centralizada de MLOps​

┌─────────────────────────────────────────────────────────┐
│ MLOps Platform Team │
├─────────────────────────────────────────────────────────┤
│ • Owns ML infrastructure │
│ • Provides self-service tools │
│ • Sets standards and best practices │
│ • Supports multiple ML teams │
└─────────────────────────────────────────────────────────┘
│
┌───────────────┼───────────────┐
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│ ML Team │ │ ML Team │ │ ML Team │
│ A │ │ B │ │ C │
└─────────┘ └─────────┘ └─────────┘

Vantagens:

  • Padrões consistentes
  • Utilização eficiente de recursos
  • Especialização técnica

Desvantagens:

  • Potencial gargalo
  • Pode não entender necessidades específicas das equipes

Opção 2: Engenheiros de MLOps Embutidos​

┌─────────────────────────────────────────────────────────┐
│ Product Team A │
├─────────────────────────────────────────────────────────┤
│ Data Scientists (3) + ML Engineer (1) + MLOps (1) │
└─────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────┐
│ Product Team B │
├─────────────────────────────────────────────────────────┤
│ Data Scientists (2) + ML Engineer (2) + MLOps (1) │
└─────────────────────────────────────────────────────────┘

Vantagens:

  • Conhecimento profundo do domínio
  • Iteração rápida
  • Comunicação direta

Desvantagens:

  • Esforços duplicados
  • Práticas inconsistentes
  • Alto consumo de recursos

Opção 3: Modelo Híbrido (Recomendado)​

┌─────────────────────────────────────────────────────────┐
│ Central MLOps Platform Team │
│ (Infrastructure, Tools, Standards, Support) │
└─────────────────────────────────────────────────────────┘
│
┌─────────────────────┼─────────────────────┐
▼ ▼ ▼
┌───────────┐ ┌───────────┐ ┌───────────┐
│ Product │ │ Product │ │ Product │
│ Team A │ │ Team B │ │ Team C │
│ │ │ │ │ │
│ ML Eng ◄──┼───────┼──► Shared │◄──────┼─► ML Eng │
│ │ │ Tools │ │ │
└───────────┘ └───────────┘ └───────────┘

Matriz de Responsabilidades​

Matriz RACI para Projeto de ML​

AtividadeCientista de DadosEngenheiro de MLEngenheiro de MLOpsEngenheiro de Dados
Coleta de DadosCIIR/A
Engenharia de FeaturesR/ACIC
Desenvolvimento de ModeloR/ACII
Pipeline de TreinamentoCR/ACI
Deploy de ModeloICR/AI
MonitoramentoICR/AC
InfraestruturaIIR/AI

Legenda: R = Responsável, A = Aprovador, C = Consultado, I = Informado

Pontos de Colaboração​

Entrega de Dados (DataOps → MLOps)​

# Example: Data contract between DataOps and MLOps
data_contract:
name: customer_features
version: 1.2.0
owner: data-engineering@company.com

schema:
customer_id:
type: string
nullable: false
pattern: "^CUS-[0-9]{8}$"

age:
type: integer
nullable: false
min: 18
max: 120

total_purchases:
type: float
nullable: false
min: 0.0

sla:
freshness: 1 hour
availability: 99.9%

delivery:
format: parquet
location: s3://data-lake/features/customer/
update_frequency: hourly

Entrega de Deploy (MLOps → DevOps)​

# Example: Model deployment specification
model_deployment:
name: customer-churn-model
version: 2.1.0

container:
image: mlplatform/models:customer-churn-v2.1.0
resources:
cpu: "2"
memory: "4Gi"
gpu: "0"

scaling:
min_replicas: 2
max_replicas: 10
target_cpu_utilization: 70%

endpoints:
health: /health
predict: /predict
metrics: /metrics

monitoring:
latency_p99_threshold_ms: 100
error_rate_threshold: 0.01

Principais Aprendizados​

Summary
  1. DevOps foca na entrega de aplicações – MLOps estende isso para modelos
  2. DataOps foca na qualidade dos dados – MLOps depende de dados limpos e versionados
  3. MLOps combina ambos e adiciona práticas específicas de ML (rastreamento de experimentos, versionamento de modelos)
  4. A estrutura da equipe deve acompanhar a maturidade e o tamanho da organização
  5. Interfaces claras entre equipes evitam gargalos e confusão

Exercício Prático​

Crie um documento simples de comparação para sua organização:

  1. Liste as práticas atuais de DevOps
  2. Liste as práticas atuais de DataOps (se houver)
  3. Identifique lacunas para implementação de MLOps
  4. Proponha mudanças na estrutura da equipe

Próximo: Capítulo 3: O Ciclo de Vida de ML