Ciência de dados com um windows Máquina Virtual de Ciência de Dados

O Windows Máquina Virtual de Ciência de Dados (DSVM) é um poderoso ambiente de desenvolvimento de ciência de dados onde pode realizar tarefas de exploração e modelação de dados. O ambiente já vem criado e agrupado com várias ferramentas de análise de dados populares que facilitam a introdução à sua análise para implementações no local, na cloud ou híbridas.

A DSVM funciona em estreita colaboração com os serviços do Azure. Pode ler e processar dados já armazenados no Azure, em Azure Synapse (anteriormente SQL DW), Azure Data Lake, Armazenamento do Azure ou Azure Cosmos DB. Também pode tirar partido de outras ferramentas de análise, como o Azure Machine Learning.

Neste artigo, irá aprender a utilizar a sua DSVM para realizar tarefas de ciência de dados e interagir com outros serviços do Azure. Eis algumas das coisas que pode fazer na DSVM:

  • Utilize um Jupyter Notebook para experimentar os seus dados num browser com o Python 2, Python 3 e Microsoft R. (O Microsoft R é uma versão pronta para empresas do R concebida para o desempenho.)

  • Explore os dados e desenvolva modelos localmente na DSVM com Microsoft Machine Learning Server e Python.

  • Administrar os recursos do Azure com o portal do Azure ou o PowerShell.

  • Expanda o seu espaço de armazenamento e partilhe conjuntos de dados/código em grande escala em toda a sua equipa ao criar uma partilha Ficheiros do Azure como uma unidade montável na sua DSVM.

  • Partilhe código com a sua equipa com o GitHub. Aceda ao seu repositório com os clientes Git pré-instalados: Git Bash e GIT GUI.

  • Aceda a serviços de análise e dados do Azure, como o Armazenamento de Blobs do Azure, o Azure Cosmos DB, Azure Synapse (anteriormente SQL DW) e a Base de Dados SQL do Azure.

  • Crie relatórios e um dashboard com a instância Power BI Desktop pré-instalada na DSVM e implemente-os na cloud.

  • Instale ferramentas adicionais na sua máquina virtual.

Nota

Aplicam-se custos de utilização adicionais para muitos dos serviços de armazenamento e análise de dados listados neste artigo. Para obter detalhes, veja a página de preços do Azure .

Pré-requisitos

Nota

Recomendamos que utilize o módulo do Azure Az PowerShell para interagir com o Azure. Veja Instalar o Azure PowerShell para começar. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.

Utilizar Blocos de Notas do Jupyter

O Jupyter Notebook fornece um IDE baseado no browser para exploração e modelação de dados. Pode utilizar o Python 2, Python 3 ou R num Jupyter Notebook.

Para iniciar a Jupyter Notebook, selecione o ícone Jupyter Notebook no menu Iniciar ou no ambiente de trabalho. Na linha de comandos DSVM, também pode executar o comando jupyter notebook a partir do diretório onde tem blocos de notas existentes ou onde pretende criar novos blocos de notas.

Depois de iniciar o Jupyter, navegue para o /notebooks diretório, por exemplo, blocos de notas pré-empacotados na DSVM. Agora pode:

  • Selecione o bloco de notas para ver o código.
  • Execute cada célula ao selecionar Shift+Enter.
  • Execute todo o bloco de notas ao selecionarExecução de Células>.
  • Crie um novo bloco de notas selecionando o ícone do Jupyter (canto superior esquerdo), selecionando o botão Novo à direita e, em seguida, escolhendo o idioma do bloco de notas (também conhecido como kernels).

Nota

Atualmente, os kernels Python 2.7, Python 3.6, R, Julia e PySpark no Jupyter são suportados. O kernel R suporta a programação no R open source e no Microsoft R.

Quando estiver no bloco de notas, pode explorar os seus dados, criar o modelo e testar o modelo com a sua escolha de bibliotecas.

Explorar dados e desenvolver modelos com Microsoft Machine Learning Server

