Condividi tramite


Connettersi ai servizi di archiviazione in Azure con gli archivi dati

SI APPLICA A: Python SDK azureml v1

SI APPLICA A: Estensione ML dell’interfaccia della riga di comando di Azure v1

In questo articolo verrà illustrato come connettersi ai servizi di archiviazione in Azure con gli archivi dati di Azure Machine Learning e Azure Machine Learning Python SDK.

Gli archivi dati si connettono in modo sicuro al servizio di Archiviazione in Azure ed evitano rischi per le credenziali di autenticazione o l'integrità dell'archivio dati originale. Un archivio dati archivia le informazioni di connessione, ad esempio l'ID sottoscrizione o l'autorizzazione del token, nell'insieme di credenziali delle chiavi associato all'area di lavoro. Con un archivio dati, è possibile accedere in modo sicuro all'archiviazione perché è possibile evitare le informazioni di connessione hardcoded negli script. È possibile creare archivi dati che si connettono a queste soluzioni di archiviazione di Azure.

Per informazioni su come gli archivi dati si adattano al flusso di lavoro complessivo di accesso ai dati di Azure Machine Learning, vedere l'articolo Accesso sicuro ai dati.

Per informazioni su come connettersi a una risorsa di archiviazione dati con un'interfaccia utente, vedere Connettersi all'archiviazione dati con l'interfaccia utente di Studio.

Suggerimento

Questo articolo presuppone che ci si connetta al servizio di archiviazione mediante l'autenticazione basata su credenziali, ad esempio usando un'entità servizio o un token di firma di accesso condiviso. Si noti che se le credenziali vengono registrate con gli archivi dati, tutti gli utenti con il ruolo Lettore dell'area di lavoro possono recuperare tali credenziali. Per altre informazioni, vedere Gestire i ruoli nell'area di lavoro.

Per altre informazioni sull'accesso ai dati basato sull'identità, vedere Accesso ai dati basati sull'identità ai servizi di archiviazione (v1).

Prerequisiti

  • Una sottoscrizione di Azure. Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare. Provare la versione gratuita o a pagamento di Azure Machine Learning

  • Un account di Archiviazione di Azure con un tipo di archiviazione supportato

  • Azure Machine Learning SDK per Python

  • Un'area di lavoro di Azure Machine Learning.

    Creare un'area di lavoro di Azure Machine Learning o usarne una esistente tramite Python SDK

    Importare le classi Workspace e Datastore e caricare le informazioni sulla sottoscrizione dal file config.json con la funzione from_config(). Per impostazione predefinita, la funzione cerca il file JSON nella directory corrente, ma è anche possibile specificare un parametro del percorso in modo che punti al file con from_config(path="your/file/path"):

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

    La creazione dell'area di lavoro registra automaticamente un contenitore BLOB di Azure e una condivisione file di Azure, come archivi dati, nell'area di lavoro. A questi due elementi vengono assegnati, rispettivamente, i nomi workspaceblobstore e workspacefilestore. Il workspaceblobstore archivia gli elementi dell'area di lavoro e i log degli esperimenti di Machine Learning. Funziona anche come archivio dati predefinito e non può essere eliminato dall'area di lavoro. workspacefilestore archivia notebook e script R autorizzati tramite l'istanza di calcolo.

    Nota

    La finestra di progettazione di Azure Machine Learning crea automaticamente un archivio dati denominato azureml_globaldatasets quando si apre un esempio nella home page della finestra di progettazione. Questo archivio dati contiene solo i set di dati del campione. Non usare questo archivio dati per l'accesso ai dati riservati.

Tipi di servizi di archiviazione dati supportati

Gli archivi dati attualmente supportano l'archiviazione delle informazioni di connessione nei servizi di archiviazione elencati nella matrice seguente:

Suggerimento

Per le soluzioni di archiviazione non supportate (quelle non elencate nella tabella seguente), è possibile che si verifichino problemi durante la connessione e l'uso dei dati. È consigliabile spostare i dati in una soluzione di Archiviazione di Azure supportata. Ciò può essere utile anche per scenari aggiuntivi, ad esempio la riduzione dei costi di uscita dei dati durante gli esperimenti di Machine Learning.

Tipo di archiviazione Tipo di autenticazione Studio di Azure Machine Learning Python SDK di Azure Machine Learning Interfaccia della riga di comando di Azure Machine Learning API REST di Azure Machine Learning VS Code
Archiviazione BLOB di Azure Chiave account
Token di firma di accesso condiviso
Condivisione file di Azure Chiave account
Token di firma di accesso condiviso
Azure Data Lake Storage Gen 1 Entità servizio
Azure Data Lake Storage Gen2 Entità servizio
Database SQL di Azure Autenticazione SQL
Entità servizio
Azure PostgreSQL Autenticazione SQL
Database di Azure per MySQL Autenticazione SQL ✓* ✓* ✓*
File system di Databricks Nessuna autenticazione ✓** ✓ ** ✓**

