Compartir a través de


Configuración de MLflow para Azure Machine Learning

En este artículo, se explica cómo configurar MLflow para conectarse a un área de trabajo de Azure Machine Learning para el seguimiento, la administración de registros y la implementación.

Las áreas de trabajo de Azure Machine Learning son compatibles con MLflow, lo que significa que pueden actuar como servidores de MLflow sin ninguna configuración adicional. Cada área de trabajo tiene un URI de seguimiento de MLflow que MLflow puede usar para conectarse al área de trabajo. Las áreas de trabajo de Azure Machine Learning ya están configuradas para funcionar con MLflow, por lo que no se requiere ninguna configuración adicional.

Sin embargo, si trabaja fuera de Azure Machine Learning, debe configurar MLflow para que apunte al área de trabajo. Los entornos afectados incluyen la máquina local, Azure Synapse Analytics y Azure Databricks.

Importante

Al usar la infraestructura de procesos de Azure, no es necesario configurar el URI de seguimiento. Se configura automáticamente. Los entornos con configuración automática incluyen cuadernos de Azure Machine Learning, cuadernos de Jupyter hospedados en instancias de proceso de Azure Machine Learning y trabajos que se ejecutan en clústeres de proceso de Azure Machine Learning.

Requisitos previos

  • El paquete mlflow del SDK de MLflow y el complemento azureml-mlflow de Azure Machine Learning para MLflow. Puede usar el siguiente comando para instalar este software:

    pip install mlflow azureml-mlflow
    

    Sugerencia

    En lugar de mlflow, considere la posibilidad de usar mlflow-skinny. Este paquete es un paquete ligero de MLflow sin dependencias de almacenamiento SQL, servidor, interfaz de usuario o ciencia de datos. Se recomienda para los usuarios que necesitan principalmente funcionalidades de seguimiento y registro de MLflow, pero no quieren importar el conjunto completo de características, incluidas las implementaciones.

  • Un área de trabajo de Azure Machine Learning. Para crear un área de trabajo, consulte Crear recursos que necesita para empezar.

  • Permisos de acceso para realizar operaciones de MLflow en el área de trabajo. Para obtener una lista de las operaciones y los permisos necesarios, consulte operaciones de MLflow.

Configuración del URI de seguimiento de MLflow

Para realizar el seguimiento remoto o realizar un seguimiento de experimentos que se ejecutan fuera de Azure Machine Learning, configure MLflow para que apunte al URI de seguimiento del área de trabajo de Azure Machine Learning.

Para conectar MLflow a un área de trabajo de Azure Machine Learning, necesita el URI de seguimiento del área de trabajo. Cada área de trabajo tiene su propio URI de seguimiento, que empieza con el protocolo azureml://.

  1. Obtenga el URI de seguimiento del área de trabajo:

    SE APLICA A: Extensión de ML de la CLI de Azure v2 (actual)

    1. Inicie sesión y configure su área de trabajo:

      az account set --subscription <subscription-ID>
      az configure --defaults workspace=<workspace-name> group=<resource-group-name> location=<location> 
      
    2. Obtenga el URI de seguimiento utilizando el comando az ml workspace:

      az ml workspace show --query mlflow_tracking_uri
      
  2. Configure el URI de seguimiento:

    Use el método set_tracking_uri() para establecer el URI de seguimiento de MLflow en el URI de seguimiento del área de trabajo.

    import mlflow
    
    mlflow.set_tracking_uri(mlflow_tracking_uri)
    

    Sugerencia

    Algunos escenarios implican trabajar en un entorno compartido, como un clúster de Azure Databricks o un clúster de Azure Synapse Analytics. En estos casos, resulta útil establecer la variable de entorno MLFLOW_TRACKING_URI en el nivel de clúster en lugar de hacerlo para cada sesión. Al establecer la variable en el nivel de clúster, se configura automáticamente el URI de seguimiento de MLflow para que apunte a Azure Machine Learning en todas las sesiones del clúster.

Configurar autenticación

Después de configurar el seguimiento, también debe configurar el método de autenticación para el área de trabajo asociada.

De forma predeterminada, el complemento de Azure Machine Learning para MLflow realiza la autenticación interactiva abriendo el explorador predeterminado para solicitar las credenciales. No obstante, el complemento también admite otros mecanismos de autenticación. El paquete azure-identity proporciona esta compatibilidad. Este paquete se instala como una dependencia del complemento azureml-mlflow.

El proceso de autenticación prueba los métodos siguientes, uno después del otro, hasta que uno se realiza correctamente:

  1. Entorno: la información de la cuenta especificada a través de variables de entorno se lee y se usa para la autenticación.
  2. Identidad administrada: si la aplicación se implementa en un host de Azure con una identidad administrada habilitada, la identidad administrada se usa para la autenticación.
  3. CLI de Azure: si usa el comando az login de la CLI de Azure para iniciar sesión, las credenciales se usan para la autenticación.
  4. Azure PowerShell: si usa el comando Connect-AzAccount de Azure PowerShell para iniciar sesión, las credenciales se usan para la autenticación.
  5. Explorador interactivo: el usuario se autentica interactivamente a través del explorador predeterminado.

