Anslut till lagringstjänster i Azure

I den här artikeln får du lära dig hur du ansluter till datalagringstjänster i Azure med Azure Machine Learning datalager och Azure Machine Learning Python SDK.

Datalager ansluter säkert till lagringstjänsten i Azure utan att dina autentiseringsuppgifter och integriteten hos den ursprungliga datakällan riskeras. De lagrar anslutningsinformation, till exempel ditt prenumerations-ID och tokenauktorisering i din Key Vault som är associerad med arbetsytan, så att du på ett säkert sätt kan komma åt din lagring utan att behöva hårdkoda dem i dina skript. Du kan skapa datalager som ansluter till dessa Azure Storage-lösningar.

Information om var datalager får plats Azure Machine Learning det övergripande arbetsflödet för dataåtkomst finns i artikeln Dataåtkomst på ett säkert sätt.

Om du vill ha lite kod kan du se hur du använder Azure Machine Learning studio för att skapa och registrera datalager.

Tips

Den här artikeln förutsätter att du vill ansluta till lagringstjänsten med autentiseringsuppgifter som baseras på autentiseringsuppgifter, till exempel ett huvudnamn för tjänsten eller en SAS-token (signatur för delad åtkomst). Tänk på att om autentiseringsuppgifterna är registrerade i datalager kan alla användare med arbetsyterollen Läsare hämta dessa autentiseringsuppgifter. Läs mer om arbetsytans läsarroll.

Om det här är ett problem kan du lära dig Anslut till lagringstjänster med identitetsbaserad åtkomst.

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 Machine Learning.

  • Ett Azure Storage-konto med en lagringstyp som stöds.

  • Den Azure Machine Learning SDK för Python.

  • En Azure Machine Learning-arbetsyta.

    Skapa antingen Azure Machine Learning en arbetsyta eller använd en befintlig via Python SDK.

    Importera klassen Workspace och och läs in Datastore prenumerationsinformationen från filen config.json med hjälp av funktionen from_config() . Detta söker efter JSON-filen i den aktuella katalogen som standard, men du kan också ange en sökvägsparameter som pekar på filen med hjälp av from_config(path="your/file/path") .

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

    När du skapar en arbetsyta registreras en Azure-blobcontainer och en Azure-filresurs automatiskt som datalager på arbetsytan. De heter workspaceblobstore workspacefilestore respektive . används workspaceblobstore för att lagra arbetsytefakter och loggar för maskininlärningsexperiment. Den anges också som standarddatalager och kan inte tas bort från arbetsytan. används workspacefilestore för att lagra notebook-datorer och R-skript som auktoriserats via beräkningsinstansen.

    Anteckning

    Azure Machine Learning skapar automatiskt ett datalager med azureml_globaldatasets när du öppnar ett exempel på designerns startsida. Det här dataarkivet innehåller bara exempeldatamängder. Använd inte det här dataarkivet för konfidentiell dataåtkomst.

Datalagringstjänsttyper som stöds

Datalager stöder för närvarande lagring av anslutningsinformation till de lagringstjänster som anges i följande matris.

Tips

För lagringslösningar som inte stöds och för att spara kostnader för utgående data under ML experiment flyttar du dina data till en Azure-lagringslösning som stöds.

 Storage Typ  Autentiseringstyp Azure   Machine   Learning Studio Azure   Machine Learning Python     SDK Azure   Machine   Learning CLI Rest-API för Azure     Machine Learning   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 pipelinen 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 Premium Storage är dyrare kan dess snabbare dataflödeshastighet förbättra hastigheten för dina träningskörningar, särskilt om du tränar mot en stor datamängd. Information om kostnaden för lagringskonton finns i priskalkylatorn för Azure.

Azure Data Lake Storage Gen2 bygger på Azure Blob Storage och har utformats för stordataanalys för företag. En grundläggande del av Data Lake Storage Gen2 är att lägga till ett hierarkiskt namnområde i Blob Storage. Den hierarkiska namnrymden organiserar objekt/filer i en kataloghierarki för effektiv dataåtkomst.

Storage åtkomst och behörigheter

För att säkerställa att du på ett säkert sätt ansluter till azure-lagringstjänsten Azure Machine Learning att du har behörighet att komma åt motsvarande datalagringscontainer. Den här åtkomsten är beroende av autentiseringsuppgifterna som används för att registrera datalagringen.

Anteckning

Den här vägledningen gäller även för datalager som skapats med identitetsbaserad dataåtkomst.

Virtuellt nätverk

Azure Machine Learning ytterligare konfigurationssteg för att kommunicera med ett lagringskonto som finns bakom en brandvägg eller i ett virtuellt nätverk. Om ditt lagringskonto finns bakom en brandvägg kan du tillåta att IP-adressen listas via Azure Portal.

