Se connecter à des services de stockage sur Azure avec des magasin de données

S’APPLIQUE À :Kit de développement logiciel (SDK) Python azureml v1

S’APPLIQUE À :extension Azure CLI ml v1

Dans cet article, découvrez comment se connecter aux services de stockage de données sur Azure à l’aide des magasins de données Azure Machine Learning et du kit SDK Python d’Azure Machine Learning.

Les magasins de données se connectent de façon sécurisée à votre service de stockage sur Azure, 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, si bien que vous pouvez accéder à votre stockage de façon sécurisée sans avoir besoin nécessairement de coder en dur ces informations dans vos scripts. Vous pouvez créer des magasins de données qui se connectent à ces solutions de stockage Azure.

Pour comprendre où les magasins de données interviennent dans le workflow d’accès aux données d’Azure Machine Learning, consultez l’article Accéder de manière sécurisée aux données.

Pour une expérience utilisant peu de code, consultez le guide pratique de l’utilisation d’Azure Machine Learning studio pour créer et inscrire des magasins de données.

Conseil

Cet article suppose que vous souhaitez vous connecter à votre service de stockage à l’aide d’informations d’authentification, comme un principal de service ou un jeton de signature d’accès partagé (SAS). Gardez à l’esprit que si les informations d’identification sont enregistrées auprès des magasins de données, tous les utilisateurs détenant le rôle de Lecteur d’espace de travail peuvent récupérer ces informations d’identification. Apprenez-en davantage sur le rôle de Lecteur d’espace de travail.

Si cela pose problème, découvrez comment Se connecter aux services de stockage avec un accès basé sur l’identité.

Prérequis

  • Un abonnement Azure. Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer. Essayez la version gratuite ou payante d’Azure Machine Learning.

  • Un compte de stockage Azure avec un type de stockage pris en charge.

  • Le kit de développement logiciel (SDK) Azure Machine Learning pour Python.

  • Un espace de travail Azure Machine Learning.

    Créez un espace de travail Azure Machine Learning ou utilisez un espace de travail existant via le Kit de développement logiciel (SDK) Python.

    Importez les classes Workspace et Datastore, puis chargez vos informations d’abonnement à partir du fichier config.json à l’aide de la fonction from_config(). Cette fonction recherche le fichier JSON dans le répertoire actif par défaut, mais vous pouvez également spécifier un paramètre de chemin d’accès pour pointer vers le fichier à l’aide de from_config(path="your/file/path").

    import azureml.core
    from azureml.core import Workspace, Datastore
    
    ws = Workspace.from_config()
    

    Quand vous créez un espace de travail, un conteneur d’objets blob Azure et un partage de fichiers Azure sont inscrits automatiquement comme magasins de données dans l’espace de travail. sous les noms workspaceblobstore et workspacefilestore respectivement. Le workspaceblobstore est utilisé pour stocker les artefacts de l’espace de travail et vos journaux d’expérience de Machine Learning. Il est également défini en tant que magasin de données par défaut et ne peut pas être supprimé de l’espace de travail. Le workspacefilestore est utilisé pour stocker des notebooks et des scripts R autorisés via une instance de calcul.

    Notes

    Le concepteur Azure Machine Learning crée automatiquement un magasin de données nommé azureml_globaldatasets lorsque vous ouvrez un exemple dans la page d’accueil du concepteur. Ce magasin de données contient uniquement des exemples de jeux de données. Veuillez ne pas utiliser ce magasin de données pour accéder à des données confidentielles.

Types de services de stockage de données pris en charge

Les magasins de données prennent actuellement en charge le stockage des informations de connexion dans les services de stockage figurant dans la matrice suivante.

Conseil

Pour les solutions de stockage non prises en charge (celles qui ne sont pas répertoriées dans le tableau ci-dessous), vous pouvez rencontrer des problèmes de connexion et d’utilisation de vos données. Nous vous suggérons de déplacer vos données vers une solution de stockage Azure prise en charge. Cela peut également aider à des scénarios supplémentaires, comme l’enregistrement des coûts de sortie de données pendant les expériences ML.

