Verbinden von Speicherdiensten in Azure mit Datenspeichern

GILT FÜR:Python SDK azureml v1

GILT FÜR:Azure CLI ML-Erweiterung v1

In diesem Artikel wird beschrieben, wie Sie die Datenspeicherdienste in Azure mit Azure Machine Learning-Datenspeichern und dem Python-SDK für Azure Machine Learning verbinden.

Datenspeicher stellen sicher eine Verbindung mit Ihrem Speicherdienst in Azure her, und sie vermeiden Risiken für Ihre Authentifizierungsanmeldeinformationen oder die Integrität Ihres ursprünglichen Datenspeichers. Ein Datenspeicher speichert Verbindungsinformationen , z. B. Ihre Abonnement-ID oder Tokenautorisierung, in dem Key Vault, der dem Arbeitsbereich zugeordnet ist. Mit einem Datenspeicher können Sie sicher auf Ihren Speicher zugreifen, da Sie Verbindungsinformationen in Ihren Skripts vermeiden können. Sie können Datenspeicher erstellen, für die Verbindungen mit diesen Azure-Speicherlösungen hergestellt werden.

Informationen, die beschreiben, wie Datenspeicher mit dem Azure Machine Learning-Gesamtdatenzugriffsworkflow passen, finden Sie im Artikel Sicherer Zugriff auf Daten.

Wenn Sie erfahren möchten, wie Sie eine Verbindung mit einer Datenspeicherressource mit einer Benutzeroberfläche herstellen, besuchen Sie Herstellen einer Verbindung mit Datenspeichern über die Studio-Benutzeroberfläche.

Tipp

In diesem Artikel wird davon ausgegangen, dass Sie die Verbindung mit Ihrem Speicherdienst per Authentifizierung mit Anmeldeinformationen herstellen, z. B. einem Dienstprinzipal oder einem SAS-Token (Shared Access Signature). Beachten Sie hierbei, dass alle Benutzer mit der Rolle Leser für den Arbeitsbereich diese Anmeldeinformationen abrufen können, wenn sie bei Datenspeichern registriert sind. Weitere Informationen finden Sie unter Verwalten von Rollen in Ihrem Arbeitsbereich.

Weitere Informationen zu identitätsbasiertem Datenzugriff finden Sie unter Identitätsbasierter Datenzugriff auf Speicherdienste (v1).

Voraussetzungen

  • Ein Azure-Abonnement. Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen. Probieren Sie die kostenlose oder kostenpflichtige Version von Azure Machine Learning aus.

  • Ein Azure Storage-Konto mit einem unterstützten Speichertyp

  • über das Azure Machine Learning SDK für Python

  • Ein Azure Machine Learning-Arbeitsbereich.

    Erstellen eines Azure Machine Learning-Arbeitsbereichs oder Verwenden eines vorhandenen Arbeitsbereichs über das Python SDK

    Importieren Sie die Klasse Workspace und Datastore, und laden Sie Ihre Abonnementinformationen mit der Funktion from_config() aus der Datei config.json. Diese Funktion durchsucht standardmäßig das aktuelle Verzeichnis nach der JSON-Datei. Sie können jedoch auch einen Pfadparameter angeben, um mit from_config(path="your/file/path") auf die Datei zu verweisen.

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

    Die Arbeitsbereicherstellung registriert automatisch einen Azure-Blobcontainer und eine Azure-Dateifreigabe als Datenspeicher im Arbeitsbereich. Sie erhalten die Namen workspaceblobstore und workspacefilestore. workspaceblobstore speichert Arbeitsbereichsartefakte und Ihre Protokollen zu Experimenten mit maschinellem Lernen. Er dient außerdem als Standarddatenspeicher und kann nicht aus dem Arbeitsbereich gelöscht werden. workspacefilestore speichert Notebooks und R-Skripts, die über Computeinstanzen autorisiert werden.

    Hinweis

    Azure Machine Learning-Designer erstellt automatisch einen Datenspeicher namens azureml_globaldatasets, wenn Sie ein Beispiel auf der Designerstartseite öffnen. Dieser Datenspeicher enthält nur Beispieldatasets. Verwenden Sie diesen Datenspeicher nicht für den Zugriff auf vertrauliche Daten.

Unterstützte Diensttypen für Datenspeicher

Datenspeicher unterstützen derzeit das Speichern von Verbindungsinformationen in den Speicherdiensten, die in dieser Matrix aufgeführt sind.

Tipp

