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.
En Azure Machine Learning-arbetsyta.
Skapa antingen Azure Machine Learning en arbetsyta eller använd en befintlig via Python SDK.
Importera klassen
Workspaceoch och läs inDatastoreprenumerationsinformationen från filenconfig.jsonmed hjälp av funktionenfrom_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 avfrom_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
workspaceblobstoreworkspacefilestorerespektive . användsworkspaceblobstoreför att lagra arbetsytefakter och loggar för maskininlärningsexperiment. Den anges också som standarddatalager och kan inte tas bort från arbetsytan. användsworkspacefilestorefö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.
- För kontonycklar går du till Åtkomstnycklar i Inställningar fönster.
- För SAS-token går du till Signaturer för delad åtkomst Inställningar fönstret.
- Översiktssidan innehåller information som kontonamn, container och filresursnamn.
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.