Saltar al contenido principal

Capítulo 2: MLOps vs DevOps vs DataOps

Comprendiendo el panorama Ops​

El panorama moderno de datos y software involucra múltiples disciplinas "Ops". Comprender cómo se relacionan y en qué difieren es crucial para construir equipos y sistemas efectivos.

Resumen comparativo​

Tabla comparativa detallada​

AspectoDevOpsDataOpsMLOps
Enfoque principalEntrega de softwareEntrega de pipelines de datosEntrega de modelos de ML
Artefacto principalCódigo de aplicaciónProductos de datosModelos de ML
PruebasUnitarias, integración, E2ECalidad de datos, esquemaValidación de modelos, A/B
VersionadoSolo códigoLinaje de datosCódigo + Datos + Modelos
MonitoreoMétricas de app, logsMétricas de calidad de datosDesempeño del modelo, drift
Objetivo CI/CDDesplegar aplicacionesDesplegar pipelines de datosDesplegar modelos
Bucle de retroalimentaciónReportes de bugsProblemas de datosDegradación del modelo

DevOps: La base​

DevOps se enfoca en acortar el ciclo de vida de desarrollo mientras entrega funcionalidades, correcciones y actualizaciones de manera frecuente.

Prácticas clave 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/

Herramientas DevOps​

CategoríaHerramientas
Control de versionesGit, GitHub, GitLab
CI/CDJenkins, GitHub Actions, GitLab CI
ContenedoresDocker, Podman
OrquestaciónKubernetes, Docker Swarm
MonitoreoPrometheus, Grafana, Datadog
IaCTerraform, Ansible, Pulumi

DataOps: Gestión de pipelines de datos​

DataOps aplica principios de DevOps a los flujos de trabajo de analítica y de ingeniería de datos.

Prácticas clave 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)

Herramientas DataOps​

CategoríaHerramientas
OrquestaciónApache Airflow, Dagster, Prefect
Calidad de datosGreat Expectations, dbt tests, Soda
Catálogo de datosDataHub, Amundsen, Apache Atlas
ETL/ELTdbt, Spark, Fivetran
Linaje de datosOpenLineage, Marquez

MLOps: La intersección​

MLOps se sitúa en la intersección de DevOps y DataOps, heredando prácticas de ambos y agregando capacidades específicas de ML.

Qué aporta MLOps​

Retos específicos de MLOps​

RetoDescripciónSolución
Reproducibilidad del modeloMismo código, diferentes resultadosFijar semillas, bloquear entornos
Drift de datosLos datos de entrada cambian con el tiempoDetección de drift, monitoreo
Decaimiento del modeloEl desempeño del modelo se degradaEntrenamiento continuo, alertas
Gestión de experimentosSeguimiento de muchos experimentosMLflow, W&B, Neptune
Consistencia de featuresDesajuste entre features de entrenamiento y de servicioFeature stores

Estructuras de equipo​

Opción 1: Equipo centralizado 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 │
└─────────┘ └─────────┘ └─────────┘

Ventajas:

  • Estándares consistentes
  • Uso eficiente de recursos
  • Especialización

Desventajas:

  • Potencial cuello de botella
  • Puede no comprender necesidades específicas de los equipos

Opción 2: Ingenieros de MLOps embebidos​

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

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

Ventajas:

  • Conocimiento profundo del dominio
  • Iteración rápida
  • Comunicación directa

Desventajas:

  • Esfuerzos duplicados
  • Prácticas inconsistentes
  • Uso intensivo de recursos

Opción 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 un proyecto de ML​

ActividadData ScientistML EngineerMLOps EngineerData Engineer
Recolección de datosCIIR/A
Ingeniería de featuresR/ACIC
Desarrollo de modelosR/ACII
Pipeline de entrenamientoCR/ACI
Despliegue de modelosICR/AI
MonitoreoICR/AC
InfraestructuraIIR/AI

Leyenda: R = Responsable, A = Autoridad, C = Consultado, I = Informado

Puntos de colaboración​

Entrega de datos (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 despliegue (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

Puntos clave​

Summary
  1. DevOps se enfoca en la entrega de aplicaciones - MLOps extiende esto a los modelos
  2. DataOps se enfoca en la calidad de los datos - MLOps depende de datos limpios y versionados
  3. MLOps combina ambos y agrega prácticas específicas de ML (seguimiento de experimentos, versionado de modelos)
  4. La estructura del equipo debe ajustarse a la madurez y tamaño de la organización
  5. Interfaces claras entre equipos previenen cuellos de botella y confusión

Ejercicio práctico​

Cree un documento comparativo simple para su organización:

  1. Liste las prácticas actuales de DevOps
  2. Liste las prácticas actuales de DataOps (si existen)
  3. Identifique brechas para la implementación de MLOps
  4. Proponga cambios en la estructura del equipo

Siguiente: Capítulo 3: El ciclo de vida de ML