- 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.82. 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 mlflowimportar 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ámetroscon 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 tú
tú . 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.