Configurer MLflow pour Azure Machine Learning
Cet article décrit comment configurer MLflow pour se connecter à un espace de travail Azure Machine Learning pour le suivi, la gestion des registres et le déploiement.
Les espaces de travail Azure Machine Learning sont compatibles avec MLflow, ils peuvent donc servir de serveur MLflow sans configuration supplémentaire. Chaque espace de travail a un URI de suivi MLflow que MLflow peut utiliser pour se connecter à l’espace de travail. Les espaces de travail Azure Machine Learning étant déjà configurés pour utiliser MLflow, aucune configuration supplémentaire n’est nécessaire.
Toutefois, si vous travaillez en dehors d’Azure Machine Learning, vous devez configurer MLflow pour qu’il pointe vers l’espace de travail. Les environnements affectés sont notamment votre machine locale, Azure Synapse Analytics et Azure Databricks.
Important
Quand vous utilisez l’infrastructure de calcul Azure, vous n’avez pas besoin de configurer l’URI de suivi. Il est automatiquement configuré pour vous. Les environnements avec une configuration automatique sont notamment les notebooks Azure Machine Learning, les notebooks Jupyter hébergés sur des instances de calcul Azure Machine Learning et les travaux exécutés sur des clusters de calcul Azure Machine Learning.
Prérequis
Le package
mlflow
du SDK MLflow et le plug-inazureml-mlflow
d’Azure Machine Learning pour MLflow. Vous pouvez utiliser la commande suivante pour installer ce logiciel :pip install mlflow azureml-mlflow
Conseil
Au lieu de
mlflow
, utilisezmlflow-skinny
. Ce package est un package MLflow léger sans stockage SQL, serveur, interface utilisateur ou dépendances de science des données. Il est recommandé pour les utilisateurs qui ont principalement besoin des fonctionnalités de suivi et de journalisation de MLflow, mais qui ne veulent pas importer la suite complète de fonctionnalités, notamment les déploiements.Un espace de travail Azure Machine Learning. Pour créer un espace de travail, consultez Créer les ressources dont vous avez besoin pour commencer.
Autorisations d’accès pour effectuer des opérations MLflow dans votre espace de travail. Pour obtenir la liste des opérations et des autorisations nécessaires, consultez Opérations MLflow.
Configurer l’URI de suivi MLflow
Pour effectuer un suivi à distance, autrement dit, pour suivre des expériences qui s’exécutent en dehors d’Azure Machine Learning, configurez MLflow pour qu’il pointe vers l’URI de suivi de votre espace de travail Azure Machine Learning.
Pour connecter MLflow à un espace de travail Azure Machine Learning, vous avez besoin de l’URI de suivi de l’espace de travail. Chaque espace de travail a son propre URI de suivi, qui commence par le protocole azureml://
.
Récupérez l’URI de suivi pour votre espace de travail :
S’APPLIQUE À : Extension Azure CLI ml v2 (actuelle)
Connectez-vous et configurez votre espace de travail :
az account set --subscription <subscription-ID> az configure --defaults workspace=<workspace-name> group=<resource-group-name> location=<location>
Obtenez l’URI de suivi à l’aide de la commande
az ml workspace
:az ml workspace show --query mlflow_tracking_uri
Configurez l’URI de suivi :
Utilisez la méthode
set_tracking_uri()
pour définir l’URI de suivi MLflow sur l’URI de suivi de votre espace de travail.import mlflow mlflow.set_tracking_uri(mlflow_tracking_uri)
Conseil
Certains scénarios impliquent l’utilisation d’un environnement partagé comme un cluster Azure Databricks ou un cluster Azure Synapse Analytics. Dans ces cas, il est utile de définir la variable d’environnement
MLFLOW_TRACKING_URI
au niveau du cluster plutôt que pour chaque session. Définir la variable au niveau du cluster configure automatiquement l’URI de suivi MLflow pour qu’elle pointe vers Azure Machine Learning pour toutes les sessions du cluster.
configurer l’authentification ;
Une fois le suivi configuré, vous devez également configurer la méthode d’authentification pour l’espace de travail associé.
Par défaut, le plug-in Azure Machine Learning pour MLflow effectue une authentification interactive en ouvrant le navigateur par défaut pour demander les informations d’identification. Toutefois, le plug-in prend également en charge plusieurs autres mécanismes d’authentification. Le package azure-identity
fournit cette prise en charge. Ce package est installé comme dépendance du plug-in azureml-mlflow
.
Le processus d’authentification tente les méthodes suivantes, l’une après l’autre, jusqu’à ce qu’une réussisse :
- Environnement : les informations de compte spécifiées dans des variables d’environnement sont lues et utilisées pour l’authentification.
- Identité managée : si l’application est déployée sur un hôte Azure avec une identité managée activée, l’identité managée est utilisée pour l’authentification.
- Azure CLI : si vous utilisez la commande Azure CLI
az login
pour vous connecter, vos informations d’identification sont utilisées pour l’authentification. - Azure PowerShell : si vous utilisez la commande Azure PowerShell
Connect-AzAccount
pour vous connecter, vos informations d’identification sont utilisées pour l’authentification. - Navigateur interactif : l’utilisateur est authentifié de manière interactive via le navigateur par défaut.
Pour les travaux interactifs où un utilisateur est connecté à la session, vous pouvez utiliser l’authentification interactive. Aucune autre action n’est requise.
Avertissement
L’authentification interactive par navigateur bloque l’exécution du code quand les informations d’identification sont demandées. Cette approche ne convient pas à l’authentification dans les environnements non surveillés, par exemple pour les travaux d’entraînement. Nous vous recommandons de configurer un mode d’authentification différent dans ces environnements.
Pour les scénarios nécessitant une exécution sans assistance, vous devez configurer un principal de service pour communiquer avec Azure Machine Learning. Pour plus d’informations sur la création d’un principal de service, consultez Configurer un principal de service.
Utilisez l’ID de locataire, l’ID client et la clé secrète client de votre principal de service dans le code suivant :
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>"
Conseil
Quand vous travaillez sur des environnements partagés, il est recommandé de configurer ces variables d’environnement au niveau du calcul. Une meilleure pratique consiste à les gérer comme secrets dans une instance d’Azure Key Vault.
Par exemple, dans Azure Databricks, vous pouvez utiliser des secrets dans des variables d’environnement comme suit : AZURE_CLIENT_SECRET={{secrets/<scope-name>/<secret-name>}}
. Pour plus d’informations sur l’implémentation de cette approche dans Azure Databricks, consultez Référencer un secret dans une variable d’environnement ou consultez la documentation de votre plateforme.
Si vous préférez utiliser un certificat plutôt qu’un secret, vous pouvez configurer les variables d’environnement suivantes :
- Définissez
AZURE_CLIENT_CERTIFICATE_PATH
sur le chemin d’un fichier qui contient le certificat et la paire de clés privées au format PEM (Privacy Enhanced Mail) ou PKCS #12 (Public-Key Cryptography Standards 12). - Définissez
AZURE_CLIENT_CERTIFICATE_PASSWORD
sur le mot de passe du fichier de certificat, s’il utilise un mot de passe.
Configurer des autorisations et des niveaux d’autorisation
Des rôles par défaut comme Scientifique des données et Contributeur AzureML sont déjà configurés pour effectuer des opérations MLflow dans un espace de travail Azure Machine Learning. Si vous utilisez un rôle personnalisé, vous avez besoin des autorisations suivantes :
Pour utiliser le suivi MLflow :
Microsoft.MachineLearningServices/workspaces/experiments/*
Microsoft.MachineLearningServices/workspaces/jobs/*
Pour utiliser le registre de modèles MLflow :
Microsoft.MachineLearningServices/workspaces/models/*/*
Pour voir comment accorder l’accès sur votre espace de travail à un principal de service que vous créez ou à votre compte d’utilisateur, consultez Accorder l’accès.
Résoudre les erreurs d’authentification
MLflow essaie de s’authentifier auprès d’Azure Machine Learning lors de la première opération qui interagit avec le service, par exemple mlflow.set_experiment()
ou mlflow.start_run()
. Si vous rencontrez des problèmes ou des invites d’authentification inattendues pendant le processus, vous pouvez augmenter le niveau de journalisation afin d’obtenir plus de détails sur l’erreur :
import logging
logging.getLogger("azure").setLevel(logging.DEBUG)
Définir le nom de l’expérience (facultatif)
Toutes les exécutions de MLflow sont enregistrées dans l'expérience active. Par défaut, les exécutions sont journalisées dans une expérience nommée Default
qui est automatiquement créée pour vous. Vous pouvez configurer l’expérience utilisée pour le suivi.
Conseil
Quand vous utilisez l’interface CLI Azure Machine Learning v2 pour envoyer des travaux, vous pouvez définir le nom de l’expérience avec la propriété experiment_name
dans la définition YAML du travail. Il n’est pas nécessaire de le configurer sur votre script de formation. Pour plus d’informations, consultez YAML : nom d’affichage, nom de l’expérience, description et étiquettes.
Utilisez la commande MLflow mlflow.set_experiment()
pour configurer votre expérience.
experiment_name = "experiment_with_mlflow"
mlflow.set_experiment(experiment_name)
Configurer la prise en charge d’un cloud Azure non public
Le plug-in Azure Machine Learning pour MLflow est configuré par défaut pour fonctionner avec le cloud Azure global. Toutefois, vous pouvez configurer le cloud Azure que vous utilisez en définissant la variable d’environnement AZUREML_CURRENT_CLOUD
:
import os
os.environ["AZUREML_CURRENT_CLOUD"] = "AzureChinaCloud"
Vous pouvez identifier le cloud que vous utilisez via la commande Azure CLI suivante :
az cloud list
La valeur IsActive
du cloud actuel est définie sur True
.
Contenu connexe
Votre environnement est à présent connecté à votre espace de travail dans Azure Machine Learning et vous pouvez commencer à l’utiliser.