Azure Machine Learning kan ta emot begäranden från klienter utanför det virtuella nätverket. Använd en privat slutpunkt med din arbetsyta för att säkerställa att den entitet som begär data från tjänsten är säker.

För att Python SDK-användare ska kunna komma åt dina data via träningsskriptet på ett beräkningsmål måste beräkningsmålet finnas i samma virtuella nätverk och undernät för lagringen.

För Azure Machine Learning Studio-användare förlitar sig flera funktioner på möjligheten att läsa data från en datauppsättning. till exempel förhandsgranskningar 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 studio för att ge Azure Machine Learning åtkomst till lagringskontot utanför det virtuella nätverket.

Anteckning

Om din datalagring är en Azure SQL Database bakom ett virtuellt nätverk måste du ange Neka offentlig åtkomst till Nej via Azure Portal så att Azure Machine Learning får åtkomst till lagringskontot.

Åtkomstvalidering

Som en del av den första processen för att skapa och registrera datalager verifierar Azure Machine Learning automatiskt att den underliggande lagringstjänsten finns och att det huvudnamn som användaren har angett (användarnamn, tjänstens huvudnamn eller SAS-token) har åtkomst till 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. Valideringen kan till exempel ske om du vill ladda ned filer från ditt datalager. Men om du bara vill ändra standarddatalagringen sker inte valideringen.

Om du vill autentisera din åtkomst till den underliggande lagringstjänsten kan du ange antingen din kontonyckel, signaturer för delad åtkomst (SAS) eller tjänstens huvudnamn i motsvarande metod för den datalagertyp som du register_azure_*() vill skapa. Matrisen för lagringstyp visar de autentiseringstyper som stöds för varje typ av datalager.

Du hittar kontonyckel, SAS-token och information om tjänstens huvudnamn på din Azure Portal.

  • Om du planerar att använda en kontonyckel eller SAS-token för autentisering väljer du Storage konton i den vänstra rutan och väljer det lagringskonto som du vill registrera.

    • Översiktssidan innehåller information som kontonamn, container och filresursnamn.
      1. För kontonycklar går du till Åtkomstnycklar i Inställningar fönster.
      2. För SAS-token går du till Signaturer för delad åtkomst Inställningar fönstret.
  • Om du planerar att använda tjänstens huvudnamn för autentisering går du till Appregistreringar och väljer vilken app du vill använda.

    • Motsvarande översiktssida innehåller nödvändig information som klientorganisations-ID och klient-ID.

Viktigt

  • Om du behöver ändra dina åtkomstnycklar för ett Azure Storage-konto (kontonyckel eller SAS-token) måste du synkronisera de nya autentiseringsuppgifterna med din arbetsyta och de datalager som är anslutna till den. Lär dig hur du synkroniserar dina uppdaterade autentiseringsuppgifter.

Behörigheter

För Azure-blobcontainer och Azure Data Lake Gen 2-lagring kontrollerar du att dina autentiseringsuppgifter har Storage Blob Data Reader-åtkomst. Läs mer om Storage Blob Data Reader. Ett kontos SAS-token har som standard inga behörigheter.

  • För dataläsningsåtkomst måste dina autentiseringsuppgifter ha minst list- och läsbehörighet för containrar och objekt.

  • För dataskrivningsåtkomst krävs även skriv- och lägg till-behörigheter.

Skapa och registrera datalager

När du registrerar en Azure Storage-lösning som ett datalager skapar och registrerar du automatiskt datalagringen på en specifik arbetsyta. Läs avsnittet lagringsåtkomst och & för vägledning om scenarier för virtuella nätverk och var du hittar de autentiseringsuppgifter som krävs.

I det här avsnittet finns exempel på hur du skapar och registrerar ett datalager via Python SDK för följande lagringstyper. Parametrarna som anges i de här exemplen är de obligatoriska parametrarna för att skapa och registrera ett datalager.

Information om hur du skapar datalager för andra lagringstjänster som stöds finns i referensdokumentationen för tillämpliga register_azure_* metoder.

Om du föredrar lite kod kan du gå till Anslut data med Azure Machine Learning studio.

Viktigt

Om du avregistrerar och omregistrerar ett datalager med samma namn och det misslyckas kan det hända att funktionen Azure Key Vault för din arbetsyta inte har mjuk borttagning aktiverat. Mjuk borttagning är aktiverat som standard för nyckelvalvsinstansen som skapats av din arbetsyta, men det kanske inte är aktiverat om du har använt ett befintligt nyckelvalv eller har en arbetsyta som skapats före oktober 2020. Information om hur du aktiverar mjuk borttagning finns i Aktivera mjuk borttagning för ett befintligt nyckelvalv.

