Partager des données entre espaces de travail avec des registres (préversion)
Le registre Azure Machine Learning vous permet de collaborer entre les espaces de travail au sein de votre organisation. À l’aide de registres, vous pouvez partager des modèles, des composants, des environnements et des données. Le partage de données avec des registres est actuellement une fonctionnalité en préversion. Dans cet article, vous apprendrez comment :
- Créez une ressource de données dans le registre.
- Partager une ressource de données existante de l’espace de travail vers le registre
- Utilisez la ressource de données du registre comme entrée dans un travail de formation de modèle dans un espace de travail.
Important
Cette fonctionnalité est actuellement disponible en préversion publique. Cette préversion est fournie sans contrat de niveau de service et n’est pas recommandée pour les charges de travail de 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.
Scénario clé traité par le partage de données à l’aide du registre Azure Machine Learning
Vous souhaiterez peut-être partager les données entre plusieurs équipes, projets ou espaces de travail dans un emplacement central. Ces données ne disposent pas de contrôles d’accès sensibles et peuvent être largement utilisées dans l’organisation.
Voici quelques exemples :
- Une équipe souhaite partager un jeu de données public prétraité et prêt à être utilisé dans des expériences.
- Votre organisation a acquis un jeu de données particulier pour un projet auprès d’un fournisseur externe et souhaite le mettre à la disposition de toutes les équipes travaillant sur un projet.
- Une équipe souhaite partager des ressources de données entre des espaces de travail dans différentes régions.
Dans ces scénarios, vous pouvez créer une ressource de données dans un registre ou partager une ressource de données existante depuis un espace de travail vers un registre. Cette ressource de données peut alors être utilisée dans plusieurs espaces de travail.
Scénarios NON traités par le partage de données à l’aide du registre Azure Machine Learning
Partage de données sensibles qui nécessitent un contrôle d’accès affiné. Vous ne pouvez pas créer de ressource de données dans un registre à partager avec un petit sous-ensemble d’utilisateurs/espaces de travail alors que le registre est accessible à de nombreux autres utilisateurs de l’organisation.
Partage de données disponibles dans le stockage existant qui ne doivent pas être copiées, trop volumineuses ou trop coûteuses pour être copiées. Chaque fois que des ressources de données sont créées dans un registre, une copie des données est ingérée dans le stockage du registre, si bien qu’une réplication est possible.
Types de ressources de données pris en charge par le registre Azure Machine Learning
Conseil
Veuillez consulter les scénarios canoniques suivants quand vous décidez d’utiliser uri_file
, uri_folder
ou mltable
pour votre scénario.
Vous pouvez créer trois types de ressources de données :
Type | API V2 | Scénario canonique |
---|---|---|
Fichier : référencer un seul fichier | uri_file |
Lire/écrire un seul fichier : le fichier peut avoir le format de votre choix. |
Dossier : référencer un seul dossier | uri_folder |
Vous devez lire/écrire un répertoire de fichiers Parquet/CSV dans Pandas/Spark. Deep Learning avec des images, du texte, des fichiers audio et vidéo qui se trouvent dans un répertoire. |
Table : référencer une table de données | mltable |
Vous avez un schéma complexe qui fait l’objet de modifications fréquentes ou vous avez besoin d’un sous-ensemble de données tabulaires de grande taille. |
Chemins d’accès pris en charge par Azure Machine Learning
Lorsque vous créez une ressource de données, vous devez spécifier un paramètre de chemin d’accès qui pointe vers l’emplacement des données. Actuellement, les seuls chemins d’accès pris en charge sont des emplacements sur votre ordinateur local.
Conseil
« Local » désigne le stockage local de l’ordinateur que vous utilisez. Par exemple, si vous utilisez un ordinateur portable, il s’agit du lecteur local. Si vous utilisez une instance de calcul Azure Machine Learning, il s’agit d lecteur « local » de cette instance de calcul.
Prérequis
Avant de suivre les étapes décrites dans cet article, vérifiez que vous disposez des composants requis suivants :
Connaissance des registres Azure Machine Learning et des concepts de données dans Azure Machine Learning.
Registre Azure Machine Learning pour partager des données. Pour créer un registre, consultez Découvrir comment créer un registre.
Un espace de travail Azure Machine Learning. Si vous n’en avez pas, procédez comme suit dans le Guide de démarrage rapide : Créer des ressources d’espace de travail pour en créer un.
Important
La région Azure (emplacement) où vous créez votre espace de travail doit figurer dans la liste des régions prises en charge pour le registre Azure Machine Learning.
L’environnement et le composant créés depuis l’article Comment partager des modèles, des composants et des environnements.
Azure CLI et l’extension
ml
ou le Kit de développement logiciel (SDK) Python Azure Machine Learning v2 :Pour installer Azure CLI et l’extension, consultez Installer, configurer et utiliser l’interface CLI (v2).
Important
Les exemples CLI de cet article supposent que vous utilisez l’interpréteur de commandes Bash (ou compatible). Par exemple, à partir d’un système Linux ou d’un sous-système Windows pour Linux.
Les exemples supposent également que vous avez configuré les valeurs par défaut pour Azure CLI afin que vous n’ayez pas à spécifier les paramètres de votre abonnement, espace de travail, groupe de ressources ou emplacement. Pour définir les paramètres par défaut, utilisez les commandes suivantes. Remplacez les paramètres suivants par des valeurs pour votre configuration :
- Remplacez
<subscription>
par l’identifiant de votre abonnement Azure. - Remplacez
<workspace>
par le nom de votre espace de travail Azure Machine Learning. - Remplacez
<resource-group>
par le groupe de ressources Azure qui contient votre espace de travail. - Remplacez
<location>
par la région Azure qui contient votre espace de travail.
az account set --subscription <subscription> az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
Vous pouvez afficher les valeurs par défaut actuelles à l’aide de la commande
az configure -l
.- Remplacez
Cloner un dépôt d’exemples
Les exemples de code de cet article sont basés sur l’exemple nyc_taxi_data_regression
dans le référentiel d’exemples. Pour utiliser ces fichiers dans votre environnement de développement, utilisez les commandes suivantes pour cloner le référentiel et modifier les répertoires pour l’exemple :
git clone https://github.com/Azure/azureml-examples
cd azureml-examples
Pour l’exemple de CLI, remplacez les répertoires cli/jobs/pipelines-with-components/nyc_taxi_data_regression
par votre clone local du référentiel d’exemples.
cd cli/jobs/pipelines-with-components/nyc_taxi_data_regression
Créer une connexion SDK
Conseil
Cette étape est nécessaire uniquement lors de l’utilisation du Kit de développement logiciel (SDK) Python.
Créez une connexion cliente à la fois à l’espace de travail et au registre Azure Machine Learning. Dans l’exemple suivant, remplacez les valeurs d’espace réservé <...>
par les valeurs appropriées pour votre configuration. Par exemple, votre ID d’abonnement Azure, le nom de l’espace de travail, le nom du registre, et bien plus encore :
ml_client_workspace = MLClient( credential=credential,
subscription_id = "<workspace-subscription>",
resource_group_name = "<workspace-resource-group",
workspace_name = "<workspace-name>")
print(ml_client_workspace)
ml_client_registry = MLClient(credential=credential,
registry_name="<REGISTRY_NAME>",
registry_location="<REGISTRY_REGION>")
print(ml_client_registry)
Créer des données dans le registre
La ressource de données créée à cette étape est utilisée ultérieurement dans cet article lors de l’envoi d’un travail de formation.
Conseil
La même commande CLI az ml data create
permet de créer des données dans un espace de travail ou dans un registre. L’exécution de la commande avec la commande --workspace-name
crée les données dans un espace de travail, tandis que l’exécution de la commande avec --registry-name
crée les données dans le registre.
La source de données se trouve dans le référentiel d’exemples que vous avez cloné précédemment. Sous le clone local, accédez au chemin d’accès au répertoire suivant : cli/jobs/pipelines-with-components/nyc_taxi_data_regression
. Dans ce répertoire, créez un fichier YAML nommé data-registry.yml
, puis utilisez le YAML suivant comme contenu du fichier :
$schema: https://azuremlschemas.azureedge.net/latest/data.schema.json
name: transformed-nyc-taxt-data
description: Transformed NYC Taxi data created from local folder.
version: 1
type: uri_folder
path: data_transformed/
La valeur path
pointe vers le sous-répertoire data_transformed
, qui contient les données partagées à l’aide du registre.
Pour créer les données dans le registre, utilisez az ml data create
. Dans l’exemple suivant, remplacez <registry-name>
par le nom de votre registre.
az ml data create --file data-registry.yml --registry-name <registry-name>
Si vous obtenez une erreur indiquant que des données avec ce nom et cette version existent déjà dans le registre, vous pouvez modifier le champ version
dans data-registry.yml
ou spécifier une version différente sur l’interface CLI qui remplace la valeur de version dans data-registry.yml
.
# use shell epoch time as the version
version=$(date +%s)
az ml data create --file data-registry.yml --registry-name <registry-name> --set version=$version
Conseil
Si la commande version=$(date +%s)
ne définit pas la variable $version
dans votre environnement, remplacez par $version
un nombre aléatoire.
Enregistrez les éléments name
et version
des données depuis la sortie de la commande az ml data create
, puis utilisez-les avec la commande az ml data show
pour afficher les détails de la ressource.
az ml data show --name transformed-nyc-taxt-data --version 1 --registry-name <registry-name>
Conseil
Si vous avez utilisé un autre nom ou une autre des données, remplacez les paramètres --name
et --version
en conséquence.
Vous pouvez également utiliser az ml data list --registry-name <registry-name>
pour répertorier toutes les ressources de données dans le registre.
Créer un environnement et un composant dans le registre
Pour créer un environnement et un composant dans le registre, suivez les étapes décrites dans l’article Comment partager des modèles, des composants et des environnements. L’environnement et le composant sont utilisés dans le travail de formation de la section suivante.
Conseil
Vous pouvez utiliser un environnement et un composant de l’espace de travail au lieu d’utiliser ceux du registre.
Exécuter un travail de pipeline dans un espace de travail à l’aide d’un composant à partir du registre
Lors de l’exécution d’un travail de pipeline qui utilise un composant et des données d’un registre, les ressources de calcul sont locales et stockées dans l’espace de travail. Dans l’exemple suivant, le travail utilise le composant de formation Scikit Learn et la ressource de données créée dans les sections précédentes pour former un modèle.
Notes
L’aspect clé est que ce pipeline va s’exécuter dans un espace de travail à l’aide de données de formation qui ne se trouvent pas dans l’espace de travail spécifique. Les données se trouvent dans un registre utilisable avec n’importe quel espace de travail de votre organisation. Vous pouvez exécuter ce travail de formation dans n’importe quel espace de travail auquel vous avez accès sans avoir à vous soucier de rendre les données de formation disponibles dans cet espace de travail.
Vérifiez que vous êtes dans le répertoire cli/jobs/pipelines-with-components/nyc_taxi_data_regression
. Modifiez la section component
dans la section train_job
du fichier single-job-pipeline.yml
pour faire référence au composant de formation et path
dans la section training_data
pour faire référence à la ressource de données créée dans les sections précédentes. L’exemple suivant montre à quoi ressemble single-job-pipeline.yml
après la modification. Remplacez <registry_name>
par le nom de votre registre :
$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: nyc_taxi_data_regression_single_job
description: Single job pipeline to train regression model based on nyc taxi dataset
jobs:
train_job:
type: command
component: azureml://registries/<registry-name>/component/train_linear_regression_model/versions/1
compute: azureml:cpu-cluster
inputs:
training_data:
type: uri_folder
path: azureml://registries/<registry-name>/data/transformed-nyc-taxt-data/versions/1
outputs:
model_output:
type: mlflow_model
test_data:
Avertissement
- Avant d’exécuter le travail de pipeline, vérifiez que l’espace de travail dans lequel vous exécuterez le travail se trouve dans une région Azure prise en charge par le registre dans lequel vous avez créé les données.
- Vérifiez que l’espace de travail a un cluster de calcul portant le nom
cpu-cluster
ou modifiez le champcompute
sousjobs.train_job.compute
par le nom de votre calcul.
Exécutez le travail de pipeline avec la commande az ml job create
.
az ml job create --file single-job-pipeline.yml
Conseil
Si vous n’avez pas configuré l’espace de travail et le groupe de ressources par défaut, comme expliqué dans la section Prérequis, vous devez spécifier les paramètres --workspace-name
et --resource-group
pour que az ml job create
fonctionne.
Pour plus d'informations sur l’exécution des travaux, consultez la documentation suivante :
Partager des données d’un espace de travail vers un registre
Les étapes suivantes montrent comment partager une ressource de données existante d’un espace de travail vers un registre.
Tout d’abord, créez une ressource de données dans l’espace de travail. Vérifiez que vous êtes dans le répertoire cli/assets/data
. L’élément local-folder.yml
situé dans ce répertoire sert à créer une ressource de données dans l’espace de travail. Les données spécifiées dans ce fichier sont disponibles dans le répertoire cli/assets/data/sample-data
. Le YAML suivant constitue le contenu du fichier local-folder.yml
:
$schema: https://azuremlschemas.azureedge.net/latest/data.schema.json
name: local-folder-example-titanic
description: Dataset created from local folder.
type: uri_folder
path: sample-data/
Pour créer la ressource de données dans l’espace de travail, utilisez la commande suivante :
az ml data create -f local-folder.yml
Si vous souhaitez en savoir plus sur la création de ressources de données dans un espace de travail, veuillez consulter la rubrique Comment créer des ressources de données.
La ressource de données créée dans l’espace de travail peut être partagée dans un registre. Depuis le registre, vous pouvez utiliser dans plusieurs espaces de travail. Notez que nous transmettons les paramètres --share_with_name
et --share_with_version
dans la fonction de partage. Ces paramètres sont facultatifs et, si vous ne les transmettez pas, ces données seront partagées avec le même nom et la même version que dans l’espace de travail.
L’exemple suivant illustre l’utilisation de la commande de partage pour partager une ressource de données. Remplacez <registry-name>
par le nom du registre vers lequel les données seront partagées.
az ml data share --name local-folder-example-titanic --version <version-in-workspace> --share-with-name <name-in-registry> --share-with-version <version-in-registry> --registry-name <registry-name>