Fonctionnement d’Azure Machine Learning : Architecture et concepts (v1)
S’APPLIQUE À :extension Azure CLI ml v1Kit de développement logiciel (SDK) Python azureml v1
Cet article s’applique à la première version (v1) du kit de développement logiciel (SDK) et de l’interface CLI Azure Machine Learning. Pour la deuxième version (v2), consultez Fonctionnement d’Azure Machine Learning (v2).
Apprenez-en davantage sur l’architecture et les concepts pour Azure Machine Learning. Cet article fournit une description générale des composants et de la façon dont ils co-opèrent pour faciliter le processus de création, de déploiement et de maintenance des modèles Machine Learning.
Espace de travail
L’espace de travail Azure Machine Learning est la ressource de niveau supérieur pour Azure Machine Learning.
L’espace de travail est l’emplacement centralisé pour :
- Gérer les ressources que vous utilisez pour la formation et le déploiement de modèles, tels que les calculs
- Stocker les ressources que vous créez lorsque vous utilisez Azure Machine Learning, notamment :
Un espace de travail comprend d’autres ressources Azure utilisées par l’espace de travail :
- Azure Container Registry (ACR) : Enregistre les conteneurs docker que vous utilisez pendant la formation et lorsque vous déployez un modèle. Pour réduire les coûts, ACR est créé uniquement lors de la création des images de déploiement.
- Compte Stockage Azure : Utilisé comme magasin de données par défaut pour l’espace de travail. Les notebooks Jupyter utilisés avec vos instances de calcul Azure Machine Learning sont également stockés ici.
- Azure Application Insights : Stocke les informations de supervision concernant les modèles.
- Azure Key Vault : Stocke les secrets qui sont utilisés par les cibles de calcul, ainsi que d’autres informations sensibles dont a besoin l’espace de travail.
Vous pouvez partager un espace de travail avec d’autres utilisateurs.
Calcul
Une cible de calcul est une machine ou un ensemble de machines que vous utilisez pour exécuter votre script d’entraînement ou pour héberger votre déploiement de service. Vous pouvez utiliser votre machine locale ou une ressource de calcul distante comme cible de calcul. Avec les cibles de calcul, vous pouvez commencer l’entraînement sur votre machine locale, puis effectuer un scale-out vers le cloud sans modifier votre script d’entraînement.
Azure Machine Learning introduit deux machines virtuelles basées sur le cloud et complètement managées qui sont configurées pour les tâches Machine Learning :
Instance de calcul : une instance de calcul est une machine virtuelle qui comprend plusieurs outils et environnements installés pour le Machine Learning. L’instance de calcul s’utilise principalement pour votre station de travail de développement. Vous pouvez commencer à exécuter des exemples de notebooks sans qu’aucune configuration ne soit requise. Une instance de calcul peut également être utilisée comme cible de calcul pour des travaux d’entraînement et d’inférence.
Clusters de calcul : les clusters de calcul sont un cluster de machines virtuelles avec des fonctionnalités de mise à l’échelle à plusieurs nœuds. Ils sont mieux adaptés aux cibles de calcul pour les travaux de grande taille et de production. Le cluster subit automatiquement un scale-up lors de l’envoi d’un travail. À utiliser comme cible de calcul de formation ou pour le déploiement de développement/test.
Pour plus d’informations sur les cibles de calcul de formation, consultez Cibles de calcul de formation. Pour plus d’informations sur les cibles de calcul de déploiement, consultez Cibles de déploiement.
Jeux de données et magasins de données
Les jeux de données Azure Machine Learning facilitent l’accès aux données et l’utilisation de ces dernières. En créant un jeu de données, vous créez une référence à l’emplacement de la source de données ainsi qu’une copie de ses métadonnées. Étant donné que les données restent à leur emplacement existant, vous n’exposez aucun coût de stockage supplémentaire et ne risquez pas l’intégrité de vos sources de données.
Pour plus d’informations, consultez Créer et inscrire des jeux de données Azure Machine Learning. Pour obtenir plus d’exemples d’utilisation de jeux de données, consultez les exemples de notebooks.
Les jeux de données utilisent des magasin de données pour se connecter de manière sécurisée à vos services de stockage Azure. Les magasins de données stockent les informations de connexion sans avoir à compromettre vos informations d’authentification et l’intégrité de votre source de données d’origine. Ils stockent des informations de connexion, comme votre ID d’abonnement et votre autorisation de jeton, dans votre coffre de clés associé à l’espace de travail, de sorte que vous pouvez accéder à votre stockage de manière sécurisée sans avoir à coder en dur ces informations dans votre script.
Environnements
Espace de travail>Environnements
Un environnement est l’encapsulation de l’environnement dans lequel se produit l’apprentissage ou le score de votre modèle de Machine Learning. L’environnement spécifie les packages, variables d’environnement et paramètres logiciels Python autour de vos scripts d’apprentissage et de scoring.
Pour des exemples de code, consultez la section « Gérer les environnements » de Comment utiliser les environnements.
Expériences
Espace de travail>Expériences
Une expérience est un regroupement d’exécutions provenant d’un script spécifié. Elle appartient toujours à un espace de travail. Lorsque vous envoyez une exécution, vous fournissez un nom pour l’expérience. Les informations concernant l’exécution sont stockées sous cette expérience. Si le nom n’existe pas lorsque vous soumettez une expérience, une nouvelle expérience est automatiquement créée.
Pour obtenir un exemple de l’utilisation d’une expérience, consultez le Tutoriel : Entraîner votre premier modèle.
Exécutions
Espace de travail>Expériences>Exécution
Une exécution est une exécution unique d’un script de formation. Une expérience contient généralement plusieurs exécutions.
Azure Machine Learning enregistre toutes les exécutions et stocke les informations suivantes dans l’expérience :
- Les métadonnées relatives à l’exécution (horodatage, durée, et ainsi de suite)
- Les métriques qui sont journalisées par votre script
- Les fichiers de sortie qui sont collectés automatiquement par l’expérience ou chargés explicitement par l’utilisateur
- Un instantané du répertoire qui contient vos scripts, avant l’exécution
Vous déclenchez une exécution lorsque vous envoyez un script pour entraîner un modèle. Une exécution peut avoir zéro, une ou plusieurs exécutions enfants. Par exemple, l’exécution de niveau supérieur peut avoir deux exécutions enfants, et chacune d’elles peut avoir sa propre exécution enfant.
Configurations de séries de tests
Espace de travail >Expériences>Exécution>Exécuter la configuration
Une configuration de série de tests définit la façon dont un script doit être exécuté dans une cible de calcul spécifiée. Vous utilisez la configuration pour spécifier le script, la cible de calcul et l’environnement Azure ML d’exécution, toutes les configurations propres aux tâches distribuées et certaines propriétés supplémentaires. Pour plus d’informations sur l’ensemble complet d’options configurables pour les exécutions, consultez ScriptRunConfig.
Une configuration d’exécution peut être rendue persistante dans un fichier du répertoire qui contient votre script d’entraînement. Elle peut aussi être construite comme un objet en mémoire et utilisée pour envoyer une exécution.
Pour obtenir des exemples de configurations de série de tests, consultez Configurer une exécution d’entraînement.
Instantanés
Espace de travail>Expériences>Exécution>Instantané
Lorsque vous envoyez une exécution, Azure Machine Learning compresse le répertoire qui contient le script dans un fichier zip, puis l’envoie à la cible de calcul. Le fichier zip est ensuite décompressé, et le script y est exécuté. Azure Machine Learning stocke également le fichier zip en tant qu’instantané dans l’enregistrement d’exécution. Toute personne ayant accès à l’espace de travail peut parcourir un enregistrement d’exécution et télécharger l’instantané.
Journalisation
Azure Machine Learning journalise automatiquement les métriques d’exécution standard. Toutefois, vous pouvez également utiliser le kit de développement logiciel (SDK) Python pour journaliser des métriques arbitraires.
Il existe plusieurs façons de consulter vos journaux : surveiller l’état d’exécution en temps réel ou afficher les résultats après la fin. Pour plus d'informations, consultez Surveiller et consulter les journaux d’exécution de ML.
Notes
Pour empêcher que les fichiers inutiles soient inclus dans l’instantané, créez un fichier « ignore» (.gitignore
ou .amlignore
) dans le répertoire. Ajoutez dans ce fichier les fichiers et répertoires à exclure. Pour plus d’informations sur la syntaxe à utiliser dans ce fichier, consultez syntaxe et modèles pour .gitignore
. Le fichier .amlignore
utilise la même syntaxe. Si les deux fichiers existent, le fichier .amlignore
est utilisé, et non le fichier .gitignore
.
Intégration et suivi Git
Lorsque vous lancez une exécution d’entraînement où le répertoire source est un répertoire Git local, les informations relatives au répertoire sont stockées dans l’historique des exécutions. Cela fonctionne avec les exécutions envoyées à l’aide d’une configuration de série de tests ou d’un pipeline ML. Cela fonctionne également pour les exécutions soumises à partir du SDK ou de l’interface CLI Machine Learning.
Pour plus d’informations, consultez Obtenir une intégration pour Azure Machine Learning.
Workflow de l’entraînement
Lorsque vous exécutez une expérience pour effectuer l’apprentissage d’un modèle, les étapes suivantes se produisent. Celles-ci sont illustrées dans le diagramme du workflow de formation ci-dessous :
Azure Machine Learning est appelé avec l’ID de capture instantanée pour la capture instantanée du code enregistrée dans la section précédente.
Azure Machine Learning crée un ID d’exécution (facultatif) et un jeton de service Machine Learning, qui est utilisé par la suite par des cibles de calcul comme la Capacité de calcul Machine Learning/les machines virtuelles pour communiquer avec le service Machine Learning.
Vous pouvez choisir une cible de calcul gérée (comme Capacité de calcul Machine Learning) ou une cible de calcul non gérée (comme des machines virtuelles) pour exécuter vos travaux d’apprentissage. Voici les flux de données des deux scénarios :
- Machines virtuelles/HDInsight, accessibles par le biais d’informations d’identification SSH contenues dans un coffre de clés dans l’abonnement Microsoft. Azure Machine Learning exécute le code de gestion sur la cible de calcul qui :
- Prépare l’environnement (Docker est une option pour les machines virtuelles et les ordinateurs locaux. Consultez les étapes suivantes pour la Capacité de calcul Machine Learning afin de comprendre le fonctionnement de l’exécution des expériences sur des conteneurs Docker.)
- Télécharge le code.
- Définit des variables d’environnement et des configurations.
- Exécute des scripts utilisateur (capture instantanée de code mentionnée dans la section précédente).
- Capacité de calcul Machine Learning, accessible par le biais d’une identité managée par l’espace de travail. Étant donné que la Capacité de calcul Machine Learning est une cible de calcul managée (c’est-à-dire qu’elle est gérée par Microsoft), elle s’exécute sous votre abonnement Microsoft.
- Une construction du Docker distant est démarrée si nécessaire.
- Le code de gestion est écrit dans le partage Azure Files de l’utilisateur.
- Le conteneur est démarré avec une commande initiale ; autrement dit, avec le code de gestion décrit à l’étape précédente.
Une fois l’exécution terminée, vous pouvez interroger les exécutions et les métriques. Dans le diagramme de flux ci-dessous, cette étape se produit quand la cible de calcul d’entraînement réécrit les métriques d’exécution dans Azure Machine Learning à partir du stockage de la base de données Azure Cosmos DB. Les clients peuvent appeler Azure Machine Learning. Machine Learning tire (pull) ensuite les métriques de la base de données Azure Cosmos DB pour les renvoyer au client.
Modèles
Le modèle le plus simple est un morceau de code qui accepte une entrée et produit une sortie. La création d’un modèle Machine Learning implique la sélection d’un algorithme auquel vous devez fournir des données, ainsi que l’optimisation des hyperparamètres. L’entraînement est un processus itératif qui génère un modèle entraîné, lequel encapsule ce qu’il a appris au cours du processus d’entraînement.
Vous pouvez utiliser un modèle qui a été entraîné en dehors d’Azure Machine Learning, ou vous pouvez entraîner un modèle en soumettant une exécution d’une expérience sur une cible de calcul dans Azure Machine Learning. Une fois que vous avez un modèle, vous inscrivez le modèle dans l’espace de travail.
Azure Machine Learning est indépendant de tout framework. Lorsque vous créez un modèle, vous pouvez utiliser un des frameworks Machine Learning populaires, tels que Scikit-learn, XGBoost, PyTorch, TensorFlow et Chainer.
Pour obtenir un exemple de formation d’un modèle à l’aide de Scikit-learn, consultez Didacticiel : Entraîner un modèle de classification d’images avec Azure Machine Learning
Registre de modèles
Espace de travail>Modèles
Le registre de modèles effectue le suivi de tous les modèles de votre espace de travail Azure Machine Learning.
Les modèles sont identifiés par leur nom et par leur version. Chaque fois que vous inscrivez un modèle portant le même nom qu’un modèle existant, le registre suppose qu’il s’agit d’une nouvelle version. La version est incrémentée et le nouveau modèle est inscrit sous le même nom.
Lorsque vous inscrivez le modèle, vous pouvez fournir des étiquettes de métadonnées supplémentaires, puis utiliser les étiquettes lorsque vous recherchez des modèles.
Conseil
Un modèle inscrit est un conteneur logique pour un ou plusieurs fichiers qui composent votre modèle. Par exemple, si vous avez un modèle qui est stocké dans plusieurs fichiers, vous pouvez inscrire ces derniers en tant que modèle unique dans votre espace de travail Azure Machine Learning. Après l’inscription, vous pouvez ensuite télécharger ou déployer le modèle inscrit et recevoir tous les fichiers qui ont été inscrits.
Vous ne pouvez pas supprimer un modèle inscrit qui est utilisé par un déploiement actif.
Pour obtenir un exemple d’inscription de modèle, consultez Entraîner un modèle de classification d’images avec Azure Machine Learning.
Déploiement
Vous déployez un modèle inscrit en tant que point de terminaison de service. Vous avez besoin des composants suivants :
- Environnement. Cet environnement encapsule les dépendances requises pour exécuter votre modèle pour l’inférence.
- Code de scoring. Ce script accepte les requêtes, calcule le score de la requête à l’aide du modèle et retourne les résultats.
- Configuration de l’inférence. La configuration de l’inférence spécifie l’environnement, le script d’entrée et d’autres composants nécessaires pour exécuter le modèle en tant que service.
Pour plus d’informations sur ces composants, consultez Déployer des modèles avec Azure Machine Learning.
Points de terminaison
Espace de travail>Points de terminaison
Un point de terminaison est une instanciation de votre modèle dans un service web pouvant être hébergé dans le cloud.
Point de terminaison de service Web
Lors du déploiement d’un modèle en tant que service web, le point de terminaison peut être déployé sur Azure Container Instances ou Azure Kubernetes Service. Vous créez le service à partir d’une image, de votre script et des fichiers associés. Ceux-ci sont placés dans une image de conteneur de base qui contient l’environnement d’exécution du modèle. L’image a un point de terminaison HTTP à charge équilibrée qui reçoit les requêtes de scoring qui sont envoyées au service web.
Vous pouvez activer la télémétrie Application Insights ou la télémétrie de modèle pour surveiller votre service web. Les données de télémétrie ne sont accessibles qu’à vous. Elles sont stockées dans votre Application Insights et les instances de votre compte de stockage. Si vous avez activé la mise à l’échelle automatique, Azure met automatiquement à l’échelle votre déploiement.
Le diagramme suivant montre le workflow d’inférence pour un modèle déployé en tant que point de terminaison de service web :
Voici les détails :
- L’utilisateur inscrit un modèle à l’aide d’un client comme le SDK Azure Machine Learning.
- L’utilisateur crée une image à l’aide d’un modèle, d’un fichier de scores et d’autres dépendances de modèle.
- L’image Docker est créée et stockée dans Azure Container Registry.
- Le service web est déployé sur la cible de calcul (Container Instances/AKS) à l’aide de l’image créée à l’étape précédente.
- Les détails des requêtes de scoring sont stockés dans la fonctionnalité Application Insights qui se trouve dans l’abonnement de l’utilisateur.
- Des données de télémétrie sont également envoyées (push) à l’abonnement Microsoft/Azure.
Pour obtenir un exemple de déploiement d’un modèle en tant que service web, consultez Tutoriel : entraîner et déployer un modèle.
Points de terminaison en temps réel
Lorsque vous déployez un modèle entraîné dans le concepteur, vous pouvez déployer le modèle en tant que point de terminaison en temps réel. Un point de terminaison en temps réel reçoit généralement une requête unique via le point de terminaison REST et retourne une prédiction en temps réel. Cela diffère du traitement par lots, qui traite plusieurs valeurs à la fois et enregistre les résultats après la fin dans un magasin de données.
Points de terminaison de pipeline
Les points de terminaison de pipeline vous permettent d’appeler vos pipelines ML par programme via un point de terminaison REST. Les points de terminaison de pipeline vous permettent d’automatiser vos workflows de pipeline.
Un point de terminaison de pipeline est une collection de pipelines publiés. Cette organisation logique vous permet de gérer et d’appeler plusieurs pipelines à l’aide du même point de terminaison. Chaque pipeline publié dans un point de terminaison de pipeline est associé à une version. Vous pouvez sélectionner un pipeline par défaut pour le point de terminaison ou spécifier une version dans l’appel REST.
Automatisation
Interface CLI Azure Machine Learning
L'interface CLI Azure Machine Learning v1 est une extension pour l'interface Azure, une interface de ligne de commande multi-plateforme pour la plateforme Azure. Cette extension fournit des commandes pour automatiser vos activités de Machine Learning.
Pipelines ML
Vous utilisez des pipelines de machine learning pour créer et gérer des flux de travail qui combinent les phases de machine learning. Par exemple, un pipeline peut inclure les phases de préparation des données, d’entraînement du modèle, de déploiement du modèle et d’inférence/scoring. Chaque phase peut englober plusieurs étapes, chacune d’elles pouvant s’exécuter sans assistance dans différentes cibles de calcul.
Les étapes de pipeline sont réutilisables et peuvent être exécutées sans avoir à réexécuter les étapes précédentes si la sortie de ces étapes n’a pas changé. Par exemple, vous pouvez réentraîner un modèle sans réexécuter les étapes coûteuses de préparation des données si celles-ci n’ont pas été modifiées. Les pipelines permettent également aux scientifiques des données de collaborer tout en travaillant chacun sur une partie différente du workflow de Machine Learning.
Surveillance et journalisation
Azure Machine Learning propose les fonctionnalités de supervision et de journalisation suivantes :
- En tant que scientifique de données, vous pouvez surveiller vos expériences et consigner des informations à partir de vos exécutions d’entraînement. Pour plus d’informations, consultez les articles suivants :
- En tant qu’Administrateur, vous pouvez surveiller les informations sur l’espace de travail, les ressources Azure associées et les événements tels que la création et la suppression de ressources à l’aide d’Azure Monitor. Pour plus d’informations, consultez Supervision d’Azure Machine Learning.
- En tant que DevOps ou MLOps, vous pouvez superviser les informations générées par les modèles déployés en tant que services web pour identifier les problèmes liés aux déploiements et collecter les données envoyées au service. Pour plus d’informations, consultez Collecter des données de modèle et Analyser avec Application Insights.
Interaction avec votre espace de travail
Studio
Azure Machine Learning Studio fournit une vue Web de tous les artefacts de votre espace de travail. Vous pouvez afficher les résultats et les détails de vos jeux de données, expériences, pipelines, modèles et points de terminaison. Vous pouvez également gérer les ressources de calcul et les magasins de données dans Studio.
Le studio est également l’emplacement où vous accédez aux outils interactifs qui font partie d’Azure Machine Learning :
- Concepteur Azure Machine Learning pour effectuer les étapes de workflow sans écrire de code
- Expérience Web pour le Machine Learning automatisé
- Notebooks Azure Machine Learning pour écrire et exécuter votre propre code sur des serveurs notebook Jupyter intégrés.
- Projets d'étiquetage des données pour créer, gérer et contrôler les projets d'étiquetage d’images ou de texte.
Outils de programmation
Important
Les outils marqués (préversion) ci-dessous sont actuellement en préversion publique. La préversion est fournie sans contrat de niveau de service et n’est pas recommandée pour les charges de travail en production. Certaines fonctionnalités peuvent être limitées ou non prises en charge. Pour plus d’informations, consultez Conditions d’Utilisation Supplémentaires relatives aux Évaluations Microsoft Azure.
- Interagissez avec le service dans un environnement Python avec le SDK Azure Machine Learning pour Python.
- Utilisez le Concepteur Azure Machine Learning pour effectuer les étapes de workflow sans écrire de code.
- Utiliser l’interface de ligne de commande d’Azure Machine Learning pour l’automatisation.
Étapes suivantes
Pour bien démarrer avec Azure Machine Learning, voir :