Type de stockage Type d'authentification Azure Machine Learning Studio SDK Python Azure Machine Learning Interface CLI Azure Machine Learning API REST Azure Machine Learning VS Code
Stockage Blob Azure Clé de compte
Jeton SAS
Partage de fichiers Azure Clé de compte
Jeton SAS
Azure Data Lake Storage Gen 1 Principal du service
Azure Data Lake Storage Gen 2 Principal du service
Azure SQL Database Authentification SQL
Principal du service
Azure PostgreSQL Authentification SQL
Azure Database pour MySQL Authentification SQL ✓* ✓* ✓*
Système de fichiers Databricks Aucune authentification ✓** ✓ ** ✓**

Conseils liés au stockage

Nous vous recommandons de créer un magasin de données pour un conteneur Blob Azure. Les stockages Standard et Premium sont tous deux disponibles pour les objets blob. Le stockage Premium est plus cher, mais ses vitesses de débit supérieures vous feront gagner du temps sur vos exécutions d’entraînement, en particulier si vous effectuez l’entraînement sur un jeu de données volumineux. Pour plus d’informations sur le coût des comptes de stockage, consultez la calculatrice de prix Azure.

Azure Data Lake Storage Gen2 s’appuie sur le stockage Blob Azure et a été conçu pour l’analytique Big Data des entreprises. Une caractéristique fondamentale de Data Lake Storage Gen2 est l’ajout d’un espace de noms hiérarchique au stockage Blob. L’espace de noms hiérarchique organise les objets/fichiers dans une hiérarchie de répertoires pour offrir un accès efficace aux données.

Accès et autorisations pour le stockage

Pour garantir que vous vous connectez de manière sécurisée à votre service de stockage Azure, Azure Machine Learning exige que vous ayez l’autorisation d’accéder au conteneur de stockage de données correspondant. Cet accès dépend des informations d’authentification utilisées pour inscrire le magasin de données.

Notes

Cette instruction s’applique également aux magasins de données créés avec l’accès aux données basé sur l’identité.

Réseau virtuel

Azure Machine Learning nécessite des étapes de configuration supplémentaires pour communiquer avec un compte de stockage situé derrière un pare-feu, ou dans un réseau virtuel. Si votre compte de stockage se trouve derrière un pare-feu, vous pouvez Ajouter l’adresse IP de votre client à une liste d’autorisation via le portail Azure.

Azure Machine Learning peut recevoir des requêtes issues de clients situés en dehors du réseau virtuel. Pour vous assurer que l’entité demandant des données au service est sécurisée et pour permettre l’affichage des données dans votre espace de travail, utilisez un point de terminaison privé avec votre espace de travail.

Pour les utilisateurs du kit SDK Python, si vous souhaitez qu’ils accèdent à vos données par le biais de votre script d’entraînement sur une cible de calcul, cette cible doit se trouver dans le même réseau et sous-réseau virtuels du stockage. Vous pouvez utiliser une instance/un cluster de calcul dans le même réseau virtuel.

Pour les utilisateurs d’Azure Machine Learning studio, plusieurs caractéristiques s’appuient sur la possibilité de lire des données à partir d’un jeu de données, comme les aperçus de jeux de données, les profils et Machine Learning automatisé. Pour que ces caractéristiques fonctionnent avec le stockage derrière des réseaux virtuels, utilisez une identité managée par l’espace de travail dans le studio pour permettre à Azure Machine Learning d’accéder au compte de stockage de l’extérieur du réseau virtuel.

Notes

Si votre stockage de données est une instance Azure SQL Database derrière un réseau virtuel, veillez à définir Refuser l’accès public sur Non via le portail Azure pour autoriser Azure Machine Learning à accéder au compte de stockage.

Validation de l’accès

Avertissement

L’accès inter-clients aux comptes de stockage n’est pas pris en charge. Si vous avez besoin d’un accès inter-clients pour votre scénario, contactez l’alias de l’équipe de support des données Azure Machine Learning à l’adresse amldatasupport@microsoft.com pour obtenir de l’aide sur une solution de code personnalisée.

Dans le cadre du processus de création et d’inscription du magasin de données initial, Azure Machine Learning vérifie automatiquement que le service de stockage sous-jacent existe et que le principal fourni par l’utilisateur (nom d’utilisateur, principal de service ou jeton SAS) a accès au stockage spécifié.

