Share via


Data science con una Data Science Virtual Machine per Windows

La Data Science Virtual Machine (DSVM) per Windows è un ambiente di sviluppo di analisi scientifica dei dati avanzato in cui è possibile eseguire diverse attività di esplorazione e modellazione dati. L'ambiente è già compilato e in bundle in diversi strumenti comuni di analisi dei dati che consentono di iniziare a usare facilmente l'analisi per le distribuzioni locali, cloud o ibride.

La DSVM interagisce strettamente con i servizi di Azure. È in grado di leggere ed elaborare i dati già archiviati in Azure, in Azure Synapse (in precedenza SQL DataW), Azure Data Lake, Archiviazione di Azure o Azure Cosmos DB. È anche in grado di utilizzare altri strumenti di analisi, ad esempio Azure Machine Learning.

Questo articolo illustra come usare la DSVM per eseguire attività di data science e interagire con altri servizi di Azure. Ecco alcune attività che è possibile eseguire con DSVM:

  • Usare Jupyter Notebook per sperimentare i dati in un browser usando Python 2, Python 3 e Microsoft R. (Microsoft R è una versione enterprise di R progettata per le prestazioni).

  • Esplorare dati e sviluppare modelli in locale nella DSVM usando Microsoft Machine Learning Server e Python.

  • Amministrare le risorse di Azure usando il portale di Azure o PowerShell.

  • Estendere lo spazio di archiviazione e condividere codice/set di dati su larga scala con l'intero team creando una condivisione di file di Azure come unità installabile nella DSVM.

  • Condividere il codice con il team usando GitHub. Accedere al repository usando i client Git preinstallati: Git Bash e Git GUI.

  • Accedere ai servizi di analisi e dati di Azure come Archiviazione Blob di Azure, Azure Cosmos DB, Azure Synapse (in precedenza SQL Data Warehouse) e database SQL di Azure.

  • Creare report e un dashboard usando l'istanza di Power BI Desktop preinstallata nella DSVM e distribuirli nel cloud.

  • Installare strumenti aggiuntivi nella macchina virtuale.

Nota

Per molti dei servizi di archiviazione e analisi dei dati aggiuntivi elencati in questo articolo vengono applicati costi di utilizzo aggiuntivi. Per informazioni dettagliate, vedere la pagina dei prezzi di Azure.

Prerequisiti

Nota

È consigliabile usare il modulo Azure Az PowerShell per interagire con Azure. Per iniziare, vedere Installare Azure PowerShell. Per informazioni su come eseguire la migrazione al modulo AZ PowerShell, vedere Eseguire la migrazione di Azure PowerShell da AzureRM ad Az.

Usare i notebook di Jupyter Notebook

Jupyter Notebook fornisce un IDE basato su browser per l'esplorazione e la modellazione dei dati. È possibile usare Python 2, Python 3 o R in un Jupyter Notebook.

Per avviare il Jupyter Notebook, selezionare l'icona Jupyter Notebook nel menu Start o sul desktop. Nel prompt dei comandi della DSVM è anche possibile eseguire il comando jupyter notebook dalla directory in cui sono già presenti altri notebook o dove si vogliono creare nuovi notebook.

Dopo aver avviato Jupyter, passare alla directory /notebooks, ad esempio i notebook preconfezionati nella DSVM. Ora puoi:

  • Selezionare il notebook per visualizzare il codice.
  • Eseguire ogni cella selezionando MAIUSC+INVIO.
  • Eseguire l'intero notebook selezionando Cella>Esegui.
  • Creare un nuovo notebook selezionando l'icona di Jupyter (angolo superiore sinistro), selezionando il pulsante Nuovo a destra e scegliendo il linguaggio del notebook (detto anche kernel).

Nota

Attualmente in Jupyter sono supportati i kernel Python 2.7, Python 3.6, R, Julia e PySpark. Il kernel R supporta la programmazione sia in R open source che in Microsoft R.

Una volta effettuato l'accesso al notebook, è possibile esplorare i dati, compilare il modello e testarlo usando le librerie preferite.

Esplorare i dati e sviluppare modelli con Microsoft Machine Learning Server

Nota

