Condividi tramite


Esercitazione: Caricare i dati, accedervi ed esplorarli in Azure Machine Learning

SI APPLICA A: Python SDK azure-ai-ml v2 (corrente)

In questa esercitazione, farai:

  • Caricare i dati nell'archiviazione nel cloud
  • Creare un asset di dati di Azure Machine Learning
  • Accedere ai dati in un notebook per lo sviluppo interattivo
  • Creare nuove versioni degli asset di dati

Un progetto di Machine Learning inizia in genere con l'analisi esplorativa dei dati (EDA), la pre-elaborazione dei dati (pulizia, progettazione delle funzionalità) e la creazione di prototipi di modelli di Machine Learning per convalidare le ipotesi. Questa fase del progetto di prototipazione è estremamente interattiva e si presta allo sviluppo in un IDE o in un notebook jupyter con una console interattiva Python. Questa esercitazione descrive questi concetti.

Prerequisiti

  1. Per usare Azure Machine Learning, è necessaria un'area di lavoro. Se non è disponibile, completare Creare le risorse necessarie per iniziare creare un'area di lavoro e ottenere maggiori informazioni su come usarla.

    Importante

    Se l'area di lavoro di Azure Machine Learning è configurata con una rete virtuale gestita, potrebbe essere necessario aggiungere regole in uscita per consentire l'accesso ai repository di pacchetti Python pubblici. Per altre informazioni, vedere Scenario: Accedere ai pacchetti di Machine Learning pubblici.

  2. Accedere allo studio e selezionare l'area di lavoro, se non è già aperta.

  3. Aprire o creare un notebook nell'area di lavoro:

Impostare il kernel e aprirlo in Visual Studio Code (VS Code)

  1. Nella barra superiore sopra il notebook aperto creare un'istanza di ambiente di calcolo, se non ne è già disponibile una.

    Screenshot che mostra come creare un'istanza di ambiente di calcolo.

  2. Se l'istanza di ambiente di calcolo viene arrestata, selezionare Avviare ambiente di calcolo e attendere fino a quando non è in esecuzione.

    Screenshot che mostra come avviare un'istanza di ambiente di calcolo arrestata.

  3. Attendere che l'istanza di calcolo sia in esecuzione. Assicurarsi quindi che il kernel, trovato in alto a destra, sia Python 3.10 - SDK v2. In caso contrario, usare l'elenco a discesa per selezionare questo kernel.

    Screenshot che mostra come impostare il kernel.

    Se questo kernel non viene visualizzato, verificare che l'istanza di calcolo sia in esecuzione. In caso affermativo, selezionare il pulsante Aggiorna in alto a destra del notebook.

  4. Se viene visualizzato un banner che indica che è necessario eseguire l'autenticazione, selezionare Autentica.

  5. È possibile eseguire il notebook qui o aprirlo in VS Code per usare un ambiente di sviluppo integrato (IDE) completo con la potenza delle risorse di Azure Machine Learning. Selezionare Apri in VS Code, quindi selezionare l'opzione Web o desktop. Quando viene avviato in questo modo, VS Code viene collegato all'istanza di ambiente di calcolo, al kernel e al file system dell'area di lavoro.

    Screenshot che mostra come aprire il notebook in VS Code.

Importante

La parte rimanente di questa esercitazione contiene le celle del notebook dell'esercitazione. Copiarli e incollarli nel nuovo notebook oppure passare ora al notebook se è stato clonato.

Scaricare i dati usati in questa esercitazione

Per l'inserimento dati, Esplora dati di Azure gestisce i dati non elaborati in questi formati. Questa esercitazione usa un esempio di dati client con carta di credito in formato CSV. La procedura viene eseguita in una risorsa di Azure Machine Learning. In tale risorsa si crea una cartella locale con il nome suggerito dei dati, direttamente nella cartella in cui si trova il notebook.

Nota

Questa esercitazione dipende dai dati inseriti in un percorso di cartella della risorsa di Azure Machine Learning. Per questa esercitazione, 'locale' significa un percorso di cartella in tale risorsa di Azure Machine Learning.

  1. Selezionare Apri terminale sotto i tre puntini, come illustrato in questa immagine:

    Screenshot che mostra lo strumento del terminale aperto nella barra degli strumenti del notebook.

  2. La finestra del terminale viene aperta in una nuova scheda.

  3. Assicurarsi di modificare la directory (cd) nella stessa cartella in cui si trova questo notebook. Ad esempio, se il notebook si trova in una cartella denominata get-started-notebooks:

    cd get-started-notebooks    # modify this to the path where your notebook is located
    
  4. Immettere questi comandi nella finestra del terminale per copiare i dati nell'istanza di ambiente di calcolo:

    mkdir data
    cd data                     # the subfolder where you'll store the data
    wget https://azuremlexamples.blob.core.windows.net/datasets/credit_card/default_of_credit_card_clients.csv
    
  5. È ora possibile chiudere la finestra del terminale.

