¿Son sus experimentos de aprendizaje automático un desastre? Aquí está la solución

un nuevo modelo. Obtendrá resultados básicos decentes con un modelo simple, pero intente mejorar el rendimiento con modelos más avanzados. Durante el desarrollo, su PM adquiere algunos datos adicionales que podrían resultar útiles y ahora puede volver a un modelo más simple. Después de un amplio ajuste de hiperparámetros, consulta a su equipo y ellos le aconsejan optimizar para una métrica de rendimiento diferente. Después de entregar finalmente un modelo, la parte interesada cambia la dirección del proyecto, lo que requiere una revisión completa.

Esta es una situación común para los científicos de datos, especialmente aquellos con equipos de colaboración cruzada, partes interesadas y prioridades cambiantes. El desarrollo de modelos puede convertirse rápidamente en una búsqueda inútil para determinar los requisitos, las fuentes de datos, las métricas de rendimiento, etc. A través de todo este caos, es fundamental que los equipos no solo puedan realizar un seguimiento de todas las fases del desarrollo del modelo, sino que también puedan reproducir los resultados rápidamente. Es necesario modelar la gobernanza.

Modelo de gobernanza

La gobernanza del modelo se refiere al marco mediante el cual un equipo mantiene controles sobre el uso de modelos, incluido el seguimiento de experimentos, el control de versiones, la reproducibilidad, etc. Es una capacidad crítica que muchos equipos no consideran hasta que sus modelos ya están en producción. Es importante contar con un proceso para realizar un seguimiento eficaz de los esfuerzos de desarrollo, los modelos en producción y los datos aprovechados para que las organizaciones puedan garantizar la calidad, el cumplimiento y monitorear la integración del aprendizaje automático.

Imagen por autor

Para garantizar que se produzcan los modelos correctos, necesitamos una forma de gestionar varios modelos y versiones, realizar un seguimiento de las métricas de rendimiento y reproducir los resultados. Aquí es donde entra en juego ML Flow. ML Flow es una plataforma de ML Ops de código abierto que permite el desarrollo, la implementación y la administración de modelos flexibles al agilizar el registro y el seguimiento de modelos, métricas y más.

Este artículo brindará una introducción sobre cómo instalar ML Flow, crear experimentos, registrar modelos y más.

Tutorial de flujo de aprendizaje automático

Desarrollo de modelos

Para nuestro modelo, construiremos un modelo de regresión lineal básico. Este es un modelo para predecir el salario anual de los profesionales de datos utilizando datos que incluyen el puesto de trabajo, el tamaño de la empresa, etc.

Ver datos aquí: https://www.kaggle.com/datasets/ruchi798/data-science-job-salaries (CC0: dominio público). Modifiqué ligeramente los datos para reducir la cantidad de opciones para ciertas funciones. Tenga en cuenta que este es un modelo muy pobre. Lo estamos usando solo para demostrar ML Flow.

#definir características independientes y dependientes X = datos_salario.drop(columnas = ‘salario_en_usd’) y = datos_salario[‘salary_in_usd’]

#dividir entre conjuntos de entrenamiento y prueba X_train, X_test, y_train, y_test = train_test_split( X, y, random_state = 104, test_size = 0.2, shuffle = True) #definir parámetros por separado para registrar params = {“fit_intercept”: True, “positive”: False} #ajustar el modelo de regresión lineal regr = linear_model.LinearRegression(**params) regr.fit(X_train, y_train) #hacer predicciones y_pred = regr.predict(X_test)

Tenga en cuenta que definimos los parámetros del modelo por separado. Esto será importante cuando incorporemos ML Flow.

Modelo de registro con flujo ML

Para comenzar a usar ML Flow, puede navegar hasta la terminal e instalarlo como un módulo. A continuación, ejecute el comando del servidor para alojar un servidor local en su máquina y aprovechar la interfaz de usuario de ML Flow.

pip instalar mlflow servidor mlflow –host 127.0.0.1 –puerto 8080

