Búsqueda de ejecuciones en MLflow

Busqueda De Ejecuciones En Mlflow



Para rastrear y gestionar los experimentos de aprendizaje automático, MLflow ofrece una plataforma extensa. Tener la capacidad de buscar ejecuciones es una de las características clave de MLflow. Esto permite identificar los experimentos desarrollados y organizarlos de manera que sea sencillo localizar la información cuando sea necesario. Podemos buscar ejecuciones utilizando la API de búsqueda de MLflow utilizando varios criterios diferentes que pueden incluir los siguientes:
  • ID o nombre del experimento
  • ID de ejecución
  • Parámetros y valores
  • Métricas y valores
  • Etiquetas
  • Otros atributos asociados con las ejecuciones.

Las ejecuciones se pueden filtrar por estado, hora de inicio, hora de finalización y duración con el uso de la API de búsqueda de MLflow. Hace que sea más fácil filtrar muchas ejecuciones y encontrar ejecuciones específicas que interesen a los usuarios.

Función de búsqueda de MLflow

Utilice la función mlflow.search_runs() para acceder a la API de búsqueda de MLflow. Esta función acepta una variedad de argumentos como los siguientes:







  • El ID o nombre del experimento.
  • Filtrar cadena o texto
  • El número máximo de ejecuciones a devolver se especifica mediante el argumento max_results

Una variante simplificada de la cláusula WHERE de SQL (lenguaje de consulta estructurado) es la cadena o texto de filtro. Se puede utilizar para indicar los criterios por los que queremos ordenar las ejecuciones.



Sintaxis de la función Search_Runs() de MLflow

El ID o nombre real del experimento en el que queremos buscar debe sustituirse por 'experiment_id o experiment_name' en el siguiente ejemplo. La variable search_criteria permite ingresar los criterios de búsqueda según se desee. Estos criterios pueden estar determinados por métricas, etiquetas, parámetros o características adicionales. La sintaxis básica de la función search_runs() es la siguiente:



# Importe la API de búsqueda de mlflow para usar la función search_runs

importar flujo ml

# Proporcione alguna identificación o nombre del experimento (es opcional;)

exp_id = 'ID o NOMBRE del experimento'

# Definir los criterios de búsqueda para ejecuciones.

cadena de búsqueda = 'metrics.accuracy > 0.8 AND params.learning_rate = '0.01' AND params.efficiency_rate > '80''

# Realizar la búsqueda

carreras = flujo ml. ejecuciones_de búsqueda ( experimento_ids = exp_id , cadena_filtro = cadena de búsqueda )

# Mostrar los resultados

imprimir ( 'Resultados de la búsqueda:' )

imprimir ( carreras )

Ejecute una búsqueda utilizando numerosos criterios

1. Buscar por valor de métrica

Las ejecuciones se pueden filtrar por los valores de métricas particulares utilizando el campo de métricas en la API de búsqueda de MLflow. En el campo de métricas aparece una colección de nombres de métricas separados por comas. Por ejemplo, la siguiente cadena de filtro localiza todas las ejecuciones con un valor de precisión superior a 0,9:





métrica. exactitud > 0.9

La lista completa de métricas disponibles para su uso en el campo de métricas se proporciona a continuación:

  • exactitud
  • auc
  • f1
  • precisión
  • recordar
  • mapa
  • pérdida de registro
  • error_clasificacion
  • multi_clase_logloss

Además, los usuarios pueden filtrar las ejecuciones según el rango de valores de una métrica utilizando el campo de métricas. Por ejemplo, la siguiente cadena de filtro localiza todas las ejecuciones que tienen una medida de precisión con un valor entre 0,4 y 0,8:



métrica. exactitud ENTRE 0.4 Y 0.8

En el campo de métricas, los operadores AND y OR combinan las métricas para encontrar las ejecuciones con precisión de métricas y valores de f1 superiores a 0,3 y 0,8:

métrica. exactitud > 0.3 Y métricas. f1 > 0.8

2. Buscar por valor de parámetro

Utilice el campo params en la API de búsqueda de MLflow para realizar una búsqueda por un valor de parámetro. Los nombres y valores de los parámetros se enumeran en el campo de parámetros mediante comas. En este ejemplo, la cadena de filtro mencionada anteriormente localiza todas las ejecuciones con el parámetro num_boost_round que tienen el valor 100:

parámetros. num_boost_round = '100'

Algunos ejemplos más de cadenas de búsqueda para valores de parámetros:

  • params.num_boost_round = 900
  • params.learning_rate ENTRE 0,001 Y 0,01
  • params.num_boost_round='70' Y params.learning_rate='0.01′

3. Buscar por etiquetas

A continuación se muestra un ejemplo de una búsqueda que emplea etiquetas:

Criterio de búsqueda = 'tags.mlflow.source.type = 'diccionario''

Ejemplo de valores de matriz y parámetros para realizar la función Mlflow.search_runs()

Analicemos un ejemplo de cómo configurar un experimento de MLflow, registrar ejecuciones y luego usar mlflow.search_runs() para iniciar una búsqueda. Para comprender completamente el código, siga estos pasos:

Paso 1: crear un experimento de MLflow

