4. Crear un Modelo Baseline - JhonyJacobi/Introduction-to-mlflow GitHub Wiki
Step 1: Creamos nuestro entorno de proyecto
- Clonamos en local nuestro repositorio remoto (basado en repo template https://github.com/JhonyJacobi/Introduction-to-mlflow.git)
- Desde VS Code nos dirigimos a nuestro directorio de repositorio
- Crear nuestro environment: Desde una terminal (bash) ejecutamos...
conda create -n basemodel-env python=3.12 -y
conda activate basemodel-env
Step 2: Resolvemos dependencias (librerias)
- Creamos nuestro archivo requirements.txt con las siguientes dependencias:
- mlflow==2.22.0
- xgboost==3.0.2
- scikit-learn==1.6.1
- Instalamos las dependencias...
pip install -r requirements.txt
Step 3: Crear script test_autologging.py
import mlflow
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_diabetes
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error
import mlflow.xgboost
import xgboost as xgb
import numpy as np
mlflow.set_tracking_uri("http://localhost:5000")
# Cargar datos
db = load_diabetes()
X_train, X_test, y_train, y_test = train_test_split(db.data, db.target, random_state=123)
# Mi primer experimento con mlflow.autolog()
mlflow.set_experiment("autolog_experiment")
with mlflow.start_run():
mlflow.autolog() # Activa autologging para todas las librerías compatibles
rf = RandomForestRegressor(n_estimators=100, max_depth=6, max_features=3)
rf.fit(X_train, y_train)
# Experimento con mlflow.sklearn.autolog()
mlflow.set_experiment("sklearn_autolog_experiment")
with mlflow.start_run():
mlflow.sklearn.autolog()
rf = RandomForestRegressor(n_estimators=100, max_depth=6, max_features=3)
rf.fit(X_train, y_train)
# Calcular RMSE en validación
y_pred = rf.predict(X_test)
rmse_test = np.sqrt(mean_squared_error(y_test, y_pred))
# Registrar RMSE en MLflow
mlflow.log_metric("validation_rmse", rmse_test)
# Experimento con mlflow.sklearn.autolog()
mlflow.set_experiment("xgboost_autolog_experiment")
with mlflow.start_run():
# Activar autologging para XGBoost
mlflow.xgboost.autolog()
# Entrenar el modelo
xgboost = xgb.XGBRegressor(objective="reg:squarederror", n_estimators=100, max_depth=3, learning_rate=0.1)
xgboost.fit(X_train, y_train)
# Calcular RMSE en validación
y_pred = xgboost.predict(X_test)
rmse_test = np.sqrt(mean_squared_error(y_test, y_pred))
# Registrar RMSE en MLflow
mlflow.log_metric("validation_rmse", rmse_test)
Step 4: Entrenamos nuestro modelo baseline y aplicamos autologging
- Entendamos y ejecutamos nuestro script test_autologging.py
python test_autologging.py
- Revismos nuestras ejecuciones en la UI de MLflow
mlflow ui
Nota: ¿Cómo puedo sincronizar mis cambios de mi repositorio con el repo template?
- Agrega el repo original como upstream Si clonaste tu repo a partir de un template, Git no lo relaciona automáticamente con el repo original. Primero, debes agregar el repo original como upstream:
bash: git remote add upstream https://github.com/NOMBRE_DEL_REPO_TEMPLATE.git
- Para asegurar de que upstream se agregó correctamente, ejecuta:
git remote -v
Debe mostrar tanto origin (tu repo remoto) como upstream (el repo original).
- Obtener los cambios del upstream
Ahora puedes traer los cambios del repositorio original con:
git fetch upstream
- Fusionar los cambios en tu rama Si quieres actualizar tu rama principal (main o master) con los cambios del repo original:
git checkout main # Cambia a tu rama principal
git merge upstream/main # Fusiona los cambios del upstream en tu repo
Si el repo original usa master en vez de main, cambia upstream/main por upstream/master.
- Resuelve conflictos (opcional) y sube los cambios: Si hay conflictos, resuélvelos manualmente en tu editor de código. Luego, guarda los cambios y sube la actualización a tu repo remoto
git push origin main
Con esto, tendrás los cambios del repo template en tu repositorio sin perder tus modificaciones.