Anteckning

Datalagernamnet får bara bestå av gemener, siffror och understreck.

Azure Blob-container

Om du vill registrera en Azure-blobcontainer som ett datalager använder du register_azure_blob_container() .

Följande kod skapar och registrerar blob_datastore_name datalagringen på ws arbetsytan. Det här datalagringskontot har my-container-name åtkomst till blobcontainern my-account-name på lagringskontot med hjälp av den angivna åtkomstnyckeln för kontot. Läs avsnittet lagringsåtkomst och & för vägledning om scenarier för virtuella nätverk och var du hittar de autentiseringsuppgifter som krävs.

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() .

Följande kod skapar och registrerar file_datastore_name datalagringen på ws arbetsytan. Det här datalagringskontot får my-fileshare-name åtkomst till filresursen my-account-name på lagringskontot med hjälp av den angivna åtkomstnyckeln för kontot. Läs avsnittet lagringsåtkomst och & för vägledning om scenarier för virtuella nätverk och var du hittar de autentiseringsuppgifter som krävs.

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änder du register_azure_data_lake_gen2() för att registrera ett datalager för autentiseringsuppgifter som är anslutet till en Azure DataLake Gen 2-lagring med behörigheter för tjänstens huvudnamn.

För att kunna använda tjänstens huvudnamn måste du registrera ditt program och bevilja tjänstens huvudnamn dataåtkomst via antingen Rollbaserad åtkomstkontroll i Azure (Azure RBAC) eller åtkomstkontrolllistor (ACL). Läs mer om att konfigurera åtkomstkontroll för ADLS Gen 2.

Följande kod skapar och registrerar adlsgen2_datastore_name datalagringen på ws arbetsytan. Det här datalagringskontot har åtkomst till test filsystemet i account_name lagringskontot med hjälp av de tillhandahållna autentiseringsuppgifterna för tjänstens huvudnamn. Läs avsnittet lagringsåtkomst och & för vägledning om scenarier för virtuella nätverk och var du hittar de autentiseringsuppgifter som krävs.

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 använda Azure Resource Manager-mallar eller Azure Machine Learning VS Code-tillägget.

Azure Resource Manager

Det finns ett antal mallar på https://github.com/Azure/azure-quickstart-templates/tree/master/quickstarts/microsoft.machinelearningservices som kan användas för att skapa datalager.

Information om hur du använder dessa mallar finns i Använda en Azure Resource Manager för att skapa en arbetsyta för Azure Machine Learning.

VS Code-tillägg

Om du föredrar att skapa och hantera datalager med hjälp av Azure Machine Learning VS Code-tillägget kan du läsa mer i guiden om resurshantering i VS Code.

Använda data i dina datalager

När du har skapat ett datalager skapar du Azure Machine Learning datauppsättning för att interagera med dina data. Datauppsättningar paketerar dina data till 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 av alla 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 registrera ett specifikt datalager på den aktuella arbetsytan använder du get() den statiska metoden i 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 är registrerade för en viss arbetsyta kan du använda datastores egenskapen för ett arbetsyteobjekt:

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

Hämta arbetsytans standarddatalager genom att använda den här raden:

datastore = ws.get_default_datastore()

Du kan också ändra standarddatalagringen med följande kod. Den här möjligheten stöds endast via SDK.

 ws.set_default_datastore(new_default_datastore)

Komma åt data under bedömning

Azure Machine Learning finns flera sätt att använda dina modeller för bedömning. Vissa av dessa metoder ger inte åtkomst till datalager. Använd följande tabell för att förstå vilka metoder som gör att du kan komma åt datalager under bedömning:

Metod Åtkomst till datalager Description
Batchförutsägelse Göra förutsägelser kring stora mängder data asynkront.
Webbtjänst   Distribuera modeller som en webbtjänst.

I situationer där SDK:n inte ger åtkomst till datalager kan du skapa anpassad kod med hjälp av relevant Azure SDK för att komma åt data. Till exempel är Azure Storage SDK för Python ett klientbibliotek som du kan använda för att komma åt data som lagras i blobar eller filer.

Flytta data till Azure-lagringslösningar som stöds

Azure Machine Learning 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 och Azure Database for PostgreSQL. Om du använder lagring som inte stöds rekommenderar vi att du flyttar dina data till Azure-lagringslösningar som stöds med hjälp av Azure Data Factory och de här stegen. Genom att flytta data till lagring som stöds kan du minska kostnaderna för utgående data under maskininlärningsexperiment.

Azure Data Factory ger 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