Dela via


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

  • Azure Mašinsko učenje SDK för Python

  • 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 och Datastore och läs in prenumerationsinformationen config.json från filen med from_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 med from_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 respektive workspacefilestore. Lagrar workspaceblobstore arbetsytefakter och loggar för maskininlärningsexperiment. Det fungerar som standarddatalager och kan inte tas bort från arbetsytan. Lagrar workspacefilestore 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 ✓** ✓ ** ✓**

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
  • 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.

Nästa steg