Per altre informazioni sui dati nel repository di Machine Learning di UC Irvine, visitare questa risorsa.

Creare un handle per l'area di lavoro

Prima di esplorare il codice, è necessario un modo per fare riferimento all'area di lavoro. Si crea ml_client come handle per l'area di lavoro. Sarà quindi possibile usare ml_client per gestire le risorse e i processi.

Nella cella successiva immettere l'ID sottoscrizione, il nome del gruppo di risorse e il nome dell'area di lavoro. Per trovare questi valori:

  1. In alto a destra nella barra degli strumenti dello studio di Azure Machine Learning selezionare il nome dell'area di lavoro.
  2. Copiare i valori per l'area di lavoro, il gruppo di risorse e l'ID sottoscrizione nel codice.
  3. È necessario copiare ogni valore singolarmente, uno alla volta. Chiudere l'area, incollare il valore, quindi continuare con quello successivo.
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
from azure.ai.ml.entities import Data
from azure.ai.ml.constants import AssetTypes

# authenticate
credential = DefaultAzureCredential()

# Get a handle to the workspace
ml_client = MLClient(
    credential=credential,
    subscription_id="<SUBSCRIPTION_ID>",
    resource_group_name="<RESOURCE_GROUP>",
    workspace_name="<AML_WORKSPACE_NAME>",
)

Nota

La creazione di MLClient non si connetterà all'area di lavoro. L'inizializzazione del client è differita e attenderà fino a quando sarà necessario effettuare una chiamata. Ciò si verifica nella cella di codice successiva.

Caricare i dati nell'archiviazione nel cloud

Azure Machine Learning usa URI (Uniform Resource Identifier) che puntano alle posizioni di archiviazione nel cloud. Un URI semplifica l'accesso ai dati nei notebook e nei processi. I formati URI dati sono simili agli URL Web usati nel Web browser per accedere alle pagine Web. Ad esempio:

  • Accedere ai dati dal server https pubblico: https://<account_name>.blob.core.windows.net/<container_name>/<folder>/<file>
  • Accedere ai dati da Azure Data Lake Gen 2: abfss://<file_system>@<account_name>.dfs.core.windows.net/<folder>/<file>

Un asset di dati di Azure Machine Learning è simile ai segnalibri (preferiti) del Web browser. Invece di ricordare percorsi di archiviazione lunghi (URI) che puntano ai dati usati più di frequente, è possibile creare un asset di dati e quindi accedere a tale asset con un nome descrittivo.

La creazione di un asset di dati crea anche un riferimento al percorso dell'origine dati, insieme a una copia dei relativi metadati. Poiché i dati rimangono nella posizione esistente, non vengono addebitati costi di archiviazione aggiuntivi e non si rischia l'integrità dell'origine dati. È possibile creare asset di dati da archivi dati di Azure Machine Learning, Archiviazione di Azure, URL pubblici e file locali.

Suggerimento

Per i caricamenti di dati più piccoli, la creazione di asset di dati di Azure Machine Learning è ideale per caricare i dati dalle risorse del computer locale all'archiviazione cloud. Questo approccio evita la necessità di strumenti o utilità aggiuntivi. Tuttavia, i caricamenti di dati di dimensioni maggiori potrebbero richiedere uno strumento o un'utilità dedicata, ad esempio azcopy. Lo strumento da riga di comando azcopy sposta i dati da e verso Archiviazione di Azure. Per altre informazioni su azcopy, vedere Introduzione ad AzCopy.

La cella del notebook successiva crea l'asset di dati. L'esempio di codice carica il file di dati non elaborato nella risorsa di archiviazione nel cloud designata.

Ogni volta che si crea un asset di dati, è necessaria una versione univoca. Se la versione esiste già, viene visualizzato un errore. In questo codice si usa "initial" per la prima lettura dei dati. Se tale versione esiste già, il codice non lo ricrea.