Nota

O suporte para Machine Learning Server Autónomo terminará a 1 de julho de 2021. Vamos removê-lo das imagens da DSVM após 30 de junho. As implementações existentes continuarão a ter acesso ao software, mas devido à data de fim do suporte alcançada, não haverá suporte para o mesmo após 1 de julho de 2021.

Pode utilizar idiomas como R e Python para efetuar a análise de dados diretamente na DSVM.

Para R, pode utilizar as Ferramentas R para Visual Studio. A Microsoft forneceu bibliotecas adicionais sobre o CRAN R open source para permitir a análise dimensionável e a capacidade de analisar dados maiores do que o tamanho da memória permitido em análises em segmentos paralelos.

Para Python, pode utilizar um IDE como o Visual Studio Community Edition, que tem a extensão Python Tools for Visual Studio (PTVS) pré-instalada. Por predefinição, apenas o Python 3.6, o ambiente conda de raiz, está configurado em PTVS. Para ativar o Anaconda Python 2.7, siga os seguintes passos:

  1. Crie ambientes personalizados para cada versão acedendo a Ferramentas>Ferramentas>python Ambientes python e, em seguida, selecionando + Personalizado no Visual Studio Community Edition.
  2. Atribua uma descrição e defina o caminho do prefixo de ambiente como c:\anaconda\envs\python2 para Anaconda Python 2.7.
  3. Selecione Detetar Automaticamente>Aplicar para guardar o ambiente.

Veja a documentação da PTVS para obter mais detalhes sobre como criar ambientes Python.

Agora, está configurado para criar um novo projeto Python. Aceda a Ficheiro>Novo>Projeto>Python e selecione o tipo de aplicação Python que está a criar. Pode definir o ambiente python para o projeto atual para a versão pretendida (Python 2.7 ou 3.6) ao clicar com o botão direito do rato em ambientes Python e, em seguida, selecionar Adicionar/Remover Ambientes Python. Pode encontrar mais informações sobre como trabalhar com PTVS na documentação do produto.

Gerir os recursos do Azure

A DSVM não lhe permite apenas criar a sua solução de análise localmente na máquina virtual. Também lhe permite aceder a serviços na plataforma cloud do Azure. O Azure fornece vários serviços de computação, armazenamento, análise de dados e outros serviços que pode administrar e aceder a partir da sua DSVM.

Para administrar a subscrição do Azure e os recursos da cloud, tem duas opções:

Expandir o armazenamento com sistemas de ficheiros partilhados

Os cientistas de dados podem partilhar grandes conjuntos de dados, código ou outros recursos dentro da equipa. A DSVM tem cerca de 45 GB de espaço disponível. Para expandir o armazenamento, pode utilizar Ficheiros do Azure e montá-lo numa ou mais instâncias de DSVM ou aceder ao mesmo através de uma API REST. Também pode utilizar o portal do Azure ou utilizar Azure PowerShell para adicionar discos de dados dedicados adicionais.

Nota

O espaço máximo na partilha de Ficheiros do Azure é de 5 TB. O limite de tamanho para cada ficheiro é de 1 TB.

Pode utilizar este script no Azure PowerShell para criar uma partilha de Ficheiros do 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

Agora que criou uma partilha Ficheiros do Azure, pode montá-la em qualquer máquina virtual no Azure. Recomendamos que coloque a VM no mesmo datacenter do Azure que a conta de armazenamento, para evitar custos de latência e transferência de dados. Eis os comandos Azure PowerShell para montar a unidade na 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>>

Agora, pode aceder a esta unidade como faria com qualquer unidade normal na VM.

Partilhar código no GitHub

O GitHub é um repositório de código onde pode encontrar exemplos de código e origens para várias ferramentas através de tecnologias partilhadas pela comunidade de programadores. Utiliza o Git como tecnologia para controlar e armazenar versões dos ficheiros de código. O GitHub também é uma plataforma onde pode criar o seu próprio repositório para armazenar o código e a documentação partilhados da sua equipa, implementar o controlo de versões e controlar quem tem acesso para ver e contribuir com código.