Après la création du magasin de données, cette validation est effectuée uniquement pour les méthodes qui requièrent l’accès au conteneur de stockage sous-jacent, et non chaque fois que des objets du magasin de données sont récupérés. Par exemple, la validation se produit si vous souhaitez télécharger des fichiers à partir de votre magasin de données ; mais si vous souhaitez simplement modifier votre magasin de données par défaut, la validation ne se produit pas.

Pour authentifier votre accès au service de stockage sous-jacent, vous pouvez fournir votre clé de compte, des jetons de signature d’accès partagé (SAS) ou le principal de service dans la méthode register_azure_*() correspondante du type de magasin de données que vous souhaitez créer. La matrice de types de stockage répertorie les types d’authentification pris en charge qui correspondent à chaque type de magasin de données.

Vous trouverez des informations sur la clé de compte, le jeton SAS et le principal de service sur votre portail Azure.

  • Si vous envisagez d’utiliser une clé de compte ou un jeton SAP pour l’authentification, sélectionnez Comptes de stockage dans le volet gauche, puis choisissez le compte de stockage que vous souhaitez inscrire.

    • La page Vue d’ensemble fournit des informations telles que le nom du compte, le conteneur et le nom du partage de fichiers.
      • Pour les clés de compte, accédez à Clés d’accès dans le volet Paramètres.
      • Pour les jetons SAP, accédez à Signatures d’accès partagé dans le volet Paramètres.
  • Si vous prévoyez d’utiliser un principal du service pour l’authentification, accédez à vos Inscriptions d’applications, puis sélectionnez l’application que vous souhaitez utiliser.

    • La page Vue d’ensemble correspondante contient des informations requises comme l’ID de locataire et l’ID de client.

Important

Si vous avez besoin de modifier vos clés d’accès pour un compte de stockage Azure (clé de compte ou jeton SAP), veillez à synchroniser les nouvelles informations d’identification avec votre espace de travail et les magasins de données qui y sont connectés. Découvrez comment synchroniser vos informations d’identification mises à jour.

Autorisations

Pour le conteneur de blobs Azure et le stockage Azure Data Lake Gen2, assurez-vous que vos informations d’authentification vous donnent un accès Lecteur des données blob du stockage. En savoir plus sur le Lecteur des données blob du stockage. Par défaut, le jeton SAS d'un compte ne dispose d'aucune autorisation.

  • Pour l’accès en lecture aux données, vos informations d’authentification doivent au minimum disposer d’autorisations de liste et de lecture pour les conteneurs et les objets.

  • Pour l'accès en écriture aux données, des autorisations d'écriture et d'ajout sont également requises.

Créer et inscrire des magasins de données

Quand vous inscrivez une solution de stockage Azure en tant que magasin de données, ce dernier est automatiquement créé et inscrit dans un espace de travail spécifique. Retrouvez les instructions relatives aux scénarios de réseau virtuel et les indications pour trouver les informations d’authentification requises dans la section Accès et autorisations pour le stockage.

Dans cette section, vous trouverez des exemples de création et d’inscription d’un magasin de données via le kit de développement logiciel (SDK) Python pour les types de stockage suivants. Les paramètres fournis dans ces exemples sont les paramètres requis pour créer et inscrire un magasin de données.

Pour créer des magasins de données pour les autres services de stockage pris en charge, consultez la documentation de référence des méthodes register_azure_* applicables.

Si vous préférez une expérience à moindre code, consultez Se connecter aux données avec Azure Machine Learning Studio.

Important

Si vous désinscrivez puis réinscrivez un magasin de données portant le même nom et que l’opération échoue, le compte Azure Key Vault de votre espace de travail peut ne pas être doté de la suppression réversible. Par défaut, la suppression réversible est activée pour l’instance de coffre de clés créée par votre espace de travail, mais elle peut ne pas l’être si vous avez utilisé un coffre de clés existant ou si votre espace de travail a été créé avant octobre 2020. Pour plus d’informations sur l’activation de la suppression réversible, consultez Activer la suppression réversible pour un coffre de clés existant.

Notes

Le nom du magasin de données doit contenir uniquement des lettres minuscules, des chiffres et des traits de soulignement.

Conteneur d’objets blob Azure

Pour inscrire un conteneur d’objets blob Azure comme magasin de données, utilisez register_azure_blob_container().