Ahora que tenemos ML Flow instalado y nuestro servidor local en ejecución, podemos registrar nuestro modelo. Antes de registrar un modelo, debemos iniciar un nuevo “experimento”. Piense en esto como un proyecto, un contenedor donde registraremos y almacenaremos todos los modelos, métricas y datos relacionados. etc. En el código siguiente, comenzamos un nuevo experimento titulado “Ejemplo de registro”.

Un experimento consta de ejecuciones que contienen el modelo utilizado, sus parámetros, métricas, artefactos y cualquier otra cosa que elija registrar. A medida que registre más ejecuciones, podremos realizar un seguimiento de nuestro progreso y comparar el rendimiento de los distintos modelos desarrollados.

Usando el siguiente código, nosotros:

Inicie el experimento Inicie una ejecución titulada “salary_baseline_regression” Registre el R2 ajustado como una métrica Registre los parámetros del modelo Establezca una etiqueta para el modelo Registre el modelo real import mlflow desde mlflow.models import infer_signature #set track uri mlflow.set_tracking_uri(uri = “http://127.0.0.1:8080”) #cree un nuevo experimento de MLflow mlflow.set_experiment(“Ejemplo de registro”) #iniciar una ejecución de MLflow con mlflow.start_run(run_name = “salary_baseline_regression”) como ejecución: # Registrar la métrica de pérdida mlflow.log_metric(“Adjusted R2”, r2_score(y_test, y_pred)) #registrar los hiperparámetros mlflow.log_params(params) #establecer una etiqueta que podamos usar para recordarnos para qué fue esta ejecución mlflow.set_tag(“Model Type”, “Línea de base”) #registrar el modelo model_info = mlflow.sklearn.log_model( sk_model = regr, artefacto_path = ‘modelo’, firma = infer_signature(X_train, regr.predict(X_train)), input_example = X_train, registrar_model_name = “salary_baseline_regression”)

Después de ejecutarlo, puede navegar a la interfaz de usuario de ML Flow usando el siguiente enlace: http://localhost:8080/

Navegando por la interfaz de usuario de ML Flow

La interfaz de usuario de ML Flow se abrirá en la pestaña “Experimentos”. Aquí podemos ver el experimento que creamos, la ejecución de nuestro modelo de referencia, el modelo utilizado, así como las métricas y parámetros que registramos.

Tenga en cuenta que es posible que las métricas y los parámetros no se muestren al principio. Puede agregarlos a la tabla usando el menú desplegable “Columnas”.

Imagen por autor

A continuación, haga clic en el nombre de la ejecución para navegar a la vista de ejecución. Esto nos lleva a la pestaña de descripción general donde podemos ver claramente todo lo que hemos registrado (modelo, métrica R2, parámetros del modelo).

Imagen por autor

A continuación, haga clic en el nombre del modelo o navegue hasta la vista del modelo. Aquí podemos ver nuestro modelo, agregar descripciones y/o etiquetas y realizar un seguimiento de sus versiones. El número de versión aumentará cada vez que creemos una ejecución usando este modelo.

Las etiquetas y descripciones son útiles para la documentación general y para etiquetar modelos en desarrollo, en revisión o en producción.

Imagen por autor

Hasta ahora, hemos visto cómo crear experimentos y ejecuciones, así como modelos de registro, métricas, parámetros, etc. Estos son los conceptos básicos de ML Flow. Ahora exploremos más opciones para automatizar algunos de los procesos y aprovechar al máximo ML Flow.

Opciones de registro avanzadas

Es probable que haya muchas métricas de las que nos gustaría realizar un seguimiento, que variarán según el modelo y el enfoque. Agregar y eliminar métricas cada vez que cambiamos nuestro enfoque puede resultar laborioso. Sin embargo, podemos alimentar a ML Flow con nuestros datos y resultados de prueba para automatizar el registro de métricas y optimizar nuestro proceso.

Primero, guardemos una copia de nuestros datos de prueba y los resultados de nuestro modelo.

#fusionar salarios y predicciones para mlfow eval_data = X_test.copy() eval_data[“salary”] = y_prueba