Visite as páginas de ajuda do GitHub para obter mais informações sobre como utilizar o Git. Pode utilizar o GitHub como uma das formas de colaborar com a sua equipa, utilizar código desenvolvido pela comunidade e contribuir com código de volta para a comunidade.

A DSVM é carregada com ferramentas de cliente na linha de comandos e na GUI para aceder ao repositório do GitHub. A ferramenta de linha de comandos que funciona com o Git e o GitHub chama-se Git Bash. O Visual Studio está instalado na DSVM e tem as extensões do Git. Pode encontrar ícones para estas ferramentas no menu Iniciar e no ambiente de trabalho.

Para transferir código de um repositório do GitHub, utilize o git clone comando . Por exemplo, para transferir o repositório de ciência de dados publicado pela Microsoft para o diretório atual, pode executar o seguinte comando no Git Bash:

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

No Visual Studio, pode efetuar a mesma operação de clone. A captura de ecrã seguinte mostra como aceder às ferramentas do Git e do GitHub no Visual Studio:

Captura de ecrã do Visual Studio com a ligação do GitHub apresentada

Pode encontrar mais informações sobre como utilizar o Git para trabalhar com o seu repositório do GitHub a partir de recursos disponíveis no github.com. A folha de truques fraudulentos é uma referência útil.

Aceder aos serviços de dados e análise do Azure

Armazenamento de Blobs do Azure

O armazenamento de Blobs do Azure é um serviço de armazenamento na cloud fiável e económico para macrodados de dados e pequenos. Esta secção descreve como pode mover dados para o Armazenamento de blobs e aceder aos dados armazenados num blob do Azure.

Pré-requisitos

  • Crie a sua conta de armazenamento de Blobs do Azure a partir do portal do Azure.

    Captura de ecrã do processo de criação da conta de armazenamento no portal do Azure

  • Confirme que a ferramenta AzCopy da linha de comandos está pré-instalada: C:\Program Files (x86)\Microsoft SDKs\Azure\AzCopy\azcopy.exe. O diretório que contém azcopy.exe já se encontra na variável de ambiente PATH, pelo que pode evitar escrever o caminho de comando completo ao executar esta ferramenta. Para obter mais informações sobre a ferramenta AzCopy, veja a documentação do AzCopy.

  • Inicie a ferramenta Explorador de Armazenamento do Azure. Pode transferi-lo a partir da página Web Explorador de Armazenamento.

    Captura de ecrã a mostrar Explorador de Armazenamento do Azure a aceder a uma conta de armazenamento

Mover dados de uma VM para um blob do Azure: AzCopy

Para mover dados entre os ficheiros locais e o armazenamento de Blobs, pode utilizar o AzCopy na linha de comandos ou no PowerShell:

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

Substitua C:\myfolder pelo caminho onde o seu ficheiro está armazenado, mystorageaccount pelo nome da conta de armazenamento de Blobs, mycontainer pelo nome do contentor e chave da conta de armazenamento pela chave de acesso do Armazenamento de blobs. Pode encontrar as credenciais da conta de armazenamento no portal do Azure.

Execute o comando AzCopy no PowerShell ou a partir de uma linha de comandos. Eis alguns exemplos de utilização do 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

Depois de executar o comando AzCopy para copiar para um blob do Azure, o ficheiro será apresentado no Explorador de Armazenamento do Azure.

Captura de ecrã da conta de armazenamento a apresentar o ficheiro CSV carregado

Mover dados de uma VM para um blob do Azure: Explorador de Armazenamento do Azure