Comenzamos configurando un experimento de MLflow. Recupera el experimento existente si el experimento ya existe. Si no, crea uno nuevo.

Explicación del código:

La biblioteca MLflow se importa en la primera línea del código y el nombre del experimento se establece en 'Mi primer experimento de MLflow' en la siguiente línea. Cuando el nombre_del_experimento se pasa a la función 'mlflow.get_experiment_by_name', esa función devuelve 'Ninguno' si el experimento no existe y, en caso contrario, un objeto del experimento.

Verifique la existencia del experimento en el enunciado condicional. Si el experimento ya existe, establezca experiment_id. De lo contrario, utilice 'mlflow.create_experiment' para crear un nuevo experimento. Esta función devuelve el ID del experimento. Muestre el ID del experimento en la consola o pantalla del terminal al final del experimento. Copie el siguiente código en el bloc de notas y guarde el archivo con el nombre deseado y con extensión “.py”:

# importar biblioteca mlflow

importar flujo ml

# Crear o recuperar el experimento

nombre_exp = 'Mi primer experimento de MLflow'

# Obtenga el experimento por nombre usando la función mlflow get_experiment_by_name

Exp = flujo ml. get_experimento_por_nombre ( nombre_exp )

# Comprobar si el experimento no existe ya

si Exp es Ninguno :

# Cree un nuevo experimento y pase el nombre del experimento a la función mlflow.create_experiment

exp_id = flujo ml. crear_experimento ( nombre_exp )

# Mostrar el mensaje de éxito en la pantalla.

imprimir ( 'El experimento no existe. ¡El experimento se creó correctamente!' )

demás :

# Obtener el experiment_id del experimento existente

exp_id = Exp. id_experimento

imprimir ( '¡El experimento ya existe!' )

# Mostrar ID del experimento

imprimir ( 'ID del experimento:' , exp_id )

Ahora, inicie el programa en el símbolo del sistema o en la ventana de terminal usando el compilador Python y escriba 'Python' y luego el nombre del archivo que, en este caso, es 'MyFirstMlflowExperiment.py'. Cuando el experimento se ejecuta por primera vez, todavía no existe. Por lo tanto, MLFlow crea uno e imprime el ID del experimento en la pantalla de la consola:

Vuelva a ejecutar el código para verificar que no esté creando nuevos experimentos y para mostrar el ID de los que ya existen. La siguiente captura de pantalla muestra que el experimento ya existe:

Paso 2: registrar las ejecuciones con métricas y parámetros

Intentemos ahora registrar algunas ejecuciones con las métricas y parámetros del experimento recién establecido. En un escenario del mundo real, desarrollamos los modelos de aprendizaje automático y registramos la información relevante, como métricas y parámetros, al final de cada ejecución. Aquí, la precisión se utiliza como valor matricial y en este caso es 0,95. Los valores de los parámetros para el aprendizaje y la tasa de eficiencia son 0,01 y 90, respectivamente. Aquí está el código:

# Iniciar una ejecución de MLflow para registrar métricas y parámetros

con flujo ml. empieza a correr ( id_experimento = exp_id ) :

# Su código de aprendizaje automático aquí (este es solo un ejemplo simulado)

precisión_del_modelo = 0.95

tasa_de_aprendizaje_máquina = 0.01

tasa de eficiencia = 90

# Registrar métricas y parámetros

flujo ml. log_metric ( 'exactitud' , precisión_del_modelo )

flujo ml. log_param ( 'tasa de aprendizaje' , tasa_de_aprendizaje_máquina )

flujo ml. log_param ( 'tasa_de_eficiencia' , tasa de eficiencia )

El resultado, cuando se ejecuta el código antes mencionado, se ve aquí. El resultado es el mismo que antes:

Paso 3: realizar una búsqueda utilizando Mlflow.search_runs()

Finalmente, ejecutamos una búsqueda en las ejecuciones que se han registrado usando algunos parámetros y mostramos los resultados en la pantalla del terminal:

# Definir los criterios de búsqueda para ejecuciones.

definir_criterios_de_búsqueda = 'metrics.accuracy > 0.8 AND params.learning_rate = '0.01' AND params.efficiency_rate = '90''

# Realizar la búsqueda

carreras = flujo ml. ejecuciones_de búsqueda ( experimento_ids = exp_id , cadena_filtro = definir_criterios_de_búsqueda )

# Mostrar los resultados

imprimir ( 'Resultados de la búsqueda:' )

imprimir ( carreras )

La ejecución de la función search_runs produce una advertencia relacionada con la herramienta Git:


Agregue algo de código en la parte superior del archivo Python para desactivar esta advertencia. Aquí está la breve sección del código:

importar flujo ml

importar

. alrededor de [ 'GIT_PYTHON_REFRESH' ] = 'tranquilo'

La función 'mlflow.search_runs' se ejecuta correctamente una vez que se agregan estas líneas de código:

Conclusión

La función 'mlflow.search_runs' permite a los usuarios explorar y evaluar rápidamente los experimentos de aprendizaje automático, analizar muchas ejecuciones e identificar las variaciones o modelos de hiperparámetros óptimos que dan como resultado los resultados deseados. Es una herramienta eficaz para supervisar, planificar y analizar el flujo de trabajo del aprendizaje automático.