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, los registros y la implementación.
Las áreas de trabajo de Azure Machine Learning son compatibles con MLflow, lo que significa que pueden actuar como un servidor 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 (como la máquina local, Azure Synapse Analytics o Azure Databricks), debe configurar MLflow para que apunte al área de trabajo.
Importante
Cuando se ejecuta en Azure Compute (cuadernos de Azure Machine Learning, cuadernos de Jupyter alojados en instancias de proceso de Azure Machine Learning o trabajos que se ejecutan en clústeres de proceso de Azure Machine Learning), no es necesario configurar el URI de seguimiento. Se configura automáticamente.
Requisitos previos
Necesita los siguientes requisitos previos para seguir este tutorial:
Instale el paquete
mlflow
del SDK de MLflow y el complementoazureml-mlflow
de Azure Machine Learning para MLflow de la siguiente manera:pip install mlflow azureml-mlflow
Sugerencia
Puede usar el paquete de
mlflow-skinny
, que es un paquete MLflow ligero sin dependencias de ciencia de datos, interfaz de usuario, servidor o almacenamiento de SQL. Este paquete se recomienda para los usuarios que necesitan principalmente las funcionalidades de seguimiento y registro de MLflow sin importar el conjunto completo de características, incluidas las implementaciones.Cree un área de trabajo de Azure Machine Learning. Para crear un área de trabajo, consulte Crear recursos que necesita para empezar. Revise los permisos de acceso que necesita para realizar las operaciones de MLflow en el área de trabajo.
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 más información sobre cómo conectar MLflow al área de trabajo, consulte Configuración de MLflow para Azure Machine Learning.
Configuración del URI de seguimiento de MLflow
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 y tiene el protocolo azureml://
.
Obtenga el URI de seguimiento del área de trabajo:
SE APLICA A: Extensión de ML de la CLI de Azure v2 (actual)
Inicie sesión y configure el área de trabajo:
az account set --subscription <subscription> az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
Puede obtener el URI de seguimiento mediante el comando
az ml workspace
:az ml workspace show --query mlflow_tracking_uri
Configuración del URI de seguimiento:
A continuación, el método
set_tracking_uri()
apunta el URI de seguimiento de MLflow a ese URI.import mlflow mlflow.set_tracking_uri(mlflow_tracking_uri)
Sugerencia
Al trabajar en entornos compartidos, como un clúster de Azure Databricks, un clúster de Azure Synapse Analytics o similar, resulta útil establecer la variable
MLFLOW_TRACKING_URI
de entorno en el nivel de clúster para configurar automáticamente el URI de seguimiento de MLflow para que apunte a Azure Machine Learning para todas las sesiones que se ejecutan en el clúster en lugar de hacerlo por sesión.
Configurar la autenticación
Una vez configurado 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.
El complemento de Azure Machine Learning para MLflow admite varios mecanismos de autenticación a través del paquete azure-identity
, que se instala como una dependencia para el complemento azureml-mlflow
. Los siguientes métodos de autenticación se prueban uno por uno hasta que uno de ellos se realiza correctamente:
- Entorno: lee la información de cuenta especificada mediante variables de entorno y la usa para autenticarse.
- Identidad administrada: si la aplicación se implementa en un host de Azure con la identidad administrada activada, se autentica con él.
- CLI de Azure: si un usuario inicia sesión mediante el comando
az login
de la CLI de Azure, se autentica como ese usuario. - Azure PowerShell: si un usuario inicia sesión mediante el comando
Connect-AzAccount
de Azure PowerShell, se autentica como ese usuario. - Explorador interactivo: autentica interactivamente a un usuario a través del explorador predeterminado.
En el caso de los trabajos interactivos en los que hay un usuario conectado a la sesión, puede confiar en la autenticación interactiva y, por tanto, no es necesario realizar ninguna otra acción.
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. Le recomendamos que configure un modo de autenticación diferente.
Para aquellos escenarios en los que se requiere una ejecución desatendida, debe configurar un principal de servicio para comunicarse con Azure Machine Learning.
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
Cuando trabaje en entornos compartidos, le recomendamos que configure estas variables de entorno en el proceso. Como práctica recomendada, adminístrelos como secretos en una instancia de Azure Key Vault.
Por ejemplo, en Azure Databricks puede usar secretos en variables de entorno como se indica a continuación en la configuración del clúster: AZURE_CLIENT_SECRET={{secrets/<scope-name>/<secret-name>}}
. Para más información sobre cómo implementar este enfoque en Azure Databricks, consulte Referencia a un secreto en una variable de entorno o consulte la documentación de la plataforma.
Si prefiere usar un certificado en lugar de un secreto, puede configurar las variables AZURE_CLIENT_CERTIFICATE_PATH
de entorno en la ruta de acceso a un PEM
archivo de certificado o PKCS12
(incluida la clave privada) y AZURE_CLIENT_CERTIFICATE_PASSWORD
con la contraseña del archivo de certificado, si existe.
Configurar los niveles de autorización y los permisos
Algunos roles predeterminados, como Científico de datos de AzureML o 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 obtener información sobre cómo conceder acceso a la entidad de servicio que creó o a la cuenta de usuario en el área de trabajo, vea Conceder acceso.
Solución de errores 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 encuentra problemas o 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 en el que se está realizando el seguimiento.
Sugerencia
Al enviar trabajos mediante la CLI de Azure Machine Learning v2, 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. Consulte YAML: nombre para mostrar, nombre del experimento, descripción y etiquetas para obtener más detalles.
Configure el experimento mediante el comando MLflow mlflow.set_experiment()
.
experiment_name = 'experiment_with_mlflow'
mlflow.set_experiment(experiment_name)
Compatibilidad con nubes de Azure no públicas
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
.
Pasos siguientes
Ahora que el entorno está conectado al área de trabajo en Azure Machine Learning, puede empezar a trabajar con él.