Também pode carregar dados do ficheiro local na sua VM com Explorador de Armazenamento do Azure:

  • Para carregar dados para um contentor, selecione o contentor de destino e selecione o botão Carregar. Captura de ecrã a mostrar o botão de carregamento no Explorador de Armazenamento do Azure
  • Selecione as reticências (...) à direita da caixa Ficheiros , selecione um ou vários ficheiros para carregar a partir do sistema de ficheiros e selecione Carregar para começar a carregar os ficheiros. Captura de ecrã da caixa de diálogo Carregar ficheiros

Ler dados de um blob do Azure: Python ODBC

Pode utilizar a biblioteca BlobService para ler dados diretamente a partir de um blob num Jupyter Notebook ou num programa Python.

Primeiro, importe os pacotes necessários:

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

Em seguida, ligue as credenciais da conta de armazenamento de Blobs e leia os dados do 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

Os dados são lidos como uma moldura de dados:

Captura de ecrã das primeiras 10 linhas de dados

Azure Synapse Analytics e bases de dados

Azure Synapse Analytics é um armazém de dados elástico como um serviço com uma experiência de SQL Server de classe empresarial.

Pode aprovisionar Azure Synapse Analytics ao seguir as instruções neste artigo. Depois de aprovisionar o Azure Synapse Analytics, pode utilizar estas instruções para efetuar o carregamento, exploração e modelação de dados com dados no Azure Synapse Analytics.

Azure Cosmos DB

O Azure Cosmos DB é uma base de dados NoSQL na cloud. Pode utilizá-lo para trabalhar com documentos como JSON e para armazenar e consultar os documentos.

Utilize os seguintes passos de pré-requisito para aceder ao Azure Cosmos DB a partir da DSVM:

  1. O SDK Python do Azure Cosmos DB já está instalado na DSVM. Para atualizá-la, execute pip install pydocumentdb --upgrade a partir de uma linha de comandos.

  2. Crie uma conta e base de dados do Azure Cosmos DB a partir do portal do Azure.

  3. Transfira a Ferramenta de Migração de Dados do Azure Cosmos DB a partir do Centro de Transferências da Microsoft e extraia para um diretório à sua escolha.

  4. Importe dados JSON (dados do vulcão) armazenados num blob público para o Azure Cosmos DB com os seguintes parâmetros de comando para a ferramenta de migração. (Utilize dtui.exe do diretório onde instalou a Ferramenta de Migração de Dados do Azure Cosmos DB.) Introduza a localização de origem e destino com estes parâmetros:

    /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

Depois de importar os dados, pode aceder ao Jupyter e abrir o bloco de notas intitulado DocumentDBSample. Contém código Python para aceder ao Azure Cosmos DB e fazer algumas consultas básicas. Pode saber mais sobre o Azure Cosmos DB ao visitar a página de documentação do serviço.

Utilizar relatórios e dashboards do Power BI

Pode visualizar o ficheiro JSON do Vulcão a partir do exemplo anterior do Azure Cosmos DB em Power BI Desktop para obter informações visuais sobre os dados. Estão disponíveis passos detalhados no artigo do Power BI. Eis os passos de alto nível:

  1. Abra o Power BI Desktop e selecione Obter Dados. Especifique o URL como: https://cahandson.blob.core.windows.net/samples/volcano.json.
  2. Deverá ver os registos JSON importados como uma lista. Converta a lista numa tabela para que o Power BI possa trabalhar com a mesma.
  3. Expanda as colunas ao selecionar o ícone expandir (seta).
  4. Repare que a localização é um campo Registo . Expanda o registo e selecione apenas as coordenadas. Coordenada é uma coluna de lista.
  5. Adicione uma nova coluna para converter a coluna coordenada da lista numa coluna LatLong separada por vírgulas. Concatene os dois elementos no campo de lista de coordenadas com a fórmula Text.From([coordinates]{1})&","&Text.From([coordinates]{0}).
  6. Converta a coluna Elevação em decimal e selecione os botões Fechar e Aplicar .

Em vez de passos anteriores, pode colar o seguinte código. Apresenta os passos utilizados no Editor Avançado no Power BI para escrever as transformações de dados numa linguagem de consulta.

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"