Le code suivant crée le magasin de données blob_datastore_name et l’inscrit auprès de l’espace de travail ws. Ce magasin de données accède au conteneur d'objets blob my-container-name sur le compte de stockage my-account-name avec la clé d'accès au compte fournie. Retrouvez les instructions relatives aux scénarios de réseau virtuel et les indications pour trouver les informations d’authentification requises dans la section Accès et autorisations pour le stockage.

blob_datastore_name='azblobsdk' # Name of the datastore to workspace
container_name=os.getenv("BLOB_CONTAINER", "<my-container-name>") # Name of Azure blob container
account_name=os.getenv("BLOB_ACCOUNTNAME", "<my-account-name>") # Storage account name
account_key=os.getenv("BLOB_ACCOUNT_KEY", "<my-account-key>") # Storage account access key

blob_datastore = Datastore.register_azure_blob_container(workspace=ws, 
                                                         datastore_name=blob_datastore_name, 
                                                         container_name=container_name, 
                                                         account_name=account_name,
                                                         account_key=account_key)

Partage de fichiers Azure

Pour inscrire un partage de fichiers Azure comme magasin de données, utilisez register_azure_file_share().

Le code suivant crée le magasin de données file_datastore_name et l’inscrit auprès de l’espace de travail ws. Ce magasin de données accède au partage de fichiers my-fileshare-name sur le compte de stockage my-account-name avec la clé d'accès au compte fournie. Retrouvez les instructions relatives aux scénarios de réseau virtuel et les indications pour trouver les informations d’authentification requises dans la section Accès et autorisations pour le stockage.

file_datastore_name='azfilesharesdk' # Name of the datastore to workspace
file_share_name=os.getenv("FILE_SHARE_CONTAINER", "<my-fileshare-name>") # Name of Azure file share container
account_name=os.getenv("FILE_SHARE_ACCOUNTNAME", "<my-account-name>") # Storage account name
account_key=os.getenv("FILE_SHARE_ACCOUNT_KEY", "<my-account-key>") # Storage account access key

file_datastore = Datastore.register_azure_file_share(workspace=ws,
                                                     datastore_name=file_datastore_name, 
                                                     file_share_name=file_share_name, 
                                                     account_name=account_name,
                                                     account_key=account_key)

Azure Data Lake Storage Gen 2

Pour un magasin de données Azure Data Lake Storage Gen 2 (ADLS Gen 2), utilisez register_azure_data_lake_gen2() pour inscrire un magasin de données d’informations d’identification connecté à un stockage Azure DataLake Gen 2 avec des autorisations de principal du service.

Pour utiliser votre principal de service, vous devez inscrire votre application et accorder au principal de service l’accès aux données via un contrôle d’accès en fonction du rôle Azure (Azure RBAC) ou des listes de contrôle d’accès (ACL, access control lists). Découvrez-en plus sur la configuration du contrôle d’accès pour ADLS Gen 2.

Le code suivant crée le magasin de données adlsgen2_datastore_name et l’inscrit auprès de l’espace de travail ws. Ce magasin de données accède au système de fichiers test dans le compte de stockage account_name en utilisant les informations d’identification du principal de service fournies. Retrouvez les instructions relatives aux scénarios de réseau virtuel et les indications pour trouver les informations d’authentification requises dans la section Accès et autorisations pour le stockage.

adlsgen2_datastore_name = 'adlsgen2datastore'

subscription_id=os.getenv("ADL_SUBSCRIPTION", "<my_subscription_id>") # subscription id of ADLS account
resource_group=os.getenv("ADL_RESOURCE_GROUP", "<my_resource_group>") # resource group of ADLS account

account_name=os.getenv("ADLSGEN2_ACCOUNTNAME", "<my_account_name>") # ADLS Gen2 account name
tenant_id=os.getenv("ADLSGEN2_TENANT", "<my_tenant_id>") # tenant id of service principal
client_id=os.getenv("ADLSGEN2_CLIENTID", "<my_client_id>") # client id of service principal
client_secret=os.getenv("ADLSGEN2_CLIENT_SECRET", "<my_client_secret>") # the secret of service principal

adlsgen2_datastore = Datastore.register_azure_data_lake_gen2(workspace=ws,
                                                             datastore_name=adlsgen2_datastore_name,
                                                             account_name=account_name, # ADLS Gen2 account name
                                                             filesystem='test', # ADLS Gen2 filesystem
                                                             tenant_id=tenant_id, # tenant id of service principal
                                                             client_id=client_id, # client id of service principal
                                                             client_secret=client_secret) # the secret of service principal