Il supporto per la versione autonoma di Machine Learning Server terminerà il 1° luglio 2021. Lo rimuoveremo dalle immagini della DSVM dopo il 30 giugno. Le distribuzioni esistenti continueranno ad avere accesso al software; tuttavia, a causa della data di fine del supporto raggiunto, non ci sarà supporto per il software dopo il 1° luglio 2021.

È possibile usare linguaggi come R e Python per eseguire l'analisi dei dati direttamente in DSVM.

Per R, è possibile usare R Tools per Visual Studio. Microsoft ha fornito librerie aggiuntive, oltre a open-source/CRAN-R, per consentire l'analisi scalabile e offrire la possibilità di analizzare maggiori quantità di dati rispetto a quelle consentite dalla memoria in un'analisi parallela in blocchi.

Per Python è possibile usare un IDE come Visual Studio Community Edition, in cui è preinstallata l'estensione Python Tools for Visual Studio (PTVS). Per impostazione predefinita, in PTVS è installato solo Python 3.6, l'ambiente root di Conda. Per abilitare Anaconda Python 2.7, seguire questa procedura:

  1. Creare ambienti personalizzati per ogni versione andando a Strumenti>Strumenti Python>Ambienti Python e quindi selezionando "+ Personalizza" in Visual Studio Community Edition.
  2. Immettere una descrizione e impostare il percorso con il prefisso dell'ambiente come c:\anaconda\envs\python2 per Anaconda Python 2.7.
  3. Selezionare Rilevamento automatico>Applica per salvare l'ambiente.

Per altri dettagli su come creare gli ambienti Python, vedere la documentazione relativa a PTVS.

A questo punto è possibile iniziare a creare un nuovo progetto Python. Andare a File>Nuovo>Progetto>Python e selezionare il tipo di applicazione Python da compilare. È possibile impostare la versione di ambiente Python desiderata per il progetto corrente, ad esempio Python 2.7 o 3.6, facendo clic con il pulsante destro del mouse su Ambienti Python, e selezionando Aggiungi/Rimuovi ambienti Python. Ulteriori informazioni sull'uso di PTVS sono disponibili nella documentazione del prodotto.

Manage Azure resources (Gestire risorse di Azure)

La DSVM non consente solo di creare la soluzione di analisi in locale nella macchina virtuale. Consente anche di accedere ai servizi nella piattaforma cloud di Azure. Azure offre diversi servizi di calcolo, archiviazione e analisi dei dati e altri servizi amministrabili e accessibili dalla DSVM.

Per amministrare la sottoscrizione di Azure e le risorse cloud, sono disponibili due opzioni:

Estendere l'archiviazione usando file system condivisi

I data scientist possono condividere grandi set di dati, codice o alte risorse all'interno del team. La DSVM ha circa 45 GB di spazio disponibile. Per estendere lo spazio di archiviazione, è possibile usare File di Azure e montarlo in una o più istanze della DSVM, oppure accedervi tramite un'API REST. È inoltre possibile usare il portale di Azure oppure Azure PowerShell per aggiungere altri dischi dati dedicati.

Nota

Lo spazio massimo nella condivisione file di Azure è di 5 TB. Il limite di dimensioni per ogni file è 1 TB.

È possibile usare questo script in Azure PowerShell per creare una condivisione file di Azure:

# Authenticate to Azure.
Connect-AzAccount
# Select your subscription
Get-AzSubscription –SubscriptionName "<your subscription name>" | Select-AzSubscription
# Create a new resource group.
New-AzResourceGroup -Name <dsvmdatarg>
# Create a new storage account. You can reuse existing storage account if you want.
New-AzStorageAccount -Name <mydatadisk> -ResourceGroupName <dsvmdatarg> -Location "<Azure Data Center Name For eg. South Central US>" -Type "Standard_LRS"
# Set your current working storage account
Set-AzCurrentStorageAccount –ResourceGroupName "<dsvmdatarg>" –StorageAccountName <mydatadisk>

# Create an Azure Files share
$s = New-AzStorageShare <<teamsharename>>
# Create a directory under the file share. You can give it any name
New-AzStorageDirectory -Share $s -Path <directory name>
# List the share to confirm that everything worked
Get-AzStorageFile -Share $s

A questo punto, dopo avere creato una condivisione file di Azure, è possibile installarla in una macchina virtuale in Azure. È consigliabile porre la VM nello stesso data center di Azure dell'account di archiviazione, per evitare la latenza e gli addebiti per il trasferimento dei dati. Ecco i comandi di Azure PowerShell per installare l'unità nella DSVM:

# Get the storage key of the storage account that has the Azure Files share from the Azure portal. Store it securely on the VM to avoid being prompted in the next command.
cmdkey /add:<<mydatadisk>>.file.core.windows.net /user:<<mydatadisk>> /pass:<storage key>

# Mount the Azure Files share as drive Z on the VM. You can choose another drive letter if you want.
net use z:  \\<mydatadisk>.file.core.windows.net\<<teamsharename>>

Ora è possibile accedere a questa unità come a qualsiasi altra unità della VM.

Condividere il codice in GitHub

GitHub è un repository di codice in cui è possibile trovare esempi di codice e origini per diversi strumenti usando tecnologie condivise dalla community degli sviluppatori. Usa Git come tecnologia per tenere traccia delle versioni dei file di codice e per archiviarle. GitHub è anche una piattaforma in cui è possibile creare il proprio archivio in cui archiviare la documentazione e il codice condiviso del team, implementare il controllo della versione e controllare chi ha l'accesso per visualizzare il codice e per contribuirvi.

Per altre informazioni sull'uso di Git, visitare le pagine della guida di GitHub. È possibile usare GitHub per collaborare con il team, usare il codice sviluppato dalla community e contribuire al codice della community.

In DSVM sono caricati gli strumenti client nella riga di comando e nella GUI per accedere al repository GitHub. Lo strumento da riga di comando che funziona con Git e GitHub si chiama Git Bash. Visual Studio è installato in DSVM e include le estensioni Git. È possibile trovare le icone per questi strumenti nel menu Start e sul desktop.

Per scaricare il codice da un repository GitHub, usare il comando git clone. Ad esempio, per scaricare il repository di data science pubblicato da Microsoft nella directory corrente, è possibile eseguire il comando seguente in Git Bash:

git clone https://github.com/Azure/DataScienceVM.git

In Visual Studio è possibile eseguire la stessa operazione di clonazione. Per accedere agli strumenti Git e GitHub in Visual Studio, vedere lo screenshot seguente:

Screenshot of Visual Studio with the GitHub connection displayed

In github.com sono disponibili altre informazioni sull'uso di Git per lavorare con l'archivio GitHub da risorse. Il foglio informativo è un riferimento utile.

Accedere a servizi dati e analisi di Azure

Archiviazione BLOB di Azure

Archiviazione Blob di Azure è un servizio di archiviazione cloud affidabile ed economico per piccole e grandi quantità di dati. Questa sezione descrive come è possibile spostare dati nell'archiviazione Blob di Azure e accedere ai dati archiviati in un BLOB di Azure.

Prerequisiti

  • Creare l'account di archiviazione Blob di Azure nel portale di Azure.

    Screenshot of the storage account creation process in the Azure portal

  • Verificare che lo strumento AzCopy della riga di comando sia preinstallato: C:\Program Files (x86)\Microsoft SDKs\Azure\AzCopy\azcopy.exe. La directory contenente il file azcopy.exe è già definita nella variabile di ambiente PATH, così da evitare all'utente di digitare il percorso completo del comando quando esegue questo strumento. Per altre informazioni sullo strumento AzCopy, vedere la documentazione di AzCopy.

  • Avviare lo strumento Esplora archivi di Azure. È possibile scaricarla dalla pagina Web di Storage Explorer.

    Screenshot of Azure Storage Explorer accessing a storage account

Spostare i dati da una macchina virtuale a un Blob di Azure: AzCopy

Per spostare i dati tra i file locali e l'archiviazione Blob, è possibile usare AzCopy nella riga di comando o in PowerShell:

AzCopy /Source:C:\myfolder /Dest:https://<mystorageaccount>.blob.core.windows.net/<mycontainer> /DestKey:<storage account key> /Pattern:abc.txt

Sostituire C:\myfolder con il percorso di archiviazione del file, mystorageaccount con il nome dell'account di archiviazione Blob, mycontainer con il nome del contenitore e storage account key con la chiave di accesso alle risorse di archiviazione Blob. È possibile trovare le credenziali dell'account di archiviazione nel portale di Azure.

Eseguire il comando AzCopy in PowerShell o dal prompt dei comandi. Ecco un esempio di utilizzo del comando AzCopy:

# Copy *.sql from a local machine to an Azure blob
"C:\Program Files (x86)\Microsoft SDKs\Azure\AzCopy\azcopy" /Source:"c:\Aaqs\Data Science Scripts" /Dest:https://[ENTER STORAGE ACCOUNT].blob.core.windows.net/[ENTER CONTAINER] /DestKey:[ENTER STORAGE KEY] /S /Pattern:*.sql

# Copy back all files from an Azure blob container to a local machine

"C:\Program Files (x86)\Microsoft SDKs\Azure\AzCopy\azcopy" /Dest:"c:\Aaqs\Data Science Scripts\temp" /Source:https://[ENTER STORAGE ACCOUNT].blob.core.windows.net/[ENTER CONTAINER] /SourceKey:[ENTER STORAGE KEY] /S

Dopo l'esecuzione del comando AzCopy per la copia in un Blob di Azure, il file viene visualizzato in Azure Storage Explorer.

Screenshot of the storage account, displaying the uploaded CSV file

Spostare i dati da una VM a un Blob di Azure: Azure Storage Explorer

È anche possibile caricare i dati dal file locale nella VM usando Azure Storage Explorer:

  • Per caricare dati in un contenitore, selezionare il contenitore di destinazione e selezionare il pulsante Carica.Screenshot of the upload button in Azure Storage Explorer
  • Selezionare i puntini di sospensione ... a destra della casella File, selezionare uno o più file da caricare dal file system e selezionare Carica per iniziare a caricare i file.Screenshot of the Upload files dialog box

Leggere i dati dal Blob di Azure: ODBC Python

È possibile usare la libreria BlobService per leggere i dati direttamente da un Blob in un Jupyter Notebook o in un programma Python.

Prima di tutto importare i pacchetti necessari:

import pandas as pd
from pandas import Series, DataFrame
import numpy as np
import matplotlib.pyplot as plt
from time import time
import pyodbc
import os
from azure.storage.blob import BlobService
import tables
import time
import zipfile
import random

Quindi collegare le credenziali dell'account di archiviazione Blob e leggere i dati dal Blob:

CONTAINERNAME = 'xxx'
STORAGEACCOUNTNAME = 'xxxx'
STORAGEACCOUNTKEY = 'xxxxxxxxxxxxxxxx'
BLOBNAME = 'nyctaxidataset/nyctaxitrip/trip_data_1.csv'
localfilename = 'trip_data_1.csv'
LOCALDIRECTORY = os.getcwd()
LOCALFILE =  os.path.join(LOCALDIRECTORY, localfilename)

#download from blob
t1 = time.time()
blob_service = BlobService(account_name=STORAGEACCOUNTNAME,account_key=STORAGEACCOUNTKEY)
blob_service.get_blob_to_path(CONTAINERNAME,BLOBNAME,LOCALFILE)
t2 = time.time()
print(("It takes %s seconds to download "+BLOBNAME) % (t2 - t1))

#unzip downloaded files if needed
#with zipfile.ZipFile(ZIPPEDLOCALFILE, "r") as z:
#    z.extractall(LOCALDIRECTORY)

df1 = pd.read_csv(LOCALFILE, header=0)
df1.columns = ['medallion','hack_license','vendor_id','rate_code','store_and_fwd_flag','pickup_datetime','dropoff_datetime','passenger_count','trip_time_in_secs','trip_distance','pickup_longitude','pickup_latitude','dropoff_longitude','dropoff_latitude']
print 'the size of the data is: %d rows and  %d columns' % df1.shape

I dati vengono letti come frame di dati:

Screenshot of the first 10 rows of data

Azure Synapse Analytics e database

Azure Synapse Analytics è un data warehouse elastico distribuito come servizio con un'esperienza di classe enterprise di SQL Server.

È possibile effettuare il provisioning di Azure Synapse Analytics seguendo le istruzioni di questo articolo. Dopo il provisioning di Azure Synapse Analytics, è possibile seguire questa procedura dettagliata per il caricamento, l'esplorazione e la modellazione dei dati usando i dati disponibili in Azure Synapse Analytics.

Azure Cosmos DB

Azure Cosmos DB è un database NoSQL sul cloud. Consente di utilizzare documenti come JSON e di archiviarli ed eseguire query su di essi.

Per accedere ad Azure Cosmos DB dalla DSVM, è necessario eseguire i seguenti passaggi preliminari:

  1. L'SDK di Azure Cosmos DB Python è già installato nella DSVM. Per aggiornarlo, eseguire pip install pydocumentdb --upgrade da un prompt dei comandi.

  2. Creare l'account e il database Azure Cosmos DB nel portale di Azure.

  3. Scaricare lo strumento di migrazione dei dati di Azure Cosmos DB dal Microsoft Download Centre ed estrarre in una directory di propria scelta.

  4. Importare dati JSON (dati sui vulcani) archiviati in un blob pubblico in Azure Cosmos DB nello strumento di migrazione utilizzando i seguenti parametri di comando. (usare dtui.exe dalla directory di installazione dello strumento di migrazione dei dati di Azure Cosmos DB). Immettere i percorsi di origine e di destinazione con questi parametri:

    /s:JsonFile /s.Files:https://data.humdata.org/dataset/a60ac839-920d-435a-bf7d-25855602699d/resource/7234d067-2d74-449a-9c61-22ae6d98d928/download/volcano.json /t:DocumentDBBulk /t.ConnectionString:AccountEndpoint=https://[DocDBAccountName].documents.azure.com:443/;AccountKey=[[KEY];Database=volcano /t.Collection:volcano1

Dopo aver importato i dati, è possibile passare a Jupyter e aprire il notebook denominato DocumentDBSample. Contiene il codice Python per accedere ad Azure Cosmos DB ed eseguire alcune query di base. Per altre informazioni su Azure Cosmos DB, vedere la pagina della documentazione del servizio.

Usare report e dashboard di Power BI

È possibile visualizzare il file JSON sui vulcani usato nell'esempio precedente di Azure Cosmos DB in Power BI Desktop per ottenere una rappresentazione grafica dettagliata dei dati. I passaggi dettagliati sono disponibili nell' articolo relativo a Power BI. Ecco i passaggi principali:

  1. Aprire Power BI Desktop e selezionare Recupera dati. Specificare l'URL come https://cahandson.blob.core.windows.net/samples/volcano.json.
  2. Verranno visualizzati i record JSON importati come elenco. Convertire l'elenco in una tabella in modo che Power BI possa usarli.
  3. Espandere le colonne selezionando l'icona di espansione (freccia).
  4. Si noti che il percorso è un campo Record. Espandere il record e selezionare solo le coordinate. La coordinata è una colonna elenco.
  5. Aggiungere una nuova colonna per convertire la colonna di elenco di coordinate in una colonna LatLong delimitata da virgole. Concatenare i due elementi nel campo dell'elenco di coordinate usando la formula Text.From([coordinates]{1})&","&Text.From([coordinates]{0}).
  6. Convertire la colonna Elevazione in decimale e selezionare i pulsanti Chiudi e Applica.

Anziché i passaggi precedenti, è possibile incollare il codice seguente. Esegue lo script dei passaggi usati nell'editor avanzato in Power BI per scrivere le trasformazioni dei dati in un linguaggio di query.

let
    Source = Json.Document(Web.Contents("https://cahandson.blob.core.windows.net/samples/volcano.json")),
    #"Converted to Table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Expanded Column1" = Table.ExpandRecordColumn(#"Converted to Table", "Column1", {"Volcano Name", "Country", "Region", "Location", "Elevation", "Type", "Status", "Last Known Eruption", "id"}, {"Volcano Name", "Country", "Region", "Location", "Elevation", "Type", "Status", "Last Known Eruption", "id"}),
    #"Expanded Location" = Table.ExpandRecordColumn(#"Expanded Column1", "Location", {"coordinates"}, {"coordinates"}),
    #"Added Custom" = Table.AddColumn(#"Expanded Location", "LatLong", each Text.From([coordinates]{1})&","&Text.From([coordinates]{0})),
    #"Changed Type" = Table.TransformColumnTypes(#"Added Custom",{{"Elevation", type number}})
in
    #"Changed Type"

I dati sono ora inclusi nel modello di dati di Power BI. L'istanza di Power BI Desktop deve avere un aspetto simile al seguente:

Power BI Desktop

È possibile avviare la compilazione di report e visualizzazioni usando il modello di dati. Per compilare un report, è possibile seguire i passaggi in questo articolo relativo a Power BI .

Ridimensionare la DSVM in modo dinamico

È possibile aumentare e ridurre le prestazioni di DSVM per soddisfare le esigenze del progetto. Se non è necessario usare la VM la sera o nei fine settimana, è sufficiente arrestarla dal portale di Azure.

Nota

Vengono addebitati i costi di calcolo se si usa solo il pulsante di arresto del sistema operativo nella VM. È invece consigliabile deallocare la DSVM usando il portale di Azure o Cloud Shell.

Potrebbe essere necessario gestire alcune analisi su larga scala e richiedere più CPU, memoria o capacità del disco. In tal caso, è possibile trovare una scelta di dimensioni di macchina virtuale in termini di core CPU, istanze basate su GPU per deep learning, capacità di memoria e tipi di disco (incluse le unità SSD), che soddisfano qualsiasi esigenza di calcolo e di budget. L'elenco completo di VM con i rispettivi prezzi di calcolo orario è disponibile nella pagina Prezzi di Macchine virtuali di Azure.

Aggiungere altri strumenti

Gli strumenti predefiniti nella DSVM possono soddisfare molte esigenze comuni di analisi dei dati. Ciò consente di risparmiare tempo, in quanto non è necessario installare e configurare gli ambienti uno alla volta. Consente anche di risparmiare denaro, perché si paga solo per le risorse usate.

È possibile sfruttare altri servizi di Azure per i dati e l'analisi, come illustrato in questo articolo, per migliorare l'ambiente di analisi. In alcuni casi, potrebbero essere necessari strumenti aggiuntivi, inclusi alcuni strumenti di partner proprietari. L'accesso amministrativo completo alla macchina virtuale consente di installare i nuovi strumenti necessari. È anche possibile installare pacchetti aggiuntivi in Python e in R non preinstallati. Per Python è possibile usare conda o pip. Per R è possibile usare install.packages() nella console di R, oppure usare l'IDE e scegliere Pacchetti>Installa pacchetti.

Deep Learning

Oltre a esempi basati su framework, è possibile ottenere un set di procedure dettagliate complete che sono state convalidate nella DSVM. Queste procedure dettagliate consentono di iniziare rapidamente a sviluppare applicazioni di apprendimento avanzato in domini come il riconoscimento delle immagini e del linguaggio/testo.

  • Esecuzione di reti neurali in diversi framework: questa procedura dettagliata completa illustra come eseguire la migrazione del codice da un framework a un altro. Illustra anche come confrontare le prestazioni dei modelli e di runtime fra i framework.

  • Guida dettagliata alla creazione di una soluzione end-to-end per individuare prodotti all'interno di immagini: il rilevamento immagine è una tecnica che consente di individuare e classificare gli oggetti all'interno delle immagini. Questa tecnologia può portare enormi vantaggi in molte applicazioni aziendali reali. Ad esempio, i negozianti possono usare questa tecnica per determinare quale prodotto un cliente ha prelevato dallo scaffale. Queste informazioni a loro volta consentono ai negozi di gestire l'inventario dei prodotti.

  • Deep learning per audio: questa esercitazione illustra come eseguire il training di un modello di Deep Learning per il rilevamento di eventi audio nel set di dati Urban Sounds. Fornisce anche una panoramica su come usare i dati audio.

  • Classificazione di documenti di testo: questa procedura dettagliata illustra come creare e addestrare due architetture di rete neurale, ovvero rete Hierarchical Attention Network e Long Short Term Memory (LSTM). Queste reti neurali usano l'API Keras per l'apprendimento avanzato per classificare i documenti di testo.

Riepilogo

Questo articolo contiene alcune delle attività che è possibile eseguire nella Microsoft Data Science Virtual Machine. Ce ne sono molte altre che è possibile eseguire per rendere la DSVM un ambiente di analisi efficace.