Agora tem os dados no modelo de dados do Power BI. A instância Power BI Desktop deverá aparecer da seguinte forma:

Power BI Desktop

Pode começar a criar relatórios e visualizações com o modelo de dados. Pode seguir os passos neste artigo do Power BI para criar um relatório.

Dimensionar dinamicamente a DSVM

Pode aumentar e reduzir verticalmente a DSVM para satisfazer as necessidades do projeto. Se não precisar de utilizar a VM à noite ou aos fins-de-semana, pode encerrar a VM a partir do portal do Azure.

Nota

Incorre em custos de computação se utilizar apenas o botão de encerramento do sistema operativo na VM. Em vez disso, deve desalocar a DSVM com o portal do Azure ou Cloud Shell.

Poderá ter de lidar com algumas análises em grande escala e precisar de mais capacidade de CPU, memória ou disco. Se assim for, pode encontrar uma escolha de tamanhos de VM em termos de núcleos de CPU, instâncias baseadas em GPU para aprendizagem profunda, capacidade de memória e tipos de disco (incluindo unidades de estado sólido) que satisfaçam as suas necessidades orçamentais e de computação. A lista completa de VMs, juntamente com os preços de computação por hora, está disponível na página de preços do Azure Máquinas Virtuais.

Adicionar mais ferramentas

As ferramentas pré-criadas na DSVM podem responder a muitas necessidades comuns de análise de dados. Isto poupa-lhe tempo porque não tem de instalar e configurar os seus ambientes um a um. Também lhe poupa dinheiro, uma vez que paga apenas os recursos que utiliza.

Pode utilizar outros serviços de análise e dados do Azure criados neste artigo para melhorar o seu ambiente de análise. Em alguns casos, poderá precisar de ferramentas adicionais, incluindo algumas ferramentas de parceiro proprietárias. Tem acesso administrativo total na máquina virtual para instalar as novas ferramentas de que precisa. Também pode instalar pacotes adicionais em Python e R que não estejam pré-instalados. Para Python, pode utilizar ou condapip. Para R, pode utilizar install.packages() na consola R ou utilizar o IDE e selecionar Pacotes>Instalar Pacotes.

Aprendizagem aprofundada

Além dos exemplos baseados na arquitetura, pode obter um conjunto de instruções abrangentes que foram validadas na DSVM. Estas instruções ajudam-no a iniciar o desenvolvimento de aplicações de aprendizagem profunda em domínios como a compreensão da imagem e do texto/idioma.

  • Executar redes neurais em diferentes arquiteturas: estas instruções mostram como migrar código de uma arquitetura para outra. Também demonstra como comparar modelos e desempenho de runtime entre arquiteturas.

  • Um guia de procedimentos para criar uma solução ponto a ponto para detetar produtos em imagens: a deteção de imagens é uma técnica que pode localizar e classificar objetos dentro das imagens. Esta tecnologia tem o potencial de trazer enormes recompensas em muitos domínios empresariais da vida real. Por exemplo, os revendedores podem utilizar esta técnica para determinar que produto um cliente recolheu da prateleira. Estas informações, por sua vez, ajudam os arquivos a gerir o inventário de produtos.

  • Aprendizagem profunda para áudio: este tutorial mostra como preparar um modelo de aprendizagem profunda para a deteção de eventos de áudio no conjunto de dados de sons urbanos. Também fornece uma descrição geral de como trabalhar com dados de áudio.

  • Classificação de documentos de texto: estas instruções demonstram como criar e preparar duas arquiteturas de rede neural: Rede de Atenção Hierárquica e Rede de Memória de Longo Prazo (LSTM). Estas redes neurais utilizam a API Keras para aprendizagem profunda para classificar documentos de texto.

Resumo

Este artigo descreveu algumas das coisas que pode fazer no Microsoft Máquina Virtual de Ciência de Dados. Existem muitas outras coisas que pode fazer para tornar a DSVM num ambiente de análise eficaz.