Ansluta till lagringstjänster i Azure med datalager
GÄLLER FÖR: Python SDK azureml v1
GÄLLER FÖR: Azure CLI ml-tillägget v1
I den här artikeln lär du dig hur du ansluter till datalagringstjänster i Azure med Azure Mašinsko učenje datalager och Azure Mašinsko učenje Python SDK.
Datalager ansluter säkert till lagringstjänsten i Azure och undviker risker för dina autentiseringsuppgifter eller integriteten i ditt ursprungliga datalager. Ett datalager lagrar anslutningsinformation – till exempel ditt prenumerations-ID eller tokenauktorisering – i nyckelvalvet som är associerat med arbetsytan. Med ett datalager kan du komma åt lagringen på ett säkert sätt eftersom du kan undvika hårdkodad anslutningsinformation i skripten. Du kan skapa datalager som ansluter till dessa Azure Storage-lösningar.
Information som beskriver hur datalager passar med Azure Mašinsko učenje övergripande arbetsflöde för dataåtkomst finns i artikeln Om säker åtkomst till data.
Mer information om hur du ansluter till en datalagringsresurs med ett användargränssnitt finns i Ansluta till datalagring med studiogränssnittet.
Dricks
Den här artikeln förutsätter att du ansluter till din lagringstjänst med autentiseringsuppgifter baserade på autentiseringsuppgifter – till exempel ett tjänsthuvudnamn eller en SAS-token (signatur för delad åtkomst). Observera att om autentiseringsuppgifter registreras med datalager kan alla användare med rollen läsare för arbetsytan hämta dessa autentiseringsuppgifter. Mer information finns i Hantera roller på din arbetsyta.
Mer information om identitetsbaserad dataåtkomst finns i Identitetsbaserad dataåtkomst till lagringstjänster (v1)..
Förutsättningar
En Azure-prenumeration. Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar. Prova den kostnadsfria eller betalda versionen av Azure Mašinsko učenje
Ett Azure Storage-konto med en lagringstyp som stöds
En Azure Machine Learning-arbetsyta.
Skapa en Azure Mašinsko učenje-arbetsyta eller använd en befintlig arbetsyta via Python SDK
Workspace
Importera klassen ochDatastore
och läs in prenumerationsinformationenconfig.json
från filen medfrom_config()
funktionen . Som standard söker funktionen efter JSON-filen i den aktuella katalogen, men du kan också ange en sökvägsparameter som pekar på filen medfrom_config(path="your/file/path")
:import azureml.core from azureml.core import Workspace, Datastore ws = Workspace.from_config()
När arbetsytan skapas registreras automatiskt en Azure-blobcontainer och en Azure-filresurs, som datalager, till arbetsytan. De heter
workspaceblobstore
respektiveworkspacefilestore
. Lagrarworkspaceblobstore
arbetsytefakter och loggar för maskininlärningsexperiment. Det fungerar som standarddatalager och kan inte tas bort från arbetsytan. Lagrarworkspacefilestore
notebook-filer och R-skript som auktoriserats via beräkningsinstansen.Kommentar
Azure Mašinsko učenje Designer skapar automatiskt ett datalager med namnet azureml_globaldatasets när du öppnar ett exempel på designerns startsida. Det här dataarkivet innehåller bara exempeldatauppsättningar. Använd inte det här dataarkivet för konfidentiell dataåtkomst.
Tjänsttyper för datalagring som stöds
Datalager stöder för närvarande lagring av anslutningsinformation till de lagringstjänster som anges i den här matrisen:
Dricks
För lagringslösningar som inte stöds (de som inte visas i följande tabell) kan det uppstå problem när du ansluter och arbetar med dina data. Vi rekommenderar att du flyttar dina data till en Azure Storage-lösning som stöds. Detta kan också hjälpa till med ytterligare scenarier, till exempel minskning av datautgående kostnader under ML-experiment.
Lagringstyp | Authentication type | Azure Machine Learning-studio | Python-SDK för Azure Machine Learning | Azure Machine Learning CLI | REST API för Azure Mašinsko učenje | VS Code |
---|---|---|---|---|---|---|
Azure Blob Storage | Kontonyckel SAS-token |
✓ | ✓ | ✓ | ✓ | ✓ |
Azure-filresurs | Kontonyckel SAS-token |
✓ | ✓ | ✓ | ✓ | ✓ |
Azure Data Lake Storage Gen 1 | Tjänstens huvudnamn | ✓ | ✓ | ✓ | ✓ | |
Azure Data Lake Storage Gen 2 | Tjänstens huvudnamn | ✓ | ✓ | ✓ | ✓ | |
Azure SQL Database | SQL-autentisering Tjänstens huvudnamn |
✓ | ✓ | ✓ | ✓ | |
Azure PostgreSQL | SQL-autentisering | ✓ | ✓ | ✓ | ✓ | |
Azure Database for MySQL | SQL-autentisering | ✓* | ✓* | ✓* | ||
Databricks-filsystem | Ingen autentisering | ✓** | ✓ ** | ✓** |
- MySQL stöds endast för Pipeline DataTransferStep.
- Databricks stöds endast för Pipeline DatabricksStep.
Minnesriktlinjer
Vi rekommenderar att du skapar ett datalager för en Azure Blob-container. Både standard- och premiumlagring är tillgängliga för blobar. Även om premiumlagring är dyrare kan dess snabbare dataflödeshastigheter förbättra hastigheten för dina träningskörningar, särskilt om du tränar mot en stor datamängd. Information om kostnader för lagringskonton finns i priskalkylatorn för Azure.
Azure Data Lake Storage Gen2 bygger på Azure Blob Storage. Den är utformad för stordataanalys för företag. Som en del av Data Lake Storage Gen2 har Blob Storage ett hierarkiskt namnområde. Det hierarkiska namnområdet organiserar objekt/filer i en hierarki med kataloger för effektiv dataåtkomst.
Åtkomst och behörigheter för lagring
För att säkerställa att du ansluter säkert till azure-lagringstjänsten kräver Azure Mašinsko učenje att du har behörighet att komma åt motsvarande datalagringscontainer. Den här åtkomsten beror på de autentiseringsuppgifter som används för att registrera datalagringen.
Kommentar
Den här vägledningen gäller även för datalager som skapats med identitetsbaserad dataåtkomst.
Virtuellt nätverk
För att kommunicera med ett lagringskonto som finns bakom en brandvägg eller i ett virtuellt nätverk kräver Azure Mašinsko učenje extra konfigurationssteg. För ett lagringskonto som finns bakom en brandvägg kan du lägga till klientens IP-adress i en allowlist med Azure-portalen.
Azure Mašinsko učenje kan ta emot begäranden från klienter utanför det virtuella nätverket. För att säkerställa att entiteten som begär data från tjänsten är säker och för att aktivera visning av data på din arbetsyta använder du en privat slutpunkt med din arbetsyta.
För Python SDK-användare: För att få åtkomst till dina data på ett beräkningsmål med träningsskriptet måste du hitta beräkningsmålet i samma virtuella nätverk och undernät för lagringen. Du kan använda en beräkningsinstans/ett kluster i samma virtuella nätverk.
För Användare i Azure Mašinsko učenje studio: Flera funktioner förlitar sig på möjligheten att läsa data från en datauppsättning – till exempel förhandsversioner av datauppsättningar, profiler och automatiserad maskininlärning. För att dessa funktioner ska fungera med lagring bakom virtuella nätverk använder du en hanterad identitet för arbetsytan i studion så att Azure Mašinsko učenje får åtkomst till lagringskontot utanför det virtuella nätverket.
Kommentar
För data som lagras i en Azure SQL Database bakom ett virtuellt nätverk anger du Neka offentlig åtkomst till Nej med Azure-portalen så att Azure Mašinsko učenje får åtkomst till lagringskontot.
Åtkomstverifiering
Varning
Åtkomst mellan klientorganisationer till lagringskonton stöds inte. Om ditt scenario behöver åtkomst mellan klientorganisationer kontaktar du Azure Mašinsko učenje Data Support-teamets alias för amldatasupport@microsoft.com att få hjälp med en anpassad kodlösning.
Som en del av den första processen för att skapa och registrera datalager verifierar Azure Mašinsko učenje automatiskt att den underliggande lagringstjänsten finns och att det användaringivna huvudkontot (användarnamn, tjänstens huvudnamn eller SAS-token) kan komma åt den angivna lagringen.
När datalager har skapats utförs den här verifieringen endast för metoder som kräver åtkomst till den underliggande lagringscontainern, inte varje gång datalagerobjekt hämtas. Validering sker till exempel om du vill ladda ned filer från ditt datalager. Men om du bara vill ändra ditt standarddatalager sker inte verifieringen.
Om du vill autentisera din åtkomst till den underliggande lagringstjänsten kan du ange antingen din kontonyckel, sas-token (signaturer för delad åtkomst) eller tjänstens huvudnamn i motsvarande register_azure_*()
metod för den datalagertyp som du vill skapa. Lagringstypmatrisen visar de autentiseringstyper som stöds och som motsvarar varje datalagertyp.
Du hittar kontonyckel, SAS-token och information om tjänstens huvudnamn i Azure-portalen.
Om du vill använda en kontonyckel eller SAS-token för autentisering väljer du Lagringskonton i den vänstra rutan och väljer det lagringskonto som du vill registrera
- Sidan Översikt innehåller kontonamn, filresursnamn, container osv. information
- För kontonycklar går du till Åtkomstnycklar i fönstret Inställningar
- För SAS-token går du till Signaturer för delad åtkomst i fönstret Inställningar
- Sidan Översikt innehåller kontonamn, filresursnamn, container osv. information
Om du vill använda tjänstens huvudnamn för autentisering går du till dina appregistreringar och väljer den app som du vill använda
- Motsvarande översiktssida för den valda appen innehåller nödvändig information, till exempel klient-ID och klient-ID
Viktigt!
Om du vill ändra dina åtkomstnycklar för ett Azure Storage-konto (kontonyckel eller SAS-token) synkroniserar du de nya autentiseringsuppgifterna med din arbetsyta och de datalager som är anslutna till den. Mer information finns i synkronisera dina uppdaterade autentiseringsuppgifter.
Behörigheter
För Azure Blob-container och Azure Data Lake Gen 2-lagring kontrollerar du att dina autentiseringsuppgifter har åtkomst till Storage Blob Data Reader . Mer information finns i Storage Blob Data Reader. En SAS-token för kontot har som standard inga behörigheter.
För dataläsningsåtkomst måste dina autentiseringsuppgifter ha minst list- och läsbehörigheter för containrar och objekt
Åtkomst till dataskrivning kräver också skriv- och tilläggsbehörigheter
Skapa och registrera datalager
Registrering av en Azure Storage-lösning som ett datalager skapar och registrerar automatiskt datalagringen till en viss arbetsyta. Granska lagringsåtkomst och behörigheter i det här dokumentet för vägledning om scenarier för virtuella nätverk och var du hittar nödvändiga autentiseringsuppgifter.
Det avsnittet innehåller exempel som beskriver hur du skapar och registrerar ett datalager via Python SDK för dessa lagringstyper. Parametrarna som visas i dessa exempel är de parametrar som krävs för att skapa och registrera ett datalager:
Om du vill skapa datalager för andra lagringstjänster som stöds går du till referensdokumentationen för tillämpliga register_azure_*
metoder.
Mer information om hur du ansluter till en datalagringsresurs med ett användargränssnitt finns i Ansluta till data med Azure Mašinsko učenje studio.
Viktigt!
Om du avregistrerar och omregistrerar ett datalager med samma namn och omregistreringen misslyckas kanske Azure Key Vault för din arbetsyta inte har mjuk borttagning aktiverat. Som standard är mjuk borttagning aktiverat för nyckelvalvsinstansen som skapats av din arbetsyta, men den kanske inte är aktiverad om du använde ett befintligt nyckelvalv eller har en arbetsyta som skapats före oktober 2020. Information som beskriver hur du aktiverar mjuk borttagning finns i Aktivera mjuk borttagning för ett befintligt nyckelvalv.
Kommentar
Ett datalagernamn får endast innehålla gemener, siffror och understreck.
Azure Blob-container
Om du vill registrera en Azure-blobcontainer som ett datalager använder du register_azure_blob_container()
metoden .
Det här kodexemplet skapar och registrerar blob_datastore_name
datalagret på ws
arbetsytan. Datalagringen använder den angivna kontoåtkomstnyckeln för att komma åt my-container-name
blobcontainern på lagringskontot my-account-name
. I avsnittet åtkomst och behörigheter för lagring finns vägledning om scenarier för virtuella nätverk och var du hittar nödvändiga autentiseringsuppgifter.
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-filresurs
Om du vill registrera en Azure-filresurs som ett datalager använder du register_azure_file_share()
metoden .
Det här kodexemplet skapar och registrerar file_datastore_name
datalagret på ws
arbetsytan. Datalagringen använder filresursen my-fileshare-name
på lagringskontot my-account-name
med den angivna kontoåtkomstnyckeln. I avsnittet åtkomst och behörigheter för lagring finns vägledning om scenarier för virtuella nätverk och var du hittar nödvändiga autentiseringsuppgifter.
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 ett Azure Data Lake Storage Generation 2-datalager (ADLS Gen 2) använderdu metoden register_azure_data_lake_gen2() för att registrera ett datalager för autentiseringsuppgifter som är anslutet till en Azure Data Lake Gen 2-lagring med behörigheter för tjänstens huvudnamn.
Om du vill använda tjänstens huvudnamn måste du registrera ditt program och ge tjänstens huvudnamn dataåtkomst via antingen rollbaserad åtkomstkontroll i Azure (Azure RBAC) eller åtkomstkontrollistor (ACL). Mer information finns i åtkomstkontroll som konfigurerats för ADLS Gen 2.
Den här koden skapar och registrerar adlsgen2_datastore_name
datalagret på ws
arbetsytan. Det här dataarkivet kommer åt filsystemet test
i account_name
lagringskontot med hjälp av de angivna autentiseringsuppgifterna för tjänstens huvudnamn. I avsnittet lagringsåtkomst och behörigheter finns vägledning om scenarier för virtuella nätverk och var du hittar nödvändiga autentiseringsuppgifter.
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
Skapa datalager med andra Azure-verktyg
Förutom att skapa datalager med Python SDK och studio kan du även skapa datalager med Azure Resource Manager-mallar eller Tillägget Azure Mašinsko učenje VS Code.
Azure Resource Manager
Du kan använda flera mallar på https://github.com/Azure/azure-quickstart-templates/tree/master/quickstarts/microsoft.machinelearningservices för att skapa datalager. Information om dessa mallar finns i Använda en Azure Resource Manager-mall för att skapa en arbetsyta för Azure Mašinsko učenje.
VS Code-tillägg
Mer information om hur du skapar och hanterar datalager med Tillägget Azure Mašinsko učenje VS Code finns i guiden om hantering av VS Code-resurser.
Använda data i dina datalager
När du har skapat datalager skapar du en Azure Mašinsko učenje-datauppsättning för att interagera med dina data. En datauppsättning paketera dina data i ett lätt utvärderat förbrukningsobjekt för maskininlärningsuppgifter, till exempel träning. Med datauppsättningar kan du ladda ned eller montera filer i valfritt format från Azure Storage-tjänster för modellträning på ett beräkningsmål. Läs mer om hur du tränar ML-modeller med datauppsättningar.
Hämta datalager från din arbetsyta
Om du vill få ett specifikt datalager registrerat på den aktuella arbetsytan använder du den get()
statiska metoden för Datastore
klassen:
# Get a named datastore from the current workspace
datastore = Datastore.get(ws, datastore_name='your datastore name')
Om du vill hämta listan över datalager som registrerats med en viss arbetsyta använder du datastores
egenskapen på ett arbetsyteobjekt:
# List all datastores registered in the current workspace
datastores = ws.datastores
for name, datastore in datastores.items():
print(name, datastore.datastore_type)
Det här kodexemplet visar hur du hämtar standarddatalagret för arbetsytan:
datastore = ws.get_default_datastore()
Du kan också ändra standarddatalagret med det här kodexemplet. Endast SDK stöder den här möjligheten:
ws.set_default_datastore(new_default_datastore)
Få åtkomst till data under bedömning
Azure Mašinsko učenje innehåller flera sätt att använda dina modeller för bedömning. Vissa av dessa metoder ger ingen åtkomst till datalager. I följande tabell beskrivs vilka metoder som tillåter åtkomst till datalager under bedömning:
Metod | Åtkomst till datalager | beskrivning |
---|---|---|
Batch-förutsägelse | ✔ | Göra förutsägelser kring stora mängder data asynkront. |
Webbtjänst | Distribuera modeller som en webbtjänst. |
När SDK:t inte ger åtkomst till datalager kan du kanske skapa anpassad kod med relevant Azure SDK för att komma åt data. Azure Storage SDK för Python-klientbiblioteket kan till exempel komma åt data som lagras i blobar eller filer.
Flytta data till Azure Storage-lösningar som stöds
Azure Mašinsko učenje stöder åtkomst till data från
- Azure Blob Storage
- Azure Files
- Azure Data Lake Storage Gen1
- Azure Data Lake Storage Gen2
- Azure SQL Database
- Azure Database for PostgreSQL
Om du använder lagring som inte stöds rekommenderar vi att du använder Azure Data Factory och de här stegen för att flytta dina data till azure-lagringslösningar som stöds. Om du flyttar data till lagring som stöds kan du spara kostnader för utgående data under maskininlärningsexperiment.
Azure Data Factory tillhandahåller effektiv och elastisk dataöverföring, med fler än 80 fördefinierade anslutningsappar, utan extra kostnad. Dessa anslutningsappar omfattar Azure-datatjänster, lokala datakällor, Amazon S3 och Redshift och Google BigQuery.