Bei nicht unterstützten Speicherlösungen (jene, die in der folgenden Tabelle nicht aufgeführt sind) treten möglicherweise Probleme auf, wenn Sie eine Verbindung herstellen und mit Ihren Daten arbeiten. Wir empfehlen Ihnen, Ihre Daten auf eine unterstützte Azure-Speicherlösung zu verschieben. Dies kann auch bei weiteren Szenarien hilfreich sein, z. B. bei der Reduzierung von Kosten für ausgehende Daten bei ML-Experimenten.

Speichertyp Authentifizierungsart Azure Machine Learning Studio Python-SDK für Azure Machine Learning Azure Machine Learning-CLI Azure Machine Learning-REST-API VS-Code
Azure Blob Storage Kontoschlüssel
SAS-Token
Azure-Dateifreigabe Kontoschlüssel
SAS-Token
Azure Data Lake Storage Gen 1 Dienstprinzipal
Azure Data Lake Storage Gen2 Dienstprinzipal
Azure SQL-Datenbank SQL-Authentifizierung
Dienstprinzipal
Azure PostgreSQL SQL-Authentifizierung
Azure Database for MySQL SQL-Authentifizierung ✓* ✓* ✓*
Databricks-Dateisystem Keine Authentifizierung ✓** ✓ ** ✓**

Leitfaden für Speicher

Es wird empfohlen, einen Datenspeicher für einen Azure-Blobcontainer zu erstellen. Für Blobs stehen sowohl der Standard- als auch der Premiumspeicher zur Verfügung. Der Premiumspeicher ist zwar teurer, ermöglicht aber höhere Durchsätze. Dies kann sich vor allem bei einem Training mit einem großen Dataset positiv auf die Ausführungsgeschwindigkeit auswirken. Informationen zu Speicherkontokosten finden Sie im Azure-Preisrechner.

Azure Data Lake Storage Gen2 baut auf Azure Blob Storage auf. Es wurde für Big Data-Analysen in Großunternehmen entwickelt. Im Rahmen von Data Lake Storage Gen2 verfügt Blob Storage über einen hierarchischen Namespace. Der hierarchische Namespace organisiert Objekte/Dateien in einer Hierarchie von Verzeichnissen für den effizienten Datenzugriff.

Speicherzugriff und Berechtigungen

Um sicherzustellen, dass eine sichere Verbindung mit Ihrem Azure-Speicherdienst hergestellt wird, erfordert Azure Machine Learning, dass Sie über die Berechtigung zum Zugreifen auf den entsprechenden Datenspeichercontainer verfügen. Dieser Zugriff ist von den Anmeldeinformationen für die Authentifizierung abhängig, die zum Registrieren des Datenspeichers verwendet werden.

Virtuelles Netzwerk

Um mit einem Speicherkonto zu kommunizieren, das sich hinter einer Firewall oder in einem virtuellen Netzwerk befindet, erfordert Azure Machine Learning zusätzliche Konfigurationsschritte. Bei einem Speicherkonto hinter einer Firewall können Sie die IP-Adresse Ihres Clients über das Azure-Portal auf eine Positivliste setzen.

Azure Machine Learning kann Anforderungen von Clients außerhalb des virtuellen Netzwerks empfangen. Verwenden Sie einen privaten Endpunkt mit Ihrem Arbeitsbereich, um die Sicherheit der Entität, die Daten vom Dienst anfordert, sicherzustellen und um die Anzeige von Daten in Ihrem Arbeitsbereich zu ermöglichen.

Für Python SDK-Benutzer: Um auf Ihre Daten in einem Computeziel mit Ihrem Schulungsskript zuzugreifen, müssen Sie das Computeziel innerhalb desselben virtuellen Netzwerks und Subnetzes des Speichers suchen. Sie können eine Compute-Instanz bzw. einen Cluster im gleichen virtuellen Netzwerk verwenden.

Für Azure Machine Learning Studio-Benutzer: Mehrere Features basieren auf der Möglichkeit, Daten aus einem Dataset zu lesen, z. B. Datasetvorschauen, Profile und automatisiertes maschinelles Lernen. Damit diese Features für Speicher hinter virtuellen Netzwerken funktionieren, verwenden Sie in Studio eine vom Arbeitsbereich verwaltete Identität, damit Azure Machine Learning von Orten außerhalb des virtuellen Netzwerks auf das Speicherkonto zugreifen kann.

Hinweis

Wenn es sich bei Ihrem Datenspeicher um eine Azure SQL-Datenbank hinter einem virtuellen Netzwerk handelt, legen Sie über das Azure-Portal die Einstellung Öffentlichen Zugriff verweigern auf Nein fest, um Azure Machine Learning Zugriff auf das Speicherkonto zu gewähren.

Zugriffsüberprüfung

Warnung

Mandantenübergreifender Zugriff auf Speicherkonten wird nicht unterstützt. Wenn Ihr Szenario mandantenübergreifenden Zugriff benötigt, wenden Sie sich an den Alias des Azure Machine Learning Datensupportteams amldatasupport@microsoft.com, um Unterstützung bei einer benutzerdefinierten Codelösung zu erhalten.

Im Rahmen des ersten Erstellungs- und Registrierungsvorgangs des Datenspeichers überprüft Azure Machine Learning automatisch, ob der zugrunde liegende Speicherdienst vorhanden ist und der vom Benutzer bereitgestellte Prinzipal (Benutzername, Dienstprinzipal oder SAS-Token) auf den angegebenen Speicher zugreifen kann.

Nach dem Erstellen des Datenspeichers wird diese Überprüfung nur noch für Methoden ausgeführt, die Zugriff auf den zugrunde liegenden Speichercontainer benötigen, und nicht bei jedem Abruf von Datenspeicherobjekten. Die Überprüfung erfolgt beispielsweise, wenn Sie Dateien aus Ihrem Datenspeicher herunterladen möchten. Wenn Sie den Standarddatenspeicher jedoch nur ändern möchten, findet die Überprüfung nicht statt.

Um Ihren Zugriff auf den zugrunde liegenden Speicherdienst zu authentifizieren, können Sie Ihren Kontoschlüssel, Ihr SAS-Token (Shared Access Signature) oder Ihren Dienstprinzipal in der entsprechenden register_azure_*()-Methode des zu erstellenden Datenspeichertyps angeben. In der Speichertypmatrix werden die unterstützten Authentifizierungstypen aufgeführt, die den einzelnen Datenspeichertypen entsprechen.

Informationen zu Kontoschlüssel, SAS-Token und Dienstprinzipal finden Sie im Azure-Portal.

  • Wenn Sie einen Kontoschlüssel oder ein SAS-Token für die Authentifizierung verwenden, wählen Sie im linken Bereich Speicherkonten und dann das Speicherkonto aus, das Sie registrieren möchten.

    • Die Seite Übersicht enthält Kontoname, Dateifreigabename, Container usw.
      • Wechseln Sie für Kontoschlüssel zu Kontoschlüssel im Bereich Einstellungen.
      • Für SAS-Token wechseln Sie zu Shared Access Signatures im Bereich Einstellungen.
  • Wenn Sie einen Dienstprinzipal für die Authentifizierung verwenden, navigieren Sie zu Ihren App-Registrierungen, und wählen Sie die gewünschte App aus.

    • Die entsprechende Seite Übersicht der ausgewählten App enthält erforderliche Informationen – z. B. Mandanten-ID und Client-ID.

Wichtig

Um Ihre Zugriffsschlüssel für ein Azure Storage-Konto (Kontoschlüssel oder SAS-Token) zu ändern, stellen Sie sicher, dass die neuen Anmeldeinformationen mit Ihrem Arbeitsbereich und den damit verbundenen Datenspeichern synchronisiert werden. Weitere Informationen finden Sie unter Synchronisieren Ihrer aktualisierten Anmeldeinformationen.

Berechtigungen

Stellen Sie für Azure-Blobcontainer und Azure Data Lake Gen2-Speicher sicher, dass Ihre Anmeldeinformationen für die Authentifizierung über den Zugriff Storage-Blobdatenleser verfügen. Weitere Informationen finden Sie unter Leser von Speicherblobdaten. Ein Konto-SAS-Token besitzt standardmäßig keine Berechtigungen.

  • Für den Lesezugriff auf Daten müssen Ihre Anmeldeinformationen für die Authentifizierung mindestens die Berechtigungen zum Auflisten und Lesen für Container und Objekte besitzen.

  • Für den Datenschreibzugriff sind auch Berechtigungen zum Schreiben und Hinzufügen erforderlich.

Erstellen und Registrieren von Datenspeichern

Die Registrierung einer Azure-Speicherlösung als Datenspeicher erstellt und registriert diesen Datenspeicher automatisch für einen bestimmten Arbeitsbereich. Lesen Sie den Abschnitt Speicherzugriff und Berechtigungen in diesem Dokument, um Informationen zu Szenarios für virtuelle Netzwerke zu erhalten und um zu erfahren, wo Sie die erforderlichen Anmeldeinformationen für die Authentifizierung finden.

Dieser Abschnitt enthält Beispiele für das Erstellen und Registrieren eines Datenspeichers über das Python-SDK für diese Speichertypen. Bei den in diesen Beispielen gezeigten Parametern handelt es sich um die erforderlichen Parameter zum Erstellen und Registrieren eines Datenspeichers.

Informationen zum Erstellen von Datenspeichern für andere unterstützte Speicherdienste finden Sie in der Referenzdokumentation für die entsprechenden register_azure_*-Methoden.

Wenn Sie erfahren möchten, wie Sie eine Verbindung mit einer Datenspeicherressource mit einer Benutzeroberfläche herstellen, besuchen Sie Herstellen einer Verbindung mit Daten mit Azure Machine Learning Studio.

Wichtig

Wenn Sie die Registrierung aufheben und einen Datenspeicher mit dem gleichen Namen erneut registrieren und dabei ein Fehler auftritt, ist bei dem Azure Key Vault für Ihren Arbeitsbereich vorläufiges Löschen möglicherweise nicht aktiviert. Standardmäßig ist vorläufiges Löschen für die Key Vault-Instanz aktiviert, die von Ihrem Arbeitsbereich erstellt wurde. Es ist jedoch möglicherweise nicht aktiviert, wenn Sie einen vorhandenen Schlüsseltresor verwendet haben oder einen Arbeitsbereich vor Oktober 2020 erstellt haben. Informationen zum Aktivieren des vorläufigen Löschens finden Sie unter Aktivieren des vorläufigen Löschens für einen vorhandenen Schlüsseltresor.

Hinweis

Ein Datenspeichername darf nur Kleinbuchstaben, Ziffern und Unterstriche enthalten.

Azure-Blobcontainer

Um einen Azure-Blobcontainer als Datenspeicher zu registrieren, verwenden Sie die register_azure_blob_container()-Methode.

Dieses Codebeispiel erstellt den Datenspeicher blob_datastore_name und registriert ihn im Arbeitsbereich ws. Der Datenspeicher verwendet den angegebenen Kontozugriffsschlüssel, um auf den my-container-name-Blobcontainer im my-account-name-Speicherkonto zuzugreifen. Lesen Sie den Abschnitt Speicherzugriff und Berechtigungen, um Informationen zu Szenarios für virtuelle Netzwerke zu erhalten und um zu erfahren, wo Sie die erforderlichen Anmeldeinformationen für die Authentifizierung finden.

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)

Azure-Dateifreigabe

Um einen eine Azure-Dateifreigabe als Datenspeicher zu registrieren, verwenden Sie register_azure_file_share()-Methode.

Dieses Codebeispiel erstellt den Datenspeicher file_datastore_name und registriert ihn im Arbeitsbereich ws. Der Datenspeicher greift auf die my-fileshare-name-Dateifreigabe im my-account-name-Speicherkonto zu und verwendet dazu den angegebenen Zugriffsschlüssel des Kontos. Lesen Sie den Abschnitt Speicherzugriff und Berechtigungen, um Informationen zu Szenarios für virtuelle Netzwerke zu erhalten und um zu erfahren, wo Sie die erforderlichen Anmeldeinformationen für die Authentifizierung finden.

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 Generation 2

Für einen Datenspeicher von Azure Data Lake Storage Generation 2 (ADLS Gen 2) verwenden Sie die Methode register_azure_data_lake_gen2(), um einen Datenspeicher für Anmeldeinformationen zu registrieren, der mit einem Azure DataLake Gen 2-Speicher mit Dienstprinzipalberechtigungen verbunden ist.

Um Ihren Dienstprinzipal zu nutzen, müssen Sie Ihre Anwendung registrieren und dem Dienstprinzipal Datenzugriff über die rollenbasierte Zugriffssteuerung in Azure (Azure RBAC) oder Zugriffssteuerungslisten (ACL) gewähren. Weitere Informationen finden Sie unter für ADLS Gen 2 eingerichtete Zugriffssteuerung.

Dieser Code erstellt den Datenspeicher adlsgen2_datastore_name und registriert ihn im Arbeitsbereich ws. Dieser Datenspeicher greift auf das Dateisystem test im account_name-Speicherkonto zu und verwendet dazu die bereitgestellten Anmeldeinformationen des Dienstprinzipals. Lesen Sie den Abschnitt Speicherzugriff und Berechtigungen, um Informationen zu Szenarios für virtuelle Netzwerke zu erhalten und um zu erfahren, wo Sie die erforderlichen Anmeldeinformationen für die Authentifizierung finden.

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

Erstellen von Datenspeichern mit anderen Azure-Tools

Zusätzlich zur Erstellung von Datenspeichern mit dem Python-SDK und mit Studio können Sie Datenspeicher auch mit Azure Resource Manager-Vorlagen oder der VS Code-Erweiterung für Azure Machine Learning erstellen.

Azure Resource Manager

Sie können mehrere Vorlagen unter https://github.com/Azure/azure-quickstart-templates/tree/master/quickstarts/microsoft.machinelearningservices verwenden, um Datenspeicher zu erstellen. Informationen zur Verwendung dieser Vorlagen finden Sie unter Verwenden einer Azure Resource Manager-Vorlage zum Erstellen eines Arbeitsbereichs für Azure Machine Learning.

VS Code-Erweiterung

Weitere Informationen zum Erstellen und Verwalten von Datenspeichern mit der Azure Machine Learning VS Code-Erweiterung finden Sie in der VS Code-Ressourcenverwaltung – Anleitung.

Verwenden von Daten in Ihren Datenspeichern

Nachdem Sie einen Datenspeicher erstellt haben, erstellen Sie ein Azure Machine Learning-Dataset, um mit Ihren Daten zu interagieren. Ein Dataset packt Ihre Daten in ein selten ausgewertetes Objekt für Aufgaben des maschinellen Lernens wie das Training. Mit Datasets können Sie Dateien für das Modelltraining auf einem Computeziel in allen Formaten aus Azure-Speicherdiensten herunterladen bzw. einbinden. Erfahren Sie mehr zum Trainieren von ML-Modellen mit Datasets.

Abrufen von Datenspeichern aus Ihrem Arbeitsbereich

Verwenden Sie die statische Methode get() mit der Datastore-Klasse, um einen bestimmten Datenspeicher im aktuellen Arbeitsbereich zu registrieren:

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

Um die Liste der in einem bestimmten Arbeitsbereich registrierten Datenspeicher abzurufen, verwenden Sie die datastores-Eigenschaft für ein Arbeitsbereichsobjekt:

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

In diesem Codebeispiel wird gezeigt, wie Sie den Standarddatenspeicher des Arbeitsbereichs abrufen:

datastore = ws.get_default_datastore()

Mithilfe dieses Codebeispiels können Sie den Standarddatenspeicher ändern. Nur das SDK unterstützt diese Möglichkeit:

 ws.set_default_datastore(new_default_datastore)

Zugreifen auf Daten während der Bewertung

Azure Machine Learning bietet mehrere Möglichkeiten, Ihre Modelle zur Bewertung zu verwenden. Einige dieser Methoden bieten keinen Zugriff auf Datenspeicher. Die folgende Tabelle zeigt, welche Methoden Ihnen ermöglichen, während der Bewertung auf Datenspeicher zuzugreifen:

Methode Datenspeicherzugriff BESCHREIBUNG
Batchvorhersage Treffen Sie asynchron Vorhersagen für große Datenmengen.
Webdienst   Stellen Sie Modelle als Webdienste bereit.

Wenn das SDK keinen Zugriff auf Datenspeicher bietet, können Sie möglicherweise benutzerdefinierten Code mit dem entsprechenden Azure-SDK erstellen, um auf die Daten zuzugreifen. Die Azure Storage SDK für Python-Clientbibliothek kann auf in Blobs oder Dateien gespeicherte Daten zugreifen.

Verschieben von Daten in unterstützte Azure Storage-Lösungen

Azure Machine Learning unterstützt den Zugriff auf Daten von

  • Azure Blob Storage
  • Azure Files
  • Azure Data Lake Storage Gen1
  • Azure Data Lake Storage Gen2
  • Azure SQL-Datenbank
  • Azure Database for PostgreSQL

Wenn Sie einen nicht unterstützten Speicher verwenden, wird empfohlen, Azure Data Factory und diese Schritte zu verwenden, um Ihre Daten mithilfe von Azure Data Factory und diesen Schritten in unterstützte Azure-Speicherlösungen zu verschieben. Durch das Verschieben von Daten auf einen unterstützten Speicher können Sie bei Machine Learning-Experimenten Kosten für die Datenausgabe sparen.

Azure Data Factory bietet eine effiziente und robuste Datenübertragung mit mehr als 80 vorkonfigurierten Connectors ohne zusätzliche Kosten. Diese Connectors umfassen Azure-Datendienste, lokale Datenquellen, Amazon S3 und Redshift sowie Google BigQuery.

Nächste Schritte