Créer des magasins de données avec d’autres outils Azure

En plus de la création de magasins de données avec le kit SDK Python et le studio, vous pouvez aussi utiliser des modèles Azure Resource Manager ou l’extension VS Code Azure Machine Learning.

Azure Resource Manager

Plusieurs modèles disponibles à l’adresse https://github.com/Azure/azure-quickstart-templates/tree/master/quickstarts/microsoft.machinelearningservices peuvent être utilisés pour créer des magasins de données.

Pour plus d'informations sur l'utilisation de ces modèles, consultez Utiliser un modèle Azure Resource Manager afin de créer un espace de travail pour Azure Machine Learning.

Extension VS Code

Si vous préférez créer et gérer des magasins de données à l’aide de l’extension VS Code Azure Machine Learning, consultez le guide pratique de la gestion des ressources VS Code.

Utiliser des données dans vos magasins de données

Après avoir créé un magasin de données, créer un Azure Machine Learning DataSet pour interagir avec vos données. Les jeux de données intègrent vos données dans un objet consommable évalué tardivement pour les tâches de Machine Learning, comme la formation.

Avec les jeux de données, vous pouvez télécharger ou monter des fichiers de n’importe quel format à partir des services de stockage Azure pour l’entraînement de modèles sur une cible de calcul. Apprenez-en davantage sur l’entraînement des modèles ML avec des jeux de données.

Récupérer les magasins de données à partir de votre espace de travail

Pour obtenir un magasin de données spécifique inscrit dans l’espace de travail actif, utilisez la méthode statique get() sur la classe Datastore :

# Get a named datastore from the current workspace
datastore = Datastore.get(ws, datastore_name='your datastore name')

Pour obtenir la liste des banques de données inscrites avec un espace de travail donné, vous pouvez utiliser la propriété datastores sur un objet d’espace de travail :

# List all datastores registered in the current workspace
datastores = ws.datastores
for name, datastore in datastores.items():
    print(name, datastore.datastore_type)

Pour obtenir le magasin de données par défaut de l’espace de travail, utilisez cette ligne :

datastore = ws.get_default_datastore()

Vous pouvez également modifier le magasin de données par défaut avec le code suivant. Cette possibilité est prise en charge uniquement via le Kit de développement logiciel (SDK).

 ws.set_default_datastore(new_default_datastore)

Accéder aux données pendant le scoring

Azure Machine Learning offre plusieurs moyens d’utiliser vos modèles pour le scoring. Certaines de ces méthodes ne fournissent pas d’accès aux magasins de données. Utilisez le tableau suivant pour comprendre les méthodes qui vous permettent d’accéder aux magasins de données pendant le scoring :

Méthode Accès aux magasins de données Description
Prédiction par lots Effectuez des prédictions sur de grandes quantités de données de façon asynchrone.
Service web   Déployez des modèles comme un service web.

Dans les situations où le SDK ne fournit pas d’accès aux magasins de données, vous pouvez créer du code personnalisé à l’aide du SDK Azure approprié pour accéder aux données. Par exemple, le kit de développement logiciel (SDK) de stockage Azure pour Python est une bibliothèque cliente que vous pouvez utiliser pour accéder aux données stockées dans des objets blob ou des fichiers.

Déplacer des données vers des solutions de stockage Azure prises en charge

Azure Machine Learning prend en charge l’accès aux données à partir des stockages suivants : Stockage Blob Azure, Azure Files, Azure Data Lake Storage Gen1, Azure Data Lake Storage Gen2, Azure SQL Database et Azure Database pour PostgreSQL. Si vous utilisez un stockage non pris en charge, nous vous recommandons de déplacer vos données vers des solutions de stockage Azure prises en charge en utilisant Azure Data Factory et ces étapes. Déplacer vos données vers un stockage pris en charge peut vous aider à réduire les coûts de sortie des données pendant les expériences Machine Learning.

Azure Data Factory fournit un moyen de transfert des données efficace et résilient avec plus de 80 connecteurs prédéfinis, sans coût supplémentaire. Ces connecteurs incluent les services de données Azure, les sources de données locales, Amazon S3 et Redshift, et Google BigQuery.

Étapes suivantes