Conceptos básicos de MLOps
10 ejemplos para empezar con MLOps: 7 básicos y 3 intermedios.
Prerrequisitos
uv venv && source .venv/bin/activate
uv pip install "mlflow>=2.20" "scikit-learn>=1.5" "fastapi>=0.115" "joblib"Ejemplos básicos
1. Registrar un experimento con MLflow
import mlflow
import mlflow.sklearn
from sklearn.ensemble import RandomForestClassifier
with mlflow.start_run():
clf = RandomForestClassifier(n_estimators=100, random_state=42)
clf.fit(X_train, y_train)
mlflow.log_param("n_estimators", 100)
mlflow.log_metric("accuracy", clf.score(X_test, y_test))
mlflow.sklearn.log_model(clf, "model")Relacionado: Seguimiento de Experimentos
2. Guardar un artefacto de modelo
import joblib
joblib.dump(pipeline, "models/churn_v1.joblib")3. Cargar y predecir
pipeline = joblib.load("models/churn_v1.joblib")
prediction = pipeline.predict(new_data)4. Hashear y versionar datos de entrenamiento
import hashlib
data_hash = hashlib.sha256(open("train.csv", "rb").read()).hexdigest()[:12]5. Entrenamiento mediante script (no notebooks)
# train.py - ejecutar con: python train.py --data train.csv
def main(data_path: str) -> None:
...
if __name__ == "__main__":
main()6. Servir con FastAPI
from fastapi import FastAPI
app = FastAPI()
@app.post("/predict")
def predict(features: dict):
return {"prediction": int(model.predict([list(features.values())])[0])}Relacionado: Servir con FastAPI
7. Prueba de humo de inferencia
def test_predict():
assert model.predict(sample_input).shape == (1,)Ejemplos intermedios
8. Registrar datos con DVC
dvc add data/train.csv
git add data/train.csv.dvcRelacionado: Versionado de Datos y Modelos (DVC)
9. Promocionar modelo a Staging
client = mlflow.tracking.MlflowClient()
client.transition_model_version_stage("churn", version=3, stage="Staging")Relacionado: Registros y Versionado de Modelos
10. Registrar distribución de predicciones
import logging
logging.info(f"prediction={pred} features_hash={hash}")Relacionado: Monitorización y Deriva
Versiones de la pila: Esta página se escribió para Python 3.14.0 (estable 3.14, mantenimiento 3.13), FastAPI 0.115+, Django 5.2, Flask 3.1, Pydantic 2, PyTorch 2.6+, pandas 2.2+, Polars 1.x, ruff 0.9+ y uv 0.6+.