Table of Contents |
---|
Interfaz de usuario: 56.32.21-UltimateXenon
Introducción
Se va a generar un modelo de predicción a partir de datos sobre diabetes, modelo que va a permitir predecir una medida cuantitativa de la progresión de la enfermedad un año después de la línea base.
...
Identificación: el nombre único con el que identificar a la Entidad. En este caso se introducirá «diabetes_raw».
Meta-Información: etiquetas con las que caracterizar la Entidad, que servirán para su filtrado a la hora de hacer búsquedas. Se pueden añadir algunas etiquetas referidas al tema, como pueden ser «diabetes», «dataset» o «ml».
Descripción: texto descriptivo extendido de la Entidad, como su uso, propiedades, características, etc. Por simplificar, se añadirá «Diabetes raw dataset»«Dataset de valores de diabetes».
Además, contamos con dos opciones de caracterización de la Entidad:
...
Formato: el formato del archivo de datos. En este caso se trata de un archivo separado por comas (CSV).
Carácter de escape: ninguno.
Carácter de citación: ninguno.
Carácter de separación: en este caso, los datos están separados por tabulaciones, por lo que se añadirá «/t|» para indicar este tipo de carácter.
...
Por último se tendrá que actualizar la consulta SQL de la Entidad. Para ello se pulsará en el botón de «Actualizar SQL», y al momento se mostrará la nueva consulta SQL:
...
A continuación, se generará el esquema de la Entidad pulsando en el botón de «Generar esquema»:
...
Hecho esto, se terminará pulsando en el botón de «Crear», situado en la parte superior derecha de la pantalla, para crear la nueva Entidad.<IMG>
...
Tras la Entidadpulsar el botón de crear, aparecerá un aviso indicando si se quiere añadir datos a la Entidad. Esto se realizará en el siguiente paso, por lo que se puede omitir.<IMG>
...
Creada la Entidad, se regresará al listado de Entidades del usuario, en donde se podrá comprobar que aparece correctamente.
...
Token: el token personal del usuario que lleva a cabo el experimento, y que puede encontrarse en el menú contextual anejo al nombre de usuario.
...
FilePath: la localización del archivo de datos que se ha cargado en MinIO, y que se comentó que era interesante apuntar. Como recordatorio, sería: «analyticsbucket/datalake/diabetes_raw/select_diabetes.tab_20230927170218.csv»
Alpha y l1_ratio: dos parámetros del experimento, que se mantendrán con el valor de «0.05».
...
Code Block | ||
---|---|---|
| ||
%python with mlflow.start_run(): mlflow.set_tag("mlflow.runName", "DiabetesModelGenerator") mlflow.log_param("alpha", alpha) mlflow.log_param("l1_ratio", l1_ratio) mlflow.log_metric("rmse", rmse) mlflow.log_metric("r2", r2) mlflow.log_metric("mae", mae) ##mlflowmlflow.sklearn.log_model(sk_model=lr, artifact_path="model") mlflow.sklearn.log_end_run() |
Del código anterior, es interesante hacer referencia a la línea de
Code Block | ||
---|---|---|
| ||
mlflow.sklearn.log_model(sk_model=lr, artifact_path="model") mlflow.end_run() |
Con este comando, se va a registrar y guardar el modelo entrenado, con todos los archivos de metadatos necesarios.
Si todo va correctamente, el resultado será como el siguiente:
...
Paso 6.- Registrar los datos de entrenamiento y del modelo en MLFlow
Este es el código estándar para el seguimiento de un experimento en MLFlow. Incluye todo dentro de “with mlflow.start_run()“ para iniciar un nuevo experimento.
Las otras funciones son:
mlflow.set_tag("mlflow.runName", ...)
→(opcional) para establecer un nombre de ejecución del experimento. Si no usas esto. sólo tendrás un id autogenerado, el ID del experimento.mlflow.log_param(...)
→ registra un parámetro de entrada para el experimento.mlflow.log_metric(...)
→ registra una métrica de salida para el experimento.mlflow.sklearn.log_model(lr, "model")
→ registra y guarda el modelo entrenado con todos los archivos de metadatos necesarios.
Si ejecutas este párrafo, tendrás una salida como esta. El proceso de registro ha terminado bien.
...
Si vas a la interfaz de usuario del Gestor de Modelos en el Control Panel:
...
Podrás ver la ejecución del experimento con todos los parámetros de registro, las métricas y los archivos:
...
Al hacer clic en el experimento, se abre la página de detalles:
...
Y, al final de la página, podemos revisar todos los archivos de este experimento y el propio modelo:
...
El run id de la derecha (runs:/859953c3a0dd4596bd15d864e91081ab/model) es importante porque lo vas a utilizar para publicar el modelo en el siguiente paso. Ésta es la referencia que necesitas para recoger el modelo en el MLFlow y hacer algunas evaluaciones con él.
También puedes registrarlo con el fin de etiquetarlo, versionarlo y tenerlo fuera del experimento. Puedes hacerlo con el código o puedes utilizar el botón de registro en el lado derecho:
...
Y si vas a la pestaña modelo, puedes verlo y trabajar con él.
Paso 7.- Crear una función Serverless en Python que evalúe los datos contra el modelo MLFlow
Con el modelo generado anteriormente, vas a crear una función Python que, con una entrada simple o múltiple, pueda obtener una predicción usando el modelo.
El primer paso es ir al menú Serverless Applications.
...
A continuación vas a crear (con el botón +) una nueva aplicación y vas a rellenar todas las entradas necesarias:
...
Puedes crear un nuevo repositorio o utilizar uno existente. En cualquier caso, vas a tener una nueva aplicación como esta:
...
Luego puedes ir al botón "Ver" y luego a la pestaña de funciones:
...
Si se navega hasta el gestor de modelos, se podrá ver la ejecución del experimento, con todos los parámetros de registro, las métricas y los archivos. Para ello, se navegará al menú de Procesamiento > MLOps:
...
Accediendo, se mostrará entonces el resumen de los modelos ejecutados
...
Al hacer clic en el experimento, se abre la página de detalles:
...
Y, al final de la página, se va a poder revisar todos los archivos de este experimento y el propio modelo:
...
El identificador (ID) del experimento de la derecha (runs:/859953c3a0dd4596bd15d864e91081ab/model) es importante porque se va a utilizar para publicar el modelo en el siguiente paso. Ésta es la referencia que se necesita para recoger el modelo en el MLFlow y hacer algunas evaluaciones con él.
También se puede registrar con el fin de etiquetarlo, versionarlo y tenerlo fuera del experimento. Se va a poder hacer con el código o se puede utilizar el botón de registro en el lado derecho:
...
Una vez registrado, aparecerá un aviso en la parte derecha indicando que se ha registro el experimento correctamente.
...
Navegando a la pestaña del modelo, se podrá verlo y trabajar con él.
Paso 7.- Crear una función serverless en Python que evalúe los datos contra el modelo MLFlow
Con el modelo generado anteriormente, se va a crear una función de Python que, con una entrada simple o múltiple, pueda obtener una predicción usando el modelo.
Para ello, se navegará hasta el menú de Lógica > Mis Funciones.
...
Esto mostrará el listado de aplicaciones serverless disponibles para el usuario. Se creará una nueva aplicación pulsando en el botón «+» situado en la parte superior derecha.
...
Aparecerá entonces el asistente de creación de la aplicación. En caso de no contar con un repositorio GIT en el que trabajar, habrá que crear uno nuevo rellenando la siguiente información:
...
Nombre: el identificador único de la aplicación serverless.
URL del servidor de GIT: dirección donde se encuentra el repositorio de GIT.
Usuario del GIT: el usuario con permisos en el repositorio.
Token privado: credencial de acceso al repositorio
Nombre del grupo de GIT: propiedad que sólo aplica a GitLab.
Rama GIT de trabajo: rama en la que trabajar en el repositorio.
Una vez rellena la información, se pulsará en el botón de «Crear» situado en la parte superior derecha de la pantalla para terminar la creación de la aplicación, y se regresará al listado de aplicaciones disponibles, donde ya aparecerá la que se acaba de crear.
...
Seguidamente, se pulsará en el botón de «Ver» para visualizar el modelo, y se navegará a la pestaña de «Funciones»:
...
El siguiente paso será crear o utilizar una función serverless existente. Se pulsará en el botón de «Create Function», y se crearán tres archivos.
En primer lugar, selecciona la rama principal en el lado derecho:
...