A continuación, le damos a ML Flow nuestros datos y le decimos cuál es nuestra variable objetivo (salario). Ahora podemos agregar algunas cosas a nuestro proceso ML Flow:

Registre nuestros datos para realizar un seguimiento de las entradas del modelo. Utilice mlflow.evaluate() para automatizar el registro de las métricas del modelo.

También podemos registrar ‘artefactos’, que pueden ser muchas cosas. Durante el desarrollo y la evaluación, puede resultar útil desarrollar visualizaciones que reflejen el rendimiento del modelo. También podemos registrarlos usando mlflow.log_artifact().

#establecer uri de seguimiento mlflow.set_tracking_uri(uri = “http://127.0.0.1:8080”) #crear una instancia de un conjunto de datos PandasDataset = mlflow.data.from_pandas( eval_data, source = ‘kaggle’, nombre = “ds_salaries”, objetivos = “salary”) #crear un nuevo experimento de MLflow mlflow.set_experiment(“Predicción salarial”) #iniciar un flujo de ML ejecutar con mlflow.start_run(run_name = “salary_baseline_regression”) como ejecución: #registrar el conjunto de datos mlflow.log_input(dataset, context = “training”) #registrar los hiperparámetros mlflow.log_params(params) #log pngs mlflow.log_artifact(‘Result.png’) #establecer una etiqueta que podamos usar para recordarnos para qué fue esta ejecución mlflow.set_tag(“Model Type”, “Baseline”) #registrar el modelo model_info = mlflow.sklearn.log_model( sk_model = regr, artefacto_path = ‘model’, firma = infer_signature(X_train, regr.predict(X_train)), input_example = X_train, registrar_model_name = “salary_baseline_regression”) model_uri = mlflow.get_artifact_uri(“model”) #crea el modelo uri y evaluar el resultado del modelo = mlflow.evaluate(modelo = model_uri, datos = conjunto de datos, modelo_tipo = “regresor”, evaluadores =[“default”])

Ahora, si regresamos a la interfaz de usuario de ML Flow y hacemos clic en ejecutar, podemos ver que hay varias métricas que estamos rastreando.

Imagen por autor

Y si queremos evaluar varios modelos en una ejecución, podemos comparar su rendimiento uno al lado del otro utilizando las visualizaciones automatizadas a continuación.

Imagen por autor

Para ver las visualizaciones que registró, navegue hasta la vista de artefactos.

Imagen por autor

Por último, ahora podemos ver nuestras entradas de datos y sus tipos. Es mejor registrar conjuntos de datos a medida que eliminamos o agregamos nuevas funciones, fuentes, etc.

Imagen por autor

Recordando modelos de flujo de ML

Para reproducir un modelo que hemos registrado, podemos recuperar fácilmente modelos de ML Flow usando el nombre y la versión del modelo. Esto también se puede utilizar para volver a entrenar modelos que están actualmente en producción.

model_name = “salary_baseline_regression” model_version = “latest” # Cargar el modelo desde el Registro de modelos model_uri = f”models:/{model_name}/{model_version}” model = mlflow.sklearn.load_model(model_uri)

Integración de ladrillos de datos

Si eres (como yo) fanático de Databricks, ML Flow está completamente integrado dentro de la plataforma. No es necesario ejecutar ML Flow localmente, ya que Databricks integra la interfaz de usuario de ML Flow en su vista “Experimentos”. También incluye funciones adicionales como seguimiento de agentes y aplicaciones de IA generativa e integra AutoML para la optimización del modelo. Consulte la documentación completa aquí: https://docs.databricks.com/aws/en/mlflow/

Conclusión

En conclusión, la gobernanza del modelo es una capacidad imprescindible para que cualquier organización garantice la calidad y el cumplimiento. Las herramientas de seguimiento y monitoreo como ML Flow ofrecen soluciones para optimizar los procesos de gobernanza de modelos y gestionar completamente el desarrollo y la implementación de modelos.

¡Espero que hayas disfrutado de mi artículo! No dude en comentar, hacer preguntas o solicitar otros temas.

Conéctese conmigo en LinkedIn: https://www.linkedin.com/in/alexdavis2020/