
¡Bienvenido de nuevo, científico de datos! En mi publicación anterior, exploramos la facilidad de construir un entorno de aprendizaje automático utilizando la pila de ciencias de datos de Canonical (DSS) y ejecutar su primer modelo utilizando el curso SMOL que abarca la cara. Hoy, tomemos un paso más a través del seguimiento experimental. Los experimentos están en el corazón de la ciencia de datos, y tener las herramientas adecuadas para respaldarlo puede hacer que todo cambie. Por eso nos agrupamos Mlflow En DSS: te ayuda a rastrear, comparar y replicar experimentos sin esfuerzo.
¿Por qué es importante el seguimiento experimental?
El seguimiento de todos los experimentos manualmente puede ser un desafío a medida que explora nuevas ideas y modelos finos. Imagine tener que recordar qué hiperparámetros conducen a qué resultados o tratando de reproducir los experimentos realizados hace unas semanas. Mlflow resuelve este problema registrando automáticamente los detalles experimentales (desde parámetros y métricas hasta artefactos de modelos), por lo que siempre puede recibir dónde se detiene.
Para acceder a MlFlow desde su entorno DSS, ingrese lo siguiente en la terminal:
dss status
Copie la URL MLFLOW en el navegador y se le señalará a la interfaz de usuario MLFLOW. Puede estar vacío ahora.
Trabajemos en la parte superior de los ejemplos anteriores de ajuste fino y veamos cómo podemos comenzar a rastrear las ejecuciones de entrenamiento con solo unas pocas líneas de código.
Mlflow en acción
Nota: Antes de continuar, asegúrese de instalar las dependencias de Mlflow (lo restringimos packaging La biblioteca evita los conflictos con las dependencias del curso de SMOL de la cara abrazada):
pip install mlflow
pip install "packagingBasado en el código de nuestra publicación anterior, este fragmento agrega una función de seguimiento experimental para grabar parámetros clave, capturar métricas y almacenar artefactos del modelo.
import mlflow
mlflow.set_experiment("FineTuning")
with mlflow.start_run():
# Log key configuration parameters
mlflow.log_param("max_steps", 3)
mlflow.log_param("batch_size", 4)
mlflow.log_param("learning_rate", 5e-5)
mlflow.log_param("logging_steps", 10)
mlflow.log_param("save_steps", 3)
mlflow.log_param("eval_steps", 2)
mlflow.log_param("use_mps_device", True if device == "mps" else False)
mlflow.log_param("hub_model_id", finetune_name)
# Configure the SFTTrainer
sft_config = SFTConfig(
output_dir="./sft_output",
max_steps=3, # Adjust based on dataset size and desired training duration
per_device_train_batch_size=4, # Set according to your GPU memory capacity
learning_rate=5e-5, # Common starting point for fine-tuning
logging_steps=10, # Frequency of logging training metrics
save_steps=3, # Frequency of saving model checkpoints
evaluation_strategy="steps", # Evaluate the model at regular intervals
eval_steps=2, # Frequency of evaluation
use_mps_device=(True if device == "mps" else False), # Use MPS for mixed precision training
hub_model_id=finetune_name, # Set a unique name for your model)
# Initialize the SFTTrainer
trainer = SFTTrainer(
model=model,
args=sft_config,
train_dataset=ds["train"],
tokenizer=tokenizer,
eval_dataset=ds["test"])
# Train the model
trainer.train()
# Save the model
trainer.save_model(f"./{finetune_name}")
# Log the saved model as an MLFlow artifact
mlflow.pytorch.log_model(model, "fine_tuned_model")¿Qué hace este código mejorado?
- Registro de parámetros:
Registra parámetros clave, como identificadores de modelo y la cantidad de tokens nuevos, por lo que puede rastrear cómo las diferentes configuraciones afectan sus resultados. - Almacenamiento de productos artificiales:
Al guardar el modelo de ajuste como un artefacto, puede asegurarse de tener siempre un historial laboral que vuelva a visitar o compartir con su equipo. - Gestión experimental integral:
Todos estos detalles se proporcionarán automáticamente en el tablero MLFlow en DSS, lo que hace que sea muy fácil comparar experimentos, copiar resultados y perfeccionar su enfoque.
Si ejecuta este fragmento, registre sus experimentos y modelos junto con sus parámetros al tablero MLFlow.
Si desea explorar varios parámetros automáticamente, o incluso sentirse inteligente al respecto e iterar automáticamente en ciertos hiperparámetros, puede hacer lo siguiente:
# Define a list of learning rates to experiment with
learning_rates = [5e-5, 3e-5, 1e-5]
for lr in learning_rates:
with mlflow.start_run():
# Log the current learning rate
mlflow.log_param("learning_rate", lr)
# add below the same code as above, but parameterize the learning rate with this new variable
En este clip, iteramos sobre la lista de tasas de aprendizaje para explorar cómo cada configuración afecta el modelo. Para cada tarifa de aprendizaje, iniciamos una nueva ejecución MLFLOW para registrar parámetros experimentales, entrenar el modelo y guardar el modelo de ajuste fino. Esto le permite comparar diferentes resultados de ejecución más adelante.
Después de algunos entrenamientos con parámetros personalizados, verá algo similar en el tablero MLFlow:
Haga clic en uno de ellos para ejecutar y verá que MLFlow guarda todos los parámetros, así como muchos detalles internos sobre el modelo.
Para evaluar un modelo capacitado, vaya a la interfaz de usuario mlflow, haga clic en la ejecución que desea evaluar y copie la ID de ejecución desde la esquina superior izquierda (se ve así be1193d43a1a40c1bc84866b9462dddf). Regrese al cuaderno y cambie el código de evaluación del curso SMOL para recuperar y cargar el modelo usando mlflow:
inputs = tokenizer(formatted_prompt, return_tensors="pt").to(device)
run_id = “”
model_uri = f"runs:/{run_id}/fine_tuned_model"
loaded_model = mlflow.pytorch.load_model(model_uri)
outputs = model.generate(**inputs, max_new_tokens=300)
print("After training:")
print(tokenizer.decode(outputs[0], skip_special_tokens=True)) Una vez cargado, el modelo genera una respuesta para sus indicaciones, lo que le permite ver mejoras directamente desde el ajuste fino. Este proceso no solo confirma que sus experimentos se documentan correctamente, sino que también facilita la comparación de diferentes ejecuciones y selecciona el modelo de mejor rendimiento, todos los cuales no se buscan manualmente a través de archivos locales.
en conclusión
Integre MLFLOW con la pila de ciencia de datos de Canonical para llevar sus experimentos al siguiente nivel. Ya no tiene que preocuparse por rastrear manualmente cada ejecución, todo el proceso se simplifica y automatiza. Esto significa que puede centrarse más en los aspectos creativos de la construcción de modelos que en la gestión de detalles experimentales.
MlFlow no solo rastrea sus métricas y modelos de grabación. Algunas de las principales características proporcionadas por MLFlow incluyen:
- Visualización avanzada: Conozca sus experimentos con un tablero interactivo.
- Registro de modelos: Administre diferentes versiones del modelo para suavizar el flujo de trabajo de implementación.
- Implementar la tubería: Transición perfecta del experimento a la producción con soporte de implementación incorporado.
¿Listo para mejorar tu juego de ciencia de datos? Intente probar mlflow en DSS y encuentre un seguimiento experimental fácil y potente. ¡Feliz experimento!
Obtenga más información sobre cómo regular la pila de ciencias de datos.
Mire nuestro seminario web a pedido para explorar cómo obtener el entorno ML en 3 comandos en Ubuntu.