Para los trabajos interactivos en los que hay un usuario conectado a la sesión, puede confiar en la autenticación interactiva. No es necesario hacer nada.

Advertencia

Explorador interactivo autenticación bloquea la ejecución del código cuando solicita credenciales. Este enfoque no es adecuado para la autenticación en entornos desatendidos, como los trabajos de entrenamiento. Se recomienda configurar un modo de autenticación diferente en esos entornos.

En escenarios que requieren una ejecución desasistida, debe configurar una entidad de servicio para comunicarse con Azure Machine Learning. Para obtener información sobre cómo crear una entidad de servicio, consulte Configurar una entidad de servicio.

Use el identificador de inquilino, el identificador de cliente y el secreto de cliente de la entidad de servicio en el código siguiente:

import os

os.environ["AZURE_TENANT_ID"] = "<Azure-tenant-ID>"
os.environ["AZURE_CLIENT_ID"] = "<Azure-client-ID>"
os.environ["AZURE_CLIENT_SECRET"] = "<Azure-client-secret>"

Sugerencia

Al trabajar en entornos compartidos, se recomienda configurar estas variables de entorno en el nivel de proceso. Como práctica recomendada, adminístrelos como secretos en una instancia de Azure Key Vault.

Por ejemplo, en una configuración de clúster de Azure Databricks, puede usar secretos en variables de entorno de la siguiente manera: AZURE_CLIENT_SECRET={{secrets/<scope-name>/<secret-name>}}. Para obtener más información sobre la implementación de este enfoque en Azure Databricks, consulte Referencia a un secreto en una variable de entorno o consulte la documentación de su plataforma.

Si prefiere usar un certificado a un secreto, puede configurar las siguientes variables de entorno:

  • Establezca AZURE_CLIENT_CERTIFICATE_PATH en la ruta de acceso de un archivo que contenga el certificado y el par de claves privadas en el formato de correo con privacidad mejorada (PEM) o Public Key Cryptography Standards 12 (PKCS #12).
  • Establezca AZURE_CLIENT_CERTIFICATE_PASSWORD en la contraseña del archivo de certificado, si usa una contraseña.

Configurar los niveles de autorización y los permisos

Algunos roles predeterminados, como Científico de datos de AzureML y Colaborador, ya están configurados para realizar operaciones de MLflow en un área de trabajo de Azure Machine Learning. Si usa un rol personalizado, necesita los permisos siguientes:

  • Para usar el seguimiento de MLflow:

    • Microsoft.MachineLearningServices/workspaces/experiments/*
    • Microsoft.MachineLearningServices/workspaces/jobs/*
  • Para usar el registro de modelos de MLflow:

    • Microsoft.MachineLearningServices/workspaces/models/*/*

Para ver cómo conceder a una entidad de servicio que cree o a su cuenta de usuario acceso al área de trabajo, consulte Conceder acceso.

Solución de problemas de autenticación

MLflow intenta autenticarse en Azure Machine Learning en la primera operación que interactúa con el servicio, como mlflow.set_experiment() o mlflow.start_run(). Si tiene problemas o recibe mensajes de autenticación inesperados durante el proceso, puede aumentar el nivel de registro para obtener más detalles sobre el error:

import logging

logging.getLogger("azure").setLevel(logging.DEBUG)

Establecimiento del nombre del experimento (opcional)

Todas las ejecuciones de MLflow se registran en el experimento activo. Las ejecuciones se registran de manera predeterminada en un experimento denominado Default que se crea automáticamente. Puede configurar el experimento que se usa para el seguimiento.

Sugerencia

Al usar la CLI v2 de Azure Machine Learning para enviar trabajos, puede establecer el nombre del experimento mediante la propiedad experiment_name en la definición de YAML del trabajo. No es necesario configurarlo en el script de entrenamiento. Para más información, consulte YAML: nombre para mostrar, nombre del experimento, descripción y etiquetas.

Use el comando MLflow mlflow.set_experiment() para configurar el experimento.

experiment_name = "experiment_with_mlflow"
mlflow.set_experiment(experiment_name)

Configuración de compatibilidad con una nube de Azure no pública

El complemento de Azure Machine Learning para MLflow está configurado de manera predeterminada para trabajar con la nube global de Azure. Sin embargo, puede configurar la nube de Azure que usa estableciendo la variable de entorno AZUREML_CURRENT_CLOUD:

import os

os.environ["AZUREML_CURRENT_CLOUD"] = "AzureChinaCloud"

Puede identificar la nube que usa con el siguiente comando de la CLI de Azure:

az cloud list

La nube actual tiene el valor IsActive establecido en True.

Ahora que el entorno está conectado al área de trabajo en Azure Machine Learning, puede empezar a trabajar con él.