Linee guida per l'archiviazione

È consigliabile creare un archivio dati per un contenitore BLOB di Azure. Per i BLOB sono disponibili i livelli di archiviazione Standard e Premium. Sebbene l'archiviazione Premium sia più costosa, la velocità effettiva maggiore può migliorare la velocità delle esecuzioni dei training, specialmente se si esegue il training su un set di dati di grandi dimensioni. Per informazioni sui costi dell'account di archiviazione, visitare il calcolatore dei prezzi di Azure.

Azure Data Lake Storage Gen2 è realizzato a partire da Archiviazione BLOB di Azure. Progettato per l'analisi dei Big Data Enterprise. Come parte di Data Lake Storage Gen2, l'archiviazione BLOB include uno spazio dei nomi gerarchico. Lo spazio dei nomi gerarchico organizza gli oggetti e i file in una gerarchia di directory per un accesso ai dati efficiente.

Accesso al servizio di archiviazione e autorizzazioni

Per garantire una connessione sicura al servizio di archiviazione di Azure, Azure Machine Learning richiede che l'utente disponga delle autorizzazioni per accedere al contenitore di archiviazione dei dati corrispondente. Questo accesso dipende dalle credenziali di autenticazione usate per registrare l'archivio dati.

Nota

Queste indicazioni si applicano anche agli archivi dati creati con l'accesso ai dati basato sull'identità.

Rete virtuale

Per comunicare con un account di archiviazione che si trova dietro un firewall o all'interno di una rete virtuale, Azure Machine Learning richiede passaggi di configurazione aggiuntivi. Per un account di archiviazione protetto da un firewall, è possibile aggiungere l'indirizzo IP del client a un elenco elementi consentiti tramite il portale di Azure.

Azure Machine Learning può ricevere richieste dai client all'esterno della rete virtuale. Per assicurarsi che l'entità che richiede dati dal servizio sia sicura e per consentire la visualizzazione dei dati nell'area di lavoro, usare un endpoint privato con l'area di lavoro.

Per gli utenti di Python SDK: per accedere ai dati in una destinazione di calcolo con lo script di training, è necessario individuare la destinazione di calcolo all'interno della stessa rete virtuale e della stessa subnet dell'archiviazione. È possibile usare un'istanza di calcolo o un cluster di elaborazione nella stessa rete virtuale.

Per gli utenti dello studio di Azure Machine Learning: numerose funzionalità si basano sulla possibilità di leggere o meno i dati da un set di dati, ad esempio anteprime dei set di dati, profili e Machine Learning automatizzato. Per il corretto funzionamento con account di archiviazione all'interno di reti virtuali, usare un'identità gestita dell'area di lavoro nello studio per consentire ad Azure Machine Learning di accedere all'account di archiviazione dall'esterno della rete virtuale.

Nota

Per i dati archiviati in un database SQL di Azure dietro una rete virtuale, impostare Negare l'accesso pubblico su No tramite il portale di Azure, per consentire ad Azure Machine Learning di accedere all'account di archiviazione.

Convalida dell'accesso

Avviso

L'accesso agli account di archiviazione tra tenant non è supportato. Se lo scenario in uso richiede l'accesso tra tenant, contattare l'alias del team di supporto dati di Azure Machine Learning all'indirizzo amldatasupport@microsoft.com per ricevere assistenza e ottenere una soluzione di codice personalizzata.

Come parte del processo iniziale di creazione e registrazione dell'archivio dati, Azure Machine Learning convalida automaticamente che il servizio di archiviazione sottostante esista e che l'entità di sicurezza fornita dall'utente (nome utente, entità servizio o token di firma di accesso condiviso) possa accedere a tale risorsa di archiviazione specifica.

Dopo la creazione dell'archivio dati, questa convalida viene eseguita solo per i metodi che richiedono l'accesso al contenitore di archiviazione sottostante e non ogni volta che vengono recuperati gli oggetti dell'archivio dati. Ad esempio, la convalida si verifica se si desidera scaricare i file dall'archivio dati. Tuttavia, se si vuole modificare solo l'archivio dati predefinito, la convalida non viene eseguita.

Per autenticare l'accesso al servizio di archiviazione sottostante, è possibile fornire la chiave dell'account, i token di firma di accesso condiviso o l'entità servizio nel metodo register_azure_*() corrispondente del tipo di archivio dati che si vuole creare. La matrice del tipo di archiviazione elenca i tipi di autenticazione supportati che corrispondono a ogni tipo di archivio dati.

È possibile trovare informazioni sulla chiave dell'account, sul token di firma di accesso condiviso e sull'entità servizio nel portale di Azure.

  • Per usare una chiave dell'account o un token di firma di accesso condiviso per l'autenticazione, selezionare Account di archiviazione nel riquadro sinistro e scegliere l'account di archiviazione da registrare

    • La pagina Panoramica fornisce informazioni sul nome dell'account, sul nome della condivisione file, sul contenitore e così via
      • Per le chiavi dell'account, passare a Chiavi di accesso nel riquadro Impostazioni
      • Per i token di firma di accesso condiviso, passare a Firme di accesso condiviso nel riquadro Impostazioni
  • Per usare un'entità servizio per l'autenticazione, passare a Registrazioni app e selezionare l'app da usare

    • La pagina Panoramica corrispondente dell'app selezionata contiene informazioni necessarie, ad esempio ID tenant e ID client

Importante

Per modificare le chiavi di accesso per un account di Archiviazione di Azure (chiave dell'account o token di firma di accesso condiviso), sincronizzare le nuove credenziali con l'area di lavoro e con gli archivi dati connessi. Per altre informazioni, vedere Sincronizzare le credenziali aggiornate.

Autorizzazioni

Per l'archiviazione con contenitore BLOB di Azure e Azure Data Lake Gen2, assicurarsi che le credenziali di autenticazione abbiano l'accesso come Ruolo con autorizzazioni di lettura per i dati dei BLOB di archiviazione. Per altre informazioni, vedere Lettore di dati BLOB di archiviazione. Per impostazione predefinita, un token di firma di accesso condiviso dell'account non prevede autorizzazioni.

  • Per l'accesso in lettura ai dati, le credenziali di autenticazione devono avere un minimo di autorizzazioni di elenco e lettura per contenitori e oggetti

  • L'accesso in scrittura ai dati richiede anche autorizzazioni di scrittura e aggiunta

Creare e registrare archivi dati

La registrazione di una soluzione di Archiviazione di Azure come archivio dati crea e registra automaticamente l'archivio dati in un'area di lavoro specifica. Esaminare accesso alle risorse di archiviazione e autorizzazioni in questo documento per indicazioni sugli scenari di rete virtuale e sulla posizione in cui trovare le credenziali di autenticazione necessarie.

Questa sezione offre esempi che descrivono come creare e registrare un archivio dati tramite Python SDK per questi tipi di archiviazione. I parametri mostrati in questi esempi sono i parametri obbligatori per creare e registrare un archivio dati:

Per creare archivi dati per altri servizi di archiviazione supportati, visitare la documentazione di riferimento per i metodi register_azure_* applicabili.

Per informazioni su come connettersi a una risorsa di archiviazione dati con un'interfaccia utente, vedere Connettersi ai dati con studio di Azure Machine Learning.

Importante

Se si annulla la registrazione e si registra nuovamente un archivio dati con lo stesso nome, ma l'operazione non riesce, è possibile che l'eliminazione temporanea non sia abilitata per l'istanza di Azure Key Vault per l'area di lavoro. Per impostazione predefinita, l'eliminazione temporanea è abilitata per l'istanza di Key Vault creata dall'area di lavoro, ma potrebbe non essere abilitata se è stato usato un insieme di credenziali delle chiavi esistente o se è stata creata un'area di lavoro prima di ottobre 2020. Per informazioni su come abilitare l'eliminazione temporanea, vedere Attivare l'eliminazione temporanea per un insieme di credenziali delle chiavi esistente.

Nota

Un nome dell'archivio dati deve contenere solo da lettere minuscole, cifre e caratteri di sottolineatura.

Contenitore BLOB di Azure

Per registrare un contenitore BLOB di Azure come archivio dati, usare il metodo register_azure_blob_container().

Questo esempio di codice crea e registra l'archivio dati blob_datastore_name nell'area di lavoro ws. L'archivio dati usa la chiave di accesso dell'account fornita per accedere al contenitore BLOB my-container-name nell'account di archiviazione my-account-name. Vedere la sezione Accesso al servizio di archiviazione e autorizzazioni per indicazioni sugli scenari di rete virtuale e su dove trovare le credenziali di autenticazione necessarie.

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)

Condivisione file di Azure

Per registrare una condivisione file di Azure come archivio dati, usare il metodo register_azure_file_share().

Questo esempio di codice crea e registra l'archivio dati file_datastore_name nell'area di lavoro ws. L'archivio dati usa la condivisione file my-fileshare-name nell'account di archiviazione my-account-name, con la chiave di accesso dell'account fornita. Vedere la sezione Accesso al servizio di archiviazione e autorizzazioni per indicazioni sugli scenari di rete virtuale e su dove trovare le credenziali di autenticazione necessarie.

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 Gen2

Per un archivio dati Azure Data Lake Storage Gen2 (ADLS Gen2), usare il metodo register_azure_data_lake_gen2() per registrare un archivio dati delle credenziali connesso a una risorsa di archiviazione di Azure Data Lake Storage Gen2 con autorizzazioni dell'entità servizio.

Per usare l'entità servizio, è necessario registrare l'applicazione e concedere all'entità servizio l'accesso ai dati tramite il controllo degli accessi in base al ruolo di Azure o gli elenchi di controllo di accesso (ACL). Per altre informazioni, vedere Controllo di accesso configurato per ADLS Gen 2.

Questo codice crea e registra l'archivio dati adlsgen2_datastore_name nell'area di lavoro ws. Questo archivio dati accede al file system test nell'account di archiviazione account_name, usando le credenziali dell'entità servizio fornite. Vedere la sezione Accesso al servizio di archiviazione e autorizzazioni per indicazioni sugli scenari di rete virtuale e su dove trovare le credenziali di autenticazione necessarie.

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

Creare archivi dati con altri strumenti di Azure

Oltre a creare archivi dati con Python SDK e lo studio, è anche possibile creare archivi dati con Azure Resource Manager o l'estensione VS Code per Azure Machine Learning.

Azure Resource Manager

È possibile usare diversi modelli in https://github.com/Azure/azure-quickstart-templates/tree/master/quickstarts/microsoft.machinelearningservices per creare archivi dati. Per informazioni su questi modelli, visitare Usare un modello di Azure Resource Manager per creare un'area di lavoro per Azure Machine Learning.

Estensione di Visual Studio Code

Per altre informazioni sulla creazione e la gestione di archivi dati con l'estensione Vs Code di Azure Machine Learning, vedere la guida pratica per la gestione delle risorse di VS Code.

Usare i dati negli archivi dati

Dopo aver creato un archivio dati, creare un set di dati di Azure Machine Learning per interagire con i dati. Un set di dati crea un pacchetto dei dati da inserire in un oggetto consumabile valutato in modo differito per le attività di Machine Learning, ad esempio il training. Con i set di dati è possibile scaricare o montare file di qualsiasi formato dai servizi di archiviazione di Azure per il training dei modelli in una destinazione di calcolo. Altre informazioni su come eseguire il training dei modelli di ML con i set di dati.

Ottenere gli archivi dati dall'area di lavoro

Per ottenere un archivio dati specifico registrato nell'area di lavoro corrente, usare il metodo statico get() nella classe Datastore:

# Get a named datastore from the current workspace
datastore = Datastore.get(ws, datastore_name='your datastore name')

Per ottenere l'elenco degli archivi dati registrati con un'area di lavoro specifica, usare la proprietà datastores in un oggetto dell'area di lavoro:

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

Questo esempio di codice illustra come ottenere l'archivio dati predefinito dell'area di lavoro:

datastore = ws.get_default_datastore()

È anche possibile modificare l'archivio dati predefinito con questo esempio di codice. Solo l'SDK supporta questa funzionalità:

 ws.set_default_datastore(new_default_datastore)

Accedere ai dati durante l'assegnazione dei punteggi

Azure Machine Learning offre diversi modi per usare i modelli per l'assegnazione dei punteggi. Alcuni di questi metodi non consentono l'accesso agli archivi dati. Nella tabella seguente vengono descritti i metodi che consentono l'accesso agli archivi dati durante l'assegnazione dei punteggi:

metodo Accesso all'archivio dati Descrizione
Stima in batch Eseguire stime su grandi quantità di dati in modo asincrono.
Servizio Web   Distribuire modelli come servizi Web.

Quando l'SDK non fornisce l'accesso agli archivi dati, è possibile creare codice personalizzato con la soluzione Azure SDK pertinente per accedere ai dati. Ad esempio, la libreria client di SDK di Archiviazione di Azure per Python può accedere ai dati archiviati in BLOB o file.

Spostare i dati in soluzioni di archiviazione di Azure supportate

Azure Machine Learning supporta l'accesso ai dati da

  • Archiviazione BLOB di Azure
  • File di Azure
  • Azure Data Lake Storage Gen1
  • Azure Data Lake Storage Gen2
  • database SQL di Azure
  • Database di Azure per PostgreSQL

Se si usa l'archiviazione non supportata, è consigliabile usare Azure Data Factory e questi passaggi per spostare i dati in soluzioni di archiviazione di Azure supportate. Lo spostamento dei dati in una soluzione di archiviazione supportata può consentire di risparmiare sui costi relativi al traffico in uscita durante gli esperimenti di Machine Learning.

Azure Data Factory consente un trasferimento dei dati efficiente e resiliente con più di 80 connettori predefiniti senza costi aggiuntivi. Questi connettori includono i servizi dati di Azure, le origini dati locali, Amazon S3 Redshift, nonché Google BigQuery.

Passaggi successivi