È possibile omettere il parametro version. In questo caso, viene generato automaticamente un numero di versione, a partire da 1 e incrementando da questa posizione.

In questa esercitazione viene usato il nome "initial" come prima versione. L'esercitazione Creare pipeline di Machine Learning di produzione usa anche questa versione dei dati, quindi si usa un valore visualizzato di nuovo in tale esercitazione.

from azure.ai.ml.entities import Data
from azure.ai.ml.constants import AssetTypes

# Update the 'my_path' variable to match the location of where you downloaded the data on your
# local filesystem

my_path = "./data/default_of_credit_card_clients.csv"
# Set the version number of the data asset
v1 = "initial"

my_data = Data(
    name="credit-card",
    version=v1,
    description="Credit card data",
    path=my_path,
    type=AssetTypes.URI_FILE,
)

## Create data asset if it doesn't already exist:
try:
    data_asset = ml_client.data.get(name="credit-card", version=v1)
    print(
        f"Data asset already exists. Name: {my_data.name}, version: {my_data.version}"
    )
except:
    ml_client.data.create_or_update(my_data)
    print(f"Data asset created. Name: {my_data.name}, version: {my_data.version}")

Per esaminare i dati caricati, selezionare Dati nella sezione Asset del menu di spostamento a sinistra. I dati vengono caricati e viene creato un asset di dati:

Screenshot che mostra i dati in studio.

Questi dati sono denominati carta di credito. Nella scheda Asset di dati è possibile visualizzarla nella colonna Nome .

Un archivio dati di Azure Machine Learning funge da riferimento per un account di archiviazione esistente in Azure. Un archivio dati offre i vantaggi seguenti:

  1. Un'API comune e facile da usare per interagire con diversi tipi di archiviazione:

    • Archiviazione di Azure Data Lake
    • BLOB
    • File

    e metodi di autenticazione.

  2. Un modo più semplice per individuare archivi dati utili quando si lavora come team.

  3. Negli script, un modo per nascondere le informazioni di connessione per l'accesso ai dati basato sulle credenziali (entità servizio/firma di accesso condiviso/chiave).

Accedere ai dati in un notebook

Si vogliono creare asset di dati per i dati a cui si accede di frequente. È possibile accedere ai dati usando l'URI come descritto in Accedere ai dati da un URI dell'archivio dati, ad esempio un file system. Tuttavia, come accennato in precedenza, può diventare difficile ricordare questi URI.

Un'alternativa consiste nell'usare la azureml-fsspec libreria, che fornisce un'interfaccia di file system per gli archivi dati di Azure Machine Learning. Questo è un modo più semplice per accedere al file CSV in Pandas:

Importante

In una cella del notebook eseguire questo codice per installare la libreria Python azureml-fsspec nel kernel Jupyter:

%pip install -U azureml-fsspec
import pandas as pd

# Get a handle of the data asset and print the URI
data_asset = ml_client.data.get(name="credit-card", version=v1)
print(f"Data asset URI: {data_asset.path}")

# Read into pandas - note that you will see 2 headers in your data frame - that is ok, for now

df = pd.read_csv(data_asset.path)
df.head()

Per altre informazioni sull'accesso ai dati in un notebook, vedere Accedere ai dati dall'archiviazione cloud di Azure durante lo sviluppo interattivo.

Creare una nuova versione dell'asset di dati

I dati hanno bisogno di una pulizia leggera per renderli adatti al training di un modello di Machine Learning. Le sue caratteristiche sono:

  • Due intestazioni
  • Colonna ID client che non verrebbe usata come funzionalità in Machine Learning
  • Spazi nel nome della variabile di risposta

Inoltre, rispetto al formato CSV, il formato di file Parquet è un modo migliore per archiviare questi dati. Parquet offre compressione e mantiene lo schema. Per pulire i dati e archiviarlo in formato Parquet:

# Read in data again, this time using the 2nd row as the header
df = pd.read_csv(data_asset.path, header=1)
# Rename column
df.rename(columns={"default payment next month": "default"}, inplace=True)
# Remove ID column
df.drop("ID", axis=1, inplace=True)

# Write file to filesystem
df.to_parquet("./data/cleaned-credit-card.parquet")

Questa tabella mostra la struttura dei dati nel file originaledefault_of_credit_card_clients.csv scaricato in un passaggio precedente. I dati caricati contengono 23 variabili esplicative e 1 variabile di risposta, come illustrato di seguito:

Nomi delle colonne Tipo di variabile Descrizione
X1 Esplicativa Importo del credito specificato (dollaro NT): include sia il credito del singolo consumatore che il credito familiare (supplementare).
X2 Esplicativa Sesso (1 = maschio; 2 = femmina).
X3 Esplicativa Istruzione (1 = master; 2 = università; 3 = scuola superiore; 4 = altri).
X4 Esplicativa Stato coniugale (1 = sposato; 2 = single; 3 = altri).
X5 Esplicativa Età (anni).
X6-X11 Esplicativa Cronologia del pagamento precedente. I record di pagamento mensili precedenti sono stati registrati da aprile a settembre 2005. -1 = pagamenti regolari; 1 = ritardo di pagamento per un mese; 2 = ritardo di pagamento per due mesi; . . .; 8 = ritardo di pagamento per otto mesi; 9 = ritardo di pagamento per nove mesi e superiori.
X12-17 Esplicativa Importo dell'estratto conto (dollaro NT) da aprile a settembre 2005.
X18-23 Esplicativa Importo del pagamento precedente (dollaro NT) da aprile a settembre 2005.
Risposta Pagamento predefinito (Sì = 1, No = 0)

Creare quindi una nuova versione dell'asset di dati. I dati vengono caricati automaticamente nell'archiviazione cloud. Per questa versione, aggiungere un valore di ora in modo che ogni volta che viene eseguito il codice, viene creato un numero di versione diverso.

from azure.ai.ml.entities import Data
from azure.ai.ml.constants import AssetTypes
import time

# Next, create a new version of the data asset (the data is automatically uploaded to cloud storage):
v2 = "cleaned" + time.strftime("%Y.%m.%d.%H%M%S", time.gmtime())
my_path = "./data/cleaned-credit-card.parquet"

# Define the data asset, and use tags to make it clear the asset can be used in training

my_data = Data(
    name="credit-card",
    version=v2,
    description="Default of credit card clients data.",
    tags={"training_data": "true", "format": "parquet"},
    path=my_path,
    type=AssetTypes.URI_FILE,
)

## Create the data asset

my_data = ml_client.data.create_or_update(my_data)

print(f"Data asset created. Name: {my_data.name}, version: {my_data.version}")

Il file Parquet pulito è l'origine dati della versione più recente. Questo codice mostra prima il set di risultati della versione CSV, quindi la versione Parquet:

import pandas as pd

# Get a handle of the data asset and print the URI
data_asset_v1 = ml_client.data.get(name="credit-card", version=v1)
data_asset_v2 = ml_client.data.get(name="credit-card", version=v2)

# Print the v1 data
print(f"V1 Data asset URI: {data_asset_v1.path}")
v1df = pd.read_csv(data_asset_v1.path)
print(v1df.head(5))

# Print the v2 data
print(
    "_____________________________________________________________________________________________________________\n"
)
print(f"V2 Data asset URI: {data_asset_v2.path}")
v2df = pd.read_parquet(data_asset_v2.path)
print(v2df.head(5))

Pulire le risorse

Se si prevede di continuare con altre esercitazioni, procedere direttamente a Passaggi successivi.

Arrestare l'istanza di ambiente di calcolo

Se non si prevede di usarlo ora, arrestare l'istanza di ambiente di calcolo:

  1. Nel riquadro sinistro dello studio selezionare Calcolo.
  2. Nelle schede superiori selezionare Istanze di calcolo.
  3. Selezionare l'istanza di ambiente di calcolo nell'elenco.
  4. Sulla barra degli strumenti in alto selezionare Arresta.

Eliminare tutte le risorse

Importante

Le risorse create possono essere usate come prerequisiti per altre esercitazioni e procedure dettagliate per Azure Machine Learning.

Se le risorse create non servono più, eliminarle per evitare addebiti:

  1. Nella casella di ricerca della portale di Azure immettere Gruppi di risorse e selezionarlo nei risultati.

  2. Nell'elenco selezionare il gruppo di risorse creato.

  3. Nella pagina Panoramica selezionare Elimina gruppo di risorse.

    Screenshot delle opzioni da selezionare per eliminare un gruppo di risorse nel portale di Azure.

  4. Immettere il nome del gruppo di risorse. Quindi seleziona Elimina.

Passaggi successivi

Per altre informazioni sugli asset di dati, vedere Creare asset di dati.

Per altre informazioni sugli archivi dati, vedere Creare archivi dati.

Continuare con l'esercitazione successiva per informazioni su come sviluppare uno script di training: