Condividi tramite


Data science con una Data Science Virtual Machine per Windows

La Data Science Virtual Machine (DSVM) di Windows è un potente ambiente di sviluppo di data science che supporta attività di esplorazione e modellazione dei dati. L'ambiente viene precompilato e precompilato con diversi strumenti di analisi dei dati più diffusi che semplificano l'avvio dell'analisi per distribuzioni locali, cloud o ibride.

La DSVM interagisce strettamente con i servizi di Azure. Può 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 gestire le attività di data science e per interagire con altri servizi di Azure. Di seguito è riportato un esempio di attività che la DSVM può coprire:

  • 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 prestazioni elevate).
  • Esplorare i 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 set di dati/codice su larga scala nell'intero team, con una condivisione File di Azure come unità montabile nella DSVM.
  • Condividere il codice con il team con GitHub. Accedere al repository con i client Git preinstallati: Git Bash e Git GUI.
  • Accedere ai servizi di analisi e dati di Azure:
    • Archiviazione BLOB di Azure
    • Azure Cosmos DB
    • Azure Synapse (in precedenza SQL Data Warehouse)
    • Database SQL di Azure
  • Creare report e un dashboard con l'istanza di Power BI Desktop, preinstallata nella DSVM, e distribuirli nel cloud.
  • Installare altri strumenti 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 altre informazioni, vedi la pagina dei prezzi di Azure.

Prerequisiti

  • Una sottoscrizione di Azure. Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
  • DSVM di cui è stato effettuato il provisioning nel portale di Azure. Per altre informazioni, vedere Creazione di una risorsa macchina virtuale.

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 di DSVM è anche possibile eseguire il comando jupyter notebook dalla directory che ospita notebook esistenti o in cui si desidera creare nuovi notebook.

Dopo aver avviato Jupyter, passare alla /notebooks directory . Questa directory ospita notebook di esempio preconfezionati nella DSVM. È possibile:

  • Selezionare il notebook per visualizzare il codice.
  • Selezionare MAIUSC+INVIO per eseguire ogni cella.
  • Selezionare Cell Run (Esegui cella>) per eseguire l'intero notebook.
  • Creare un nuovo notebook; selezionare l'icona di Jupyter (angolo superiore sinistro), selezionare il pulsante Nuovo e quindi scegliere il linguaggio del notebook (noto anche come kernel).

Nota

Attualmente sono supportati i kernel Python 2.7, Python 3.6, R, Julia e PySpark in Jupyter. Il kernel R supporta la programmazione sia in R open source che in Microsoft R. Nel notebook è possibile esplorare i dati, compilare il modello e testare tale modello con 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 è terminato il 1° luglio 2021. È stato rimosso dalle immagini DSVM dopo il 30 giugno 2021. Le distribuzioni esistenti possono comunque accedere al software, ma il supporto è terminato dopo il 1° luglio 2021.

È possibile usare R e Python per l'analisi dei dati direttamente nella DSVM.

Per R, è possibile usare R Tools per Visual Studio. Microsoft fornisce altre librerie, oltre alla risorsa CRAN R open source. Queste librerie consentono sia l'analisi scalabile che la possibilità di analizzare le masse di dati che superano le limitazioni delle dimensioni della memoria dell'analisi parallela in blocchi.

Per Python, è possibile usare un IDE, ad esempio Visual Studio Community Edition, che include l'estensione Python Tools per Visual Studio (PTVS) preinstallata. Per impostazione predefinita, in PTVS è installato solo Python 3.6, l'ambiente root di Conda. Per abilitare Anaconda Python 2.7:

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

Per altre informazioni su come creare ambienti Python, vedere la risorsa della documentazione PTVS.

È ora possibile creare un nuovo progetto Python. Selezionare File>Nuovo>progetto>Python e selezionare il tipo di applicazione Python da compilare. È possibile impostare l'ambiente Python per il progetto corrente sulla versione desiderata (Python 2.7 o 3.6) facendo clic con il pulsante destro del mouse su Ambienti Python e quindi scegliendo Aggiungi/Rimuovi ambienti Python. Per altre informazioni sull'uso di PTVS, vedere la documentazione del prodotto.

Manage Azure resources (Gestire risorse di Azure)

La DSVM consente 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, tra cui calcolo, archiviazione, analisi dei dati e altro ancora, che è possibile amministrare e accedere dalla DSVM.

Sono disponibili due opzioni per amministrare la sottoscrizione di Azure e le risorse cloud:

  • Visitare il portale di Azure nel browser.

  • Usare gli script di PowerShell. Eseguire Azure PowerShell da un collegamento sul desktop o dal menu Start . Per altre informazioni, vedere la risorsa della documentazione di Microsoft Azure PowerShell.

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 espandere lo spazio di archiviazione, è possibile usare File di Azure e montarlo in una o più istanze di DSVM oppure accedervi con un'API REST. È anche possibile usare il portale di Azure o Usare Azure PowerShell per aggiungere dischi dati dedicati aggiuntivi.

Nota

Lo spazio massimo in una condivisione file di Azure è di 5 TB. Ogni file ha un limite di dimensioni di 1 TB.

Questo script di Azure PowerShell crea 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

È possibile montare una condivisione File di Azure in qualsiasi macchina virtuale in Azure. È consigliabile inserire la macchina virtuale e l'account di archiviazione nello stesso data center di Azure per evitare addebiti per latenza e trasferimento dei dati. Questi comandi di Azure PowerShell montano 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>>

È possibile accedere a questa unità come qualsiasi unità normale nella macchina virtuale.

Condividere il codice in GitHub

Il repository di codice GitHub ospita esempi di codice e origini di codice per molti strumenti condivisi dalla community degli sviluppatori. Usa Git come tecnologia per tenere traccia delle versioni dei file di codice e per archiviarle. GitHub funge anche da piattaforma per creare un repository personalizzato. Il proprio repository può archiviare il codice condiviso e la documentazione del team, implementare il controllo della versione e controllare le autorizzazioni di accesso per gli stakeholder che vogliono visualizzare e contribuire al codice. GitHub supporta la collaborazione all'interno del team, l'uso del codice sviluppato dalla community e i contributi del codice alla community. Per altre informazioni su Git, visitare le pagine della Guida di GitHub.

La DSVM viene caricata con gli strumenti client nella riga di comando e nell'interfaccia utente grafica per accedere al repository GitHub. Lo strumento da riga di comando Git Bash funziona con Git e GitHub. Visual Studio è installato in DSVM e include le estensioni Git. Sia il menu Start che il desktop hanno icone per questi strumenti.

Usare il git clone comando per scaricare il codice da un repository GitHub. Per scaricare il repository di data science pubblicato da Microsoft nella directory corrente, ad esempio, eseguire questo comando in Git Bash:

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

Visual Studio può gestire la stessa operazione di clonazione. Questo screenshot mostra come accedere agli strumenti Git e GitHub in Visual Studio:

Screenshot che mostra Visual Studio con la connessione GitHub visualizzata.

È possibile usare le risorse github.com disponibili nel repository GitHub. Per altre informazioni, visitare la risorsa foglio informativo di GitHub.

Accedere a servizi dati e analisi di Azure

Archivio BLOB di Azure

Archiviazione BLOB di Azure è un servizio di archiviazione cloud affidabile ed economico per le risorse di dati di grandi dimensioni e piccole. Questa sezione descrive come spostare i dati nell'archivio BLOB e accedere ai dati archiviati in un BLOB di Azure.

Prerequisiti

  • Un account di archiviazione BLOB di Azure, creato nel portale di Azure.

    Screenshot che mostra il processo di creazione dell'account di archiviazione nel portale di Azure.

  • Verificare che lo strumento AzCopy della riga di comando sia preinstallato con questo comando:

    C:\Program Files (x86)\Microsoft SDKs\Azure\AzCopy\azcopy.exe

    La directory che ospita azcopy.exe si trova già nella variabile di ambiente PATH, quindi è possibile evitare di digitare il percorso di comando completo quando si 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 che mostra l'Archiviazione di Azure Explorer che accede a un account di archiviazione.

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 della directory che ospita il file
  • Sostituire mystorageaccount con il nome dell'account di archiviazione BLOB
  • Sostituire mycontainer con il nome del contenitore
  • Sostituire la chiave dell'account di archiviazione con la chiave di accesso dell'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. Di seguito sono riportati esempi di comandi di 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 aver eseguito il comando AzCopy per copiare il file in un BLOB di Azure, il file verrà visualizzato in Archiviazione di Azure Explorer.

Screenshot che mostra l'account di archiviazione, che mostra il file CSV caricato.

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

È anche possibile caricare dati dal file locale nella macchina virtuale con Archiviazione di Azure Explorer:

  • Per caricare i dati in un contenitore, selezionare il contenitore di destinazione e selezionare il pulsante Carica .

    Screenshot che mostra il pulsante di caricamento in Archiviazione di Azure Explorer.

  • A destra della casella File selezionare i puntini di sospensione (...), selezionare uno o più file da caricare dal file system e selezionare Carica per iniziare a caricare i file.

    Screenshot che mostra la finestra di dialogo Carica file.

Leggere i dati dal Blob di Azure: ODBC Python

La libreria BlobService può leggere i dati direttamente da un BLOB che si trova in un notebook di Jupyter 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

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 che mostra le prime 10 righe di dati.

Azure Synapse Analytics e database

Azure Synapse Analytics è un data warehouse come servizio elastico, con un'esperienza SQL Server di livello aziendale. Questa risorsa descrive come effettuare il provisioning di Azure Synapse Analytics. Dopo aver effettuato il provisioning di Azure Synapse Analytics, questa procedura dettagliata illustra come gestire il caricamento, l'esplorazione e la modellazione dei dati usando i dati all'interno di Azure Synapse Analytics.

Azure Cosmos DB

Azure Cosmos DB è un database NoSQL basato sul cloud. Può gestire documenti JSON, ad esempio, e può archiviare ed eseguire query sui documenti. Questi passaggi di esempio illustrano come accedere ad Azure Cosmos DB dalla DSVM:

  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 dall'Area download Microsoft ed estrarlo in una directory di propria scelta.

  4. Importare i dati JSON (dati vulcano) archiviati in un BLOB pubblico in Azure Cosmos DB con i parametri di comando seguenti nello strumento di migrazione. (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 codice Python per accedere ad Azure Cosmos DB e gestire alcune query di base. Per altre informazioni su Azure Cosmos DB, vedere la pagina della documentazione del servizio Azure Cosmos DB.

Usare report e dashboard di Power BI

È possibile visualizzare il file JSON volcano descritto nell'esempio precedente di Azure Cosmos DB in Power BI Desktop per ottenere informazioni visive sui dati stessi. Questo articolo di Power BI offre passaggi dettagliati. Questi sono i passaggi, a livello generale:

  1. Aprire Power BI Desktop e selezionare Recupera dati. Specificare questo URL: https://cahandson.blob.core.windows.net/samples/volcano.json.
  2. I record JSON, importati come elenco, dovrebbero diventare visibili. Convertire l'elenco in una tabella, in modo che Power BI possa usarlo.
  3. Selezionare l'icona espandi (freccia) per espandere le colonne.
  4. La posizione è 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. Utilizzare la formula Text.From([coordinates]{1})&","&Text.From([coordinates]{0}) per concatenare i due elementi nel campo dell'elenco di coordinate.
  6. Convertire la colonna Elevazione in decimale e selezionare i pulsanti Chiudi e Applica .

È possibile usare il codice seguente come alternativa ai passaggi precedenti. Esegue lo script dei passaggi usati nella 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:

Screenshot che mostra l'istanza di Power BI Desktop.

È possibile iniziare a creare report e visualizzazioni con il modello di dati. Questo articolo di Power BI illustra come creare un report.

Ridimensionare la DSVM in modo dinamico

È possibile ridimensionare la DSVM in modo da soddisfare le esigenze del progetto. Se non è necessario usare la VM la sera o nei fine settimana, è sufficiente arrestarla dal portale di Azure.

Nota

I costi di calcolo vengono addebitati se si usa solo il pulsante di arresto per il sistema operativo nella macchina virtuale. È invece necessario deallocare la DSVM usando il portale di Azure o Cloud Shell.

Per un progetto di analisi su larga scala, potrebbe essere necessaria una maggiore capacità di CPU, memoria o disco. In tal caso, è possibile trovare macchine virtuali di diversi numeri di core CPU, capacità di memoria, tipi di disco (incluse unità ssd) e istanze basate su GPU per l'apprendimento avanzato che soddisfano le esigenze di calcolo e budget. La pagina dei prezzi di Azure Macchine virtuali mostra l'elenco completo delle macchine virtuali, insieme ai prezzi di calcolo orari.

Aggiungere altri strumenti

La DSVM offre strumenti predefiniti che possono soddisfare molte esigenze comuni di analisi dei dati. Consentono di risparmiare tempo perché non è necessario installare e configurare singolarmente gli ambienti. Consentono 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, potrebbe essere necessario altri strumenti, inclusi specifici strumenti di partner proprietari. Si dispone dell'accesso amministrativo completo nella macchina virtuale per installare gli strumenti necessari. È anche possibile installare altri pacchetti in Python e R che non sono 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 agli esempi basati su framework, è possibile ottenere un set di procedure dettagliate complete convalidate nella DSVM. Queste procedure dettagliate consentono di avviare rapidamente lo sviluppo di applicazioni di Deep Learning nei domini di analisi di immagini e testo/linguaggio.

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.