Verbinding maken met opslagservices in Azure
In dit artikel leert u hoe u verbinding maakt met gegevensopslagservices in Azure met Azure Machine Learning en de Python SDK Azure Machine Learning.
Gegevensopslag maakt veilig verbinding met uw opslagservice in Azure zonder dat uw verificatiereferenties en de integriteit van uw oorspronkelijke gegevensbron risico lopen. Ze slaan verbindingsgegevens, zoals uw abonnements-id en tokenautorisatie, op in uw Key Vault die is gekoppeld aan de werkruimte, zodat u veilig toegang hebt tot uw opslag zonder dat u ze in uw scripts in code moet schrijven. U kunt gegevensopslag maken die verbinding maken met deze Azure-opslagoplossingen.
Zie het artikel Gegevens veilig openen om te begrijpen Azure Machine Learning in de algemene werkstroom voor gegevenstoegang.
Zie de Azure Machine Learning Studio gebruiken om gegevensstores te maken en te registreren voor een lage code-ervaring.
Tip
In dit artikel wordt ervan uitgenomen dat u verbinding wilt maken met uw opslagservice met verificatiereferenties op basis van referenties, zoals een service-principal of een SAS-token (Shared Access Signature). Als referenties zijn geregistreerd bij gegevensstores, kunnen alle gebruikers met de rol lezer van de werkruimte deze referenties ophalen. Meer informatie over de rol lezer van de werkruimte.
Als dit een probleem is, leert u hoe u Verbinding maken met opslagservices met toegang op basis van identiteit.
Vereisten
Een Azure-abonnement. Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint. Probeer de gratis of betaalde versie van Azure Machine Learning.
Een Azure-opslagaccount met een ondersteund opslagtype.
Een Azure Machine Learning-werkruimte.
Maak een Azure Machine Learning werkruimte of gebruik een bestaande werkruimte via de Python SDK.
Importeer
Workspacede klasse en en laad uwDatastoreabonnementsgegevens uit het bestandconfig.jsonmet behulp van de functiefrom_config(). Dit zoekt standaard naar het JSON-bestand in de huidige map, maar u kunt ook een padparameter opgeven om naar het bestand te wijzen met behulp vanfrom_config(path="your/file/path").import azureml.core from azureml.core import Workspace, Datastore ws = Workspace.from_config()Wanneer u een werkruimte maakt, worden een Azure Blob-container en een Azure-bestands share automatisch geregistreerd als gegevensopslag voor de werkruimte. Ze hebben respectievelijk
workspaceblobstoredeworkspacefilestorenamen en . Deworkspaceblobstorewordt gebruikt voor het opslaan van werkruimte-artefacten en uw machine learning experimentlogboeken. Het is ook ingesteld als het standaardgegevensstore en kan niet worden verwijderd uit de werkruimte. Deworkspacefilestorewordt gebruikt voor het opslaan van notebooks en R-scripts die zijn geautoriseerd via het reken-exemplaar.Notitie
Azure Machine Learning designer maakt automatisch een gegevensstore met de naam azureml_globaldatasets wanneer u een voorbeeld opent op de startpagina van de ontwerper. Dit gegevensstore bevat alleen voorbeeldgegevenssets. Gebruik dit gegevensstore niet voor toegang tot vertrouwelijke gegevens.
Ondersteunde servicetypen voor gegevensopslag
Gegevensopslag biedt momenteel ondersteuning voor het opslaan van verbindingsgegevens naar de opslagservices die in de volgende matrix worden vermeld.
Tip
Verplaats uw gegevens naar een ondersteunde Azure-opslagoplossing om niet-ondersteunde opslagoplossingen en om de kosten voor het ML gegevens te besparen tijdens het uitvoeren van experimenten.
| Storage Type | Verificatietype | Azure Machine Learning Studio | Azure Machine Learning Python SDK | Azure Machine Learning CLI | Azure Machine Learning REST API | VS-code |
|---|---|---|---|---|---|---|
| Azure Blob Storage | Accountsleutel SAS-token |
✓ | ✓ | ✓ | ✓ | ✓ |
| Azure-bestands share | Accountsleutel SAS-token |
✓ | ✓ | ✓ | ✓ | ✓ |
| Azure Data Lake Storage Gen 1 | Service-principal | ✓ | ✓ | ✓ | ✓ | |
| Azure Data Lake Storage Gen 2 | Service-principal | ✓ | ✓ | ✓ | ✓ | |
| Azure SQL Database | SQL-verificatie Service-principal |
✓ | ✓ | ✓ | ✓ | |
| Azure PostgreSQL | SQL-verificatie | ✓ | ✓ | ✓ | ✓ | |
| Azure Database for MySQL | SQL-verificatie | ✓* | ✓* | ✓* | ||
| Databricks-bestandssysteem | Geen verificatie | ✓** | ✓ ** | ✓** |
* MySQL wordt alleen ondersteund voor pijplijn DataTransferStep
** Databricks wordt alleen ondersteund voor pijplijn DatabricksStep
Richtlijnen voor Azure Storage
We raden u aan een gegevensopslag te maken voor een Azure Blob-container. Zowel Standard- als Premium-opslag zijn beschikbaar voor blobs. Hoewel Premium Storage duurder is, kunnen de snellere doorvoersnelheden de snelheid van uw trainings runs verbeteren, met name als u traint op basis van een grote gegevensset. Zie de Azure-prijscalculator voor meer informatie over de kosten van opslagaccounts.
Azure Data Lake Storage Gen2 is gebaseerd op Azure Blob Storage en is ontworpen voor zakelijke big data analyses. De toevoeging van een hiërarchische naamruimte aan Blob Storage vormt een fundamenteel onderdeel van Data Lake Storage Gen2. Met de hiërarchische naamruimte worden objecten/bestanden georganiseerd in een hiërarchie met mappen voor efficiënte toegang tot de gegevens.
Storage en machtigingen
Om ervoor te zorgen dat u veilig verbinding maakt met uw Azure-opslagservice, moet Azure Machine Learning toegang hebben tot de bijbehorende gegevensopslagcontainer. Deze toegang is afhankelijk van de verificatiereferenties die worden gebruikt om de gegevensstore te registreren.
Notitie
Deze richtlijnen zijn ook van toepassing op gegevensstores die zijn gemaakt met op identiteit gebaseerde gegevenstoegang.
Virtueel netwerk
Azure Machine Learning vereist aanvullende configuratiestappen om te communiceren met een opslagaccount dat zich achter een firewall of in een virtueel netwerk bevinden. Als uw opslagaccount zich achter een firewall bevinden, kunt u toestaan om het IP-adres weer te geven via de Azure Portal.
Azure Machine Learning kunnen aanvragen ontvangen van clients buiten het virtuele netwerk. Gebruik een privé-eindpunt met uw werkruimte om ervoor te zorgen dat de entiteit die gegevens aanvraagt bij de service veilig is.
Voor Python SDK-gebruikers moet het rekendoel binnen hetzelfde virtuele netwerk en subnet van de opslag zijn om toegang te krijgen tot uw gegevens via uw trainingsscript op een rekendoel.
Voor Azure Machine Learning Studio-gebruikers zijn verschillende functies afhankelijk van de mogelijkheid om gegevens uit een gegevensset te lezen; zoals voorbeelden van gegevenssets, profielen en geautomatiseerde machine learning. Als u wilt dat deze functies werken met opslag achter virtuele netwerken, gebruikt u een door een werkruimte beheerde identiteit in de studio om Azure Machine Learning toegang te geven tot het opslagaccount van buiten het virtuele netwerk.
Notitie
Als uw gegevensopslag een Azure SQL Database achter een virtueel netwerk is, moet u Openbare toegang weigeren instellen op Nee via de Azure Portal zodat Azure Machine Learning toegang heeft tot het opslagaccount.
Toegangsvalidatie
Als onderdeel van het eerste proces voor het maken en registreren van gegevensopslag, valideert Azure Machine Learning automatisch of de onderliggende opslagservice bestaat en heeft de door de gebruiker opgegeven principal (gebruikersnaam, service-principal of SAS-token) toegang tot de opgegeven opslag.
Nadat het gegevensopslag is gemaakt, wordt deze validatie alleen uitgevoerd voor methoden waarvoor toegang tot de onderliggende opslagcontainer is vereist, niet telkens wanneer gegevensopslagobjecten worden opgehaald. Validatie vindt bijvoorbeeld plaats als u bestanden wilt downloaden uit uw gegevensstore; Maar als u alleen uw standaardgegevensstore wilt wijzigen, wordt de validatie niet uitgevoerd.
Als u uw toegang tot de onderliggende opslagservice wilt verifiëren, kunt u uw accountsleutel, SAS-tokens (Shared Access Signatures) of service-principal in de bijbehorende methode van het gegevensopslagtype dat u wilt maken, register_azure_*() verstrekken. De opslagtypematrix bevat de ondersteunde verificatietypen die overeenkomen met elk gegevensopslagtype.
U vindt informatie over de accountsleutel, het SAS-token en de service-principal op uw Azure Portal.
Als u van plan bent een accountsleutel of SAS-token te gebruiken voor verificatie, selecteert u Storage Accounts in het linkerdeelvenster en kiest u het opslagaccount dat u wilt registreren.
- De pagina Overzicht bevat informatie zoals de accountnaam, container en bestands sharenaam.
- Ga voor accountsleutels naar Toegangssleutels in Instellingen deelvenster.
- Ga voor SAS-tokens naar Shared Access Signatures in Instellingen deelvenster.
- De pagina Overzicht bevat informatie zoals de accountnaam, container en bestands sharenaam.
Als u van plan bent om een service-principal te gebruiken voor verificatie, gaat u naar uw App-registraties selecteert u welke app u wilt gebruiken.
- De bijbehorende overzichtspagina bevat vereiste informatie, zoals tenant-id en client-id.
Belangrijk
- Als u uw toegangssleutels voor een Azure Storage-account (accountsleutel of SAS-token) moet wijzigen, moet u de nieuwe referenties synchroniseren met uw werkruimte en de gegevensstores die erop zijn aangesloten. Meer informatie over het synchroniseren van uw bijgewerkte referenties.
Machtigingen
Zorg ervoor dat uw verificatiereferenties toegang hebben tot Storage Blob Data Reader voor Azure Blob-container en Azure Data Lake Gen 2-opslag. Meer informatie over Storage blob-gegevenslezer. Een SAS-token voor een account is standaard ingesteld op geen machtigingen.
Voor leestoegang tot gegevens moeten uw verificatiereferenties minimaal lijst- en leesmachtigingen hebben voor containers en objecten.
Voor schrijftoegang zijn ook schrijf- en toevoegmachtigingen vereist.
Gegevensstores maken en registreren
Wanneer u een Azure-opslagoplossing registreert als een gegevensopslag, maakt en registreert u die gegevensopslag automatisch in een specifieke werkruimte. Bekijk de sectie over opslagtoegang & machtigingen voor hulp bij scenario's met virtuele netwerken en waar u de vereiste verificatiereferenties kunt vinden.
In deze sectie vindt u voorbeelden voor het maken en registreren van een gegevensopslag via de Python-SDK voor de volgende opslagtypen. De parameters in deze voorbeelden zijn de vereiste parameters voor het maken en registreren van een gegevensstore.
Zie de referentiedocumentatie voor de toepasselijke methoden voor het maken van gegevensopslag voor andere ondersteunde register_azure_* opslagservices.
Als u liever weinig code gebruikt, zie dan Verbinding maken aan gegevens met Azure Machine Learning studio.
Belangrijk
Als u de registratie van een gegevensstore met dezelfde naam ongedaan maakt en opnieuw registreert en dit mislukt, is de Azure Key Vault voor uw werkruimte mogelijk niet ingeschakeld voor het verwijderen van gegevens. De functie voor het verwijderen van de sleutelkluis is standaard ingeschakeld voor het sleutelkluis-exemplaar dat door uw werkruimte is gemaakt, maar is mogelijk niet ingeschakeld als u een bestaande sleutelkluis hebt gebruikt of als u een werkruimte hebt gemaakt vóór oktober 2020. Zie Soft Delete inschakelen voor een bestaande sleutelkluis voor meer informatie over het inschakelen van soft-delete.
Notitie
De naam van het gegevensstore mag alleen bestaan uit kleine letters, cijfers en onderstrepingstekens.
Azure Blob-container
Als u een Azure Blob-container wilt registreren als een gegevensopslag, gebruikt u register_azure_blob_container() .
Met de volgende code wordt het blob_datastore_name gegevensstore in de werkruimte gemaakt en ws geregistreerd. Dit gegevensopslag heeft toegang tot de my-container-name blobcontainer in het my-account-name opslagaccount met behulp van de opgegeven toegangssleutel voor het account. Bekijk de sectie over opslagtoegang & machtigingen voor hulp bij scenario's met virtuele netwerken en waar u de vereiste verificatiereferenties kunt vinden.
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-bestandsshare
Als u een Azure-bestands share wilt registreren als een gegevensstore, gebruikt u register_azure_file_share() .
Met de volgende code wordt het file_datastore_name gegevensstore in de werkruimte gemaakt en ws geregistreerd. Dit gegevensopslag heeft toegang tot my-fileshare-name de bestands share in my-account-name het opslagaccount met behulp van de opgegeven toegangssleutel voor het account. Bekijk de sectie over opslagtoegang & machtigingen voor hulp bij scenario's met virtuele netwerken en waar u de vereiste verificatiereferenties kunt vinden.
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 generatie 2
Voor een Azure Data Lake Storage Generation 2-gegevensopslag (ADLS Gen 2) gebruikt u register_azure_data_lake_gen2() om een referentiegegevensopslag te registreren die is verbonden met een Azure DataLake Gen 2-opslag met service-principalmachtigingen.
Als u uw service-principal wilt gebruiken, moet u uw toepassing registreren en de service-principal gegevenstoegang verlenen via op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC) of toegangsbeheerlijsten (ACL). Meer informatie over het instellen van toegangsbeheer voor ADLS Gen 2.
Met de volgende code wordt het adlsgen2_datastore_name gegevensstore in de werkruimte gemaakt en ws geregistreerd. Deze gegevensopslag heeft toegang tot het bestandssysteem test in het opslagaccount met behulp van de opgegeven referenties voor de account_name service-principal. Bekijk de sectie over opslagtoegang & machtigingen voor hulp bij scenario's met virtuele netwerken en waar u de vereiste verificatiereferenties kunt vinden.
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
Gegevensstores maken met andere Azure-hulpprogramma's
Naast het maken van gegevensstores met de Python SDK en de studio kunt u ook Azure Resource Manager-sjablonen of de VS Code-extensie Azure Machine Learning gebruiken.
Azure Resource Manager
Er is een aantal sjablonen op https://github.com/Azure/azure-quickstart-templates/tree/master/quickstarts/microsoft.machinelearningservices die kunnen worden gebruikt om gegevensstores te maken.
Zie Use an Azure Resource Manager template to create a workspace for Azure Machine Learning(Een sjabloon voor een Azure Machine Learning) voor meer informatie over het gebruik Azure Machine Learning.
VS Code-extensie
Als u liever gegevensstores maakt en beheert met behulp van de VS Code-extensie Azure Machine Learning, gaat u naar de handleiding voor VS Code-resourcebeheer voor meer informatie.
Gegevens in uw gegevensstores gebruiken
Nadat u een gegevensstore hebt maken, maakt u een Azure Machine Learning gegevensset om met uw gegevens te communiceren. Gegevenssets verpakken uw gegevens in een lazily geëvalueerd verbruiksobject voor machine learning taken, zoals training.
Met gegevenssets kunt u bestanden van elke indeling van Azure Storage-services downloaden of mounten voor modeltraining op een rekendoel. Meer informatie over het trainen van ML modellen met gegevenssets.
Gegevensstores uit uw werkruimte downloaden
Als u een specifiek gegevensstore wilt registreren in de huidige werkruimte, gebruikt u de get() statische methode voor de Datastore klasse :
# Get a named datastore from the current workspace
datastore = Datastore.get(ws, datastore_name='your datastore name')
U kunt de eigenschap voor een werkruimteobject gebruiken om de lijst met gegevensstores op te halen die zijn geregistreerd bij datastores een bepaalde werkruimte:
# List all datastores registered in the current workspace
datastores = ws.datastores
for name, datastore in datastores.items():
print(name, datastore.datastore_type)
Gebruik deze regel om de standaardgegevensstore van de werkruimte op te halen:
datastore = ws.get_default_datastore()
U kunt ook de standaardgegevensstore wijzigen met de volgende code. Deze mogelijkheid wordt alleen ondersteund via de SDK.
ws.set_default_datastore(new_default_datastore)
Toegang tot gegevens tijdens het scoren
Azure Machine Learning biedt verschillende manieren om uw modellen te gebruiken voor scoren. Sommige van deze methoden bieden geen toegang tot gegevensstores. Gebruik de volgende tabel om te begrijpen welke methoden u toegang geven tot gegevensstores tijdens het scoren:
| Methode | Toegang tot gegevensstore | Description |
|---|---|---|
| Batchvoorspelling | ✔ | Doe asynchroon voorspellingen op grote hoeveelheden gegevens. |
| Webservice | Modellen implementeren als een webservice. |
In situaties waarin de SDK geen toegang biedt tot gegevensstores, kunt u mogelijk aangepaste code maken met behulp van de relevante Azure SDK voor toegang tot de gegevens. De SDK Azure Storage Python is bijvoorbeeld een clientbibliotheek die u kunt gebruiken voor toegang tot gegevens die zijn opgeslagen in blobs of bestanden.
Gegevens verplaatsen naar ondersteunde Azure-opslagoplossingen
Azure Machine Learning biedt ondersteuning voor toegang tot gegevens uit Azure Blob Storage, Azure Files, Azure Data Lake Storage Gen1, Azure Data Lake Storage Gen2, Azure SQL Database en Azure Database for PostgreSQL. Als u niet-ondersteunde opslag gebruikt, raden we u aan om uw gegevens te verplaatsen naar ondersteunde Azure-opslagoplossingen met behulp van Azure Data Factory en deze stappen. Het verplaatsen van gegevens naar ondersteunde opslag kan u helpen om kosten voor het uit de gegevens weg te machine learning experimenten.
Azure Data Factory biedt een efficiënte en flexibele gegevensoverdracht met meer dan 80 vooraf gebouwde connectors, zonder extra kosten. Deze connectors omvatten Azure-gegevensservices, on-premises gegevensbronnen, Amazon S3 en Redshift en Google BigQuery.