Verbinding maken voor opslagservices in Azure met gegevensarchieven
VAN TOEPASSING OP: Python SDK azureml v1
VAN TOEPASSING OP:Azure CLI ml-extensie v1
In dit artikel leert u hoe u verbinding maakt met gegevensopslagservices in Azure met Azure Machine Learning-gegevensarchieven en de Azure Machine Learning Python SDK.
Gegevensarchieven maken veilig verbinding met uw opslagservice in Azure en ze voorkomen risico's voor uw verificatiereferenties of de integriteit van uw oorspronkelijke gegevensarchief. In een gegevensarchief worden verbindingsgegevens opgeslagen, bijvoorbeeld uw abonnements-id of tokenautorisatie, in de Sleutelkluis die is gekoppeld aan de werkruimte. Met een gegevensarchief hebt u veilig toegang tot uw opslag, omdat u hardcoderingsverbindingsgegevens in uw scripts kunt voorkomen. U kunt gegevensarchieven maken die verbinding maken met deze Azure-opslagoplossingen.
Voor informatie over hoe gegevensarchieven passen bij de algemene werkstroom voor gegevenstoegang van Azure Machine Learning, gaat u naar het artikel Over veilige toegang tot gegevens .
Als u wilt weten hoe u verbinding maakt met een gegevensopslagresource met een gebruikersinterface, gaat u naar Verbinding maken naar gegevensopslag met de gebruikersinterface van studio.
Tip
In dit artikel wordt ervan uitgegaan dat u verbinding maakt met uw opslagservice met verificatiereferenties op basis van referenties, bijvoorbeeld een service-principal of een SAS-token (Shared Access Signature). Als referenties zijn geregistreerd bij gegevensarchieven, kunnen alle gebruikers met de rol Lezer van de werkruimte deze referenties ophalen. Ga naar Rollen beheren in uw werkruimte voor meer informatie.
Ga voor meer informatie over op identiteit gebaseerde gegevenstoegang naar op identiteit gebaseerde gegevenstoegang tot opslagservices (v1).
Vereisten
Een Azure-abonnement. Als u nog geen abonnement op Azure hebt, maak dan een gratis account aan 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.
Een Azure Machine Learning-werkruimte maken of een bestaande werkruimte gebruiken via de Python SDK
Importeer de
Workspace
enDatastore
klasse en laad uw abonnementsgegevens uit hetconfig.json
bestand met defrom_config()
functie. De functie zoekt standaard naar het JSON-bestand in de huidige map, maar u kunt ook een padparameter opgeven om naar het bestand te verwijzen metfrom_config(path="your/file/path")
:import azureml.core from azureml.core import Workspace, Datastore ws = Workspace.from_config()
Het maken van een werkruimte registreert automatisch een Azure Blob-container en een Azure-bestandsshare, als gegevensopslag, naar de werkruimte. Ze hebben een naam
workspaceblobstore
enworkspacefilestore
respectievelijk. Deworkspaceblobstore
werkruimteartefacten en uw machine learning-experimentlogboeken worden opgeslagen. Het fungeert als het standaardgegevensarchief en kan niet worden verwijderd uit de werkruimte. Deworkspacefilestore
notebooks en R-scripts die zijn geautoriseerd via het rekenproces worden opgeslagen.Notitie
Azure Machine Learning Designer maakt automatisch een gegevensarchief met de naam azureml_globaldatasets wanneer u een voorbeeld opent op de startpagina van de ontwerpfunctie. Dit gegevensarchief bevat alleen voorbeeldgegevenssets. Gebruik dit gegevensarchief niet voor vertrouwelijke gegevenstoegang.
Ondersteunde servicetypen voor gegevensopslag
Gegevensarchieven ondersteunen momenteel de opslag van verbindingsgegevens met de opslagservices die worden vermeld in deze matrix:
Tip
Voor niet-ondersteunde opslagoplossingen (die niet worden vermeld in de volgende tabel), kunnen er problemen optreden wanneer u verbinding maakt en met uw gegevens werkt. We raden u aan uw gegevens te verplaatsen naar een ondersteunde Azure-opslagoplossing. Dit kan ook helpen bij aanvullende scenario's, bijvoorbeeld het verminderen van de kosten voor uitgaand gegevens tijdens ML-experimenten.
Opslagtype | Authentication type | Azure Machine Learning Studio | Python SDK voor Azure Machine Learning | Azure Machine Learning CLI | Azure Machine Learning REST API | VS Code |
---|---|---|---|---|---|---|
Azure Blob-opslag | Accountsleutel SAS-token |
✓ | ✓ | ✓ | ✓ | ✓ |
Azure-bestandsshare | 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
U wordt aangeraden een gegevensarchief 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 trainingsuitvoeringen verbeteren, vooral als u traint op basis van een grote gegevensset. Ga naar de Azure-prijscalculator voor informatie over de kosten van opslagaccounts.
Azure Data Lake Storage Gen2 is gebouwd op Basis van Azure Blob Storage. Het is ontworpen voor big data-analyses voor ondernemingen. Als onderdeel van Data Lake Storage Gen2 beschikt Blob Storage over een hiërarchische naamruimte. Met de hiërarchische naamruimte worden objecten/bestanden georganiseerd in een hiërarchie met mappen voor efficiënte toegang tot de gegevens.
Toegang en machtigingen voor opslag
Om ervoor te zorgen dat u veilig verbinding maakt met uw Azure Storage-service, moet u voor Azure Machine Learning gemachtigd zijn om toegang te krijgen tot de bijbehorende container voor gegevensopslag. Deze toegang is afhankelijk van de verificatiereferenties die worden gebruikt om het gegevensarchief te registreren.
Notitie
Deze richtlijnen zijn ook van toepassing op gegevensarchieven die zijn gemaakt met op identiteit gebaseerde gegevenstoegang.
Virtueel netwerk
Voor communicatie met een opslagaccount dat zich achter een firewall of binnen een virtueel netwerk bevindt, vereist Azure Machine Learning extra configuratiestappen. Voor een opslagaccount dat zich achter een firewall bevindt, kunt u het IP-adres van uw client toevoegen aan een acceptatielijst met Azure Portal.
Azure Machine Learning kan aanvragen ontvangen van clients buiten het virtuele netwerk. Gebruik een privé-eindpunt met uw werkruimte om ervoor te zorgen dat de entiteit die gegevens van de service aanvraagt, veilig is en om weergave van gegevens in uw werkruimte in te schakelen.
Voor Python SDK-gebruikers: Als u toegang wilt krijgen tot uw gegevens op een rekendoel met uw trainingsscript, moet u het rekendoel vinden in hetzelfde virtuele netwerk en subnet van de opslag. U kunt een rekenproces/cluster in hetzelfde virtuele netwerk gebruiken.
Voor Azure Machine Learning-studio gebruikers: verschillende functies zijn afhankelijk van de mogelijkheid om gegevens uit een gegevensset te lezen, bijvoorbeeld voorbeelden van gegevenssets, profielen en geautomatiseerde machine learning. Als u met deze functies wilt 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
Voor gegevens die zijn opgeslagen in een Azure SQL Database achter een virtueel netwerk, stelt u Openbare toegang weigeren in op Nee met azure Portal, zodat Azure Machine Learning toegang heeft tot het opslagaccount.
Toegangsvalidatie
Waarschuwing
Toegang tussen tenants tot opslagaccounts wordt niet ondersteund. Als uw scenario toegang tot meerdere tenants nodig heeft, neemt u contact op met de alias van het Azure Machine Learning Data Support-team op amldatasupport@microsoft.com voor hulp bij een aangepaste codeoplossing.
Als onderdeel van het eerste proces voor het maken en registreren van gegevensarchieven valideert Azure Machine Learning automatisch of de onderliggende opslagservice bestaat en of de door de gebruiker geleverde principal (gebruikersnaam, service-principal of SAS-token) toegang heeft tot de opgegeven opslag.
Nadat het gegevensarchief 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 uit uw gegevensarchief wilt downloaden. Als u echter alleen uw standaardgegevensarchief wilt wijzigen, gebeurt de validatie niet.
Als u uw toegang tot de onderliggende opslagservice wilt verifiëren, kunt u uw accountsleutel, SAS-tokens (Shared Access Signatures) of service-principal opgeven in de bijbehorende register_azure_*()
methode van het gegevensarchieftype dat u wilt maken. De matrix van het opslagtype bevat de ondersteunde verificatietypen die overeenkomen met elk gegevensarchieftype.
U vindt informatie over de accountsleutel, het SAS-token en de service-principal in uw Azure-portal.
Als u een accountsleutel of SAS-token wilt gebruiken voor verificatie, selecteert u Opslagaccounts in het linkerdeelvenster en kiest u het opslagaccount dat u wilt registreren
- De pagina Overzicht bevat accountnaam, bestandssharenaam, container, enzovoort.
- Ga voor accountsleutels naar Toegangssleutels in het deelvenster Instellingen
- Ga voor SAS-tokens naar Handtekeningen voor gedeelde toegang in het deelvenster Instellingen
- De pagina Overzicht bevat accountnaam, bestandssharenaam, container, enzovoort.
Als u een service-principal wilt gebruiken voor verificatie, gaat u naar uw App-registraties en selecteert u de app die u wilt gebruiken
- De bijbehorende overzichtspagina van de geselecteerde app bevat vereiste informatie, bijvoorbeeld tenant-id en client-id
Belangrijk
Als u uw toegangssleutels voor een Azure Storage-account (accountsleutel of SAS-token) wilt wijzigen, synchroniseert u de nieuwe referenties met uw werkruimte en de gekoppelde gegevensarchieven. Ga naar Uw bijgewerkte referenties synchroniseren voor meer informatie.
Machtigingen
Voor Azure Blob-container en Azure Data Lake Gen 2-opslag moet u ervoor zorgen dat uw verificatiereferenties toegang hebben tot Storage Blob Data Reader . Ga naar Storage Blob Data Reader voor meer informatie. Een SAS-token voor een account is standaard ingesteld op geen machtigingen.
Voor leestoegang tot gegevens moeten uw verificatiereferenties een minimum aan lijst- en leesmachtigingen hebben voor containers en objecten
Schrijftoegang voor gegevens vereist ook schrijf- en toevoegmachtigingen
Gegevensarchieven maken en registreren
Registratie van een Azure-opslagoplossing als een gegevensarchief maakt en registreert dat gegevensarchief automatisch in een specifieke werkruimte. Bekijk toegang tot opslag en machtigingen in dit document voor hulp bij scenario's voor virtuele netwerken en waar u de vereiste verificatiereferenties kunt vinden.
Deze sectie bevat voorbeelden waarin wordt beschreven hoe u een gegevensarchief maakt en registreert via de Python SDK voor deze opslagtypen. De parameters die in deze voorbeelden worden weergegeven, zijn de vereiste parameters voor het maken en registreren van een gegevensarchief:
Als u gegevensarchieven wilt maken voor andere ondersteunde opslagservices, gaat u naar de referentiedocumentatie voor de toepasselijke register_azure_*
methoden.
Als u wilt weten hoe u verbinding maakt met een gegevensopslagresource met een gebruikersinterface, gaat u naar Verbinding maken met gegevens met Azure Machine Learning-studio.
Belangrijk
Als u de registratie van een gegevensarchief met dezelfde naam ongedaan maakt en opnieuw registreert en de registratie mislukt, is de Azure Key Vault voor uw werkruimte mogelijk niet ingeschakeld voor voorlopig verwijderen. Voorlopig verwijderen is standaard ingeschakeld voor het sleutelkluisexemplaren dat door uw werkruimte is gemaakt, maar deze functie is mogelijk niet ingeschakeld als u een bestaande sleutelkluis hebt gebruikt of een werkruimte hebt gemaakt vóór oktober 2020. Zie Voorlopig verwijderen inschakelen voor een bestaande sleutelkluis voor informatie over het inschakelen van voorlopig verwijderen.
Notitie
Een gegevensarchiefnaam mag alleen kleine letters, cijfers en onderstrepingstekens bevatten.
Azure-blobcontainer
Als u een Azure Blob-container wilt registreren als een gegevensarchief, gebruikt u de register_azure_blob_container()
methode.
Met dit codevoorbeeld wordt het blob_datastore_name
gegevensarchief gemaakt en geregistreerd in de ws
werkruimte. Het gegevensarchief maakt gebruik van de opgegeven toegangssleutel voor het account voor toegang tot de my-container-name
blobcontainer in het my-account-name
opslagaccount. Raadpleeg de sectie over opslagtoegang en machtigingen voor richtlijnen over scenario's voor 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-bestandsshare wilt registreren als een gegevensarchief, gebruikt u de register_azure_file_share()
methode.
Met dit codevoorbeeld wordt het file_datastore_name
gegevensarchief gemaakt en geregistreerd in de ws
werkruimte. Het gegevensarchief maakt gebruik van de my-fileshare-name
bestandsshare in het my-account-name
opslagaccount, met de opgegeven toegangssleutel voor het account. Raadpleeg de sectie over opslagtoegang en machtigingen voor richtlijnen over scenario's voor 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 Generation 2
Voor een Azure Data Lake Storage Generation 2-gegevensarchief (ADLS Gen 2) gebruikt u demethode register_azure_data_lake_gen2() om een referentiegegevensarchief te registreren dat is verbonden met een Azure Data Lake Gen 2-opslag met service-principal-machtigingen.
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). Ga voor meer informatie naar het instellen van toegangsbeheer voor ADLS Gen 2.
Met deze code wordt het adlsgen2_datastore_name
gegevensarchief gemaakt en geregistreerd bij de ws
werkruimte. Dit gegevensarchief heeft toegang tot het bestandssysteem test
in het account_name
opslagaccount, via het gebruik van de opgegeven referenties voor de service-principal. Raadpleeg de sectie over opslagtoegang en machtigingen voor richtlijnen voor scenario's voor 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
Gegevensarchieven maken met andere Azure-hulpprogramma's
Naast het maken van gegevensarchieven met de Python SDK en de studio, kunt u ook gegevensarchieven maken met Azure Resource Manager-sjablonen of de Azure Machine Learning VS Code-extensie.
Azure Resource Manager
U kunt verschillende sjablonen gebruiken https://github.com/Azure/azure-quickstart-templates/tree/master/quickstarts/microsoft.machinelearningservices om gegevensarchieven te maken. Ga naar Een Azure Resource Manager-sjabloon gebruiken om een werkruimte voor Azure Machine Learning te maken voor meer informatie over deze sjablonen.
VS Code-extensie
Voor meer informatie over het maken en beheren van gegevensarchieven met de Azure Machine Learning VS Code-extensie, gaat u naar de handleiding voor VS Code-resourcebeheer.
Gegevens gebruiken in uw gegevensarchieven
Nadat het gegevensarchief is gemaakt, maakt u een Azure Machine Learning-gegevensset om met uw gegevens te communiceren. Een gegevensset verpakt 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 koppelen voor modeltraining op een rekendoel. Meer informatie over het trainen van ML-modellen met gegevenssets.
Gegevensarchieven ophalen uit uw werkruimte
Als u een specifiek gegevensarchief wilt ophalen dat is geregistreerd in de huidige werkruimte, gebruikt u de get()
statische methode in de Datastore
klasse:
# Get a named datastore from the current workspace
datastore = Datastore.get(ws, datastore_name='your datastore name')
Als u de lijst met gegevensarchieven wilt ophalen die zijn geregistreerd bij een bepaalde werkruimte, gebruikt u de datastores
eigenschap voor een werkruimteobject:
# List all datastores registered in the current workspace
datastores = ws.datastores
for name, datastore in datastores.items():
print(name, datastore.datastore_type)
In dit codevoorbeeld ziet u hoe u het standaardgegevensarchief van de werkruimte kunt ophalen:
datastore = ws.get_default_datastore()
U kunt ook het standaardgegevensarchief wijzigen met dit codevoorbeeld. Alleen de SDK biedt ondersteuning voor deze mogelijkheid:
ws.set_default_datastore(new_default_datastore)
Toegang tot gegevens tijdens scoren
Azure Machine Learning biedt verschillende manieren om uw modellen te gebruiken voor scoren. Sommige van deze methoden bieden geen toegang tot gegevensarchieven. In de volgende tabel wordt beschreven welke methoden toegang bieden tot gegevensarchieven tijdens het scoren:
Wijze | Toegang tot gegevensarchief | Beschrijving |
---|---|---|
Batchvoorspelling | ✔ | Doe asynchroon voorspellingen op grote hoeveelheden gegevens. |
Webservice | Modellen implementeren als een webservice. |
Wanneer de SDK geen toegang biedt tot gegevensarchieven, kunt u mogelijk aangepaste code maken met de relevante Azure SDK om toegang te krijgen tot de gegevens. De Azure Storage SDK voor python-clientbibliotheek heeft bijvoorbeeld 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 vanuit
- Azure Blob Storage
- Azure Files
- Azure Data Lake Storage Gen1
- Azure Data Lake Storage Gen2
- Azure SQL Database
- Azure Database for PostgreSQL
Als u niet-ondersteunde opslag gebruikt, raden we u aan Azure Data Factory en deze stappen te gebruiken om uw gegevens te verplaatsen naar ondersteunde Azure-opslagoplossingen. Door gegevens naar ondersteunde opslag te verplaatsen, kunt u kosten voor uitgaand gegevens besparen tijdens 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.