Ciência de Dados usando a Máquina Virtual de Ciência de Dados do Windows.

A Máquina Virtual de Ciência de Dados (DSVM) do Windows é um poderoso ambiente de desenvolvimento de ciência de dados, onde você pode executar tarefas de exploração e modelagem de dados. O ambiente já vem compilado e agrupado com várias ferramentas populares de análise de dados que facilitam o início de sua análise para implantações locais, na nuvem ou híbridas.

A DSVM trabalha junto com os serviços do Azure. Ela pode ler e processar dados que já estão armazenados no Azure, no Azure Synapse (anteriormente conhecido como SQL DW), Azure Data Lake, Armazenamento do Azure ou Azure Cosmos DB. Ela também aproveita outras ferramentas de análise, como o Azure Machine Learning.

Neste artigo, você aprenderá a usar sua DSVM para executar tarefas de ciência de dados e interagir com outros serviços do Azure. Veja algumas tarefas que você pode realizar na DSVM:

  • Usar um Notebook Jupyter para experimentar com seus dados em um navegador usando Python 2, Python 3 e Microsoft R. (Microsoft R é uma versão de R pronta para empresas desenvolvida para desempenho.)

  • Explorar dados e desenvolver modelos localmente na DSVM usando o Microsoft Machine Learning Server e Python.

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

  • Estender o espaço de armazenamento e compartilhar conjuntos de dados/códigos em grande escala com toda sua equipe criando um compartilhamento de Arquivos do Azure como uma unidade montável na DSVM.

  • Compartilhar código com sua equipe usando o GitHub. Acesse seu repositório usando os clientes Git pré-instalados: Git Bash e Git GUI.

  • Acesse os serviços de dados e análise do Azure, como armazenamento de Blob do Azure, Azure Cosmos DB, Azure Synapse (anteriormente conhecido como SQL DW) e Banco de Dados SQL do Azure.

  • Criar relatórios e painéis usando a instância do Power BI Desktop, que vem pré-instalado na DSVM e implantá-los na nuvem.

  • Instalar ferramentas adicionais na sua máquina virtual.

Observação

Encargos de uso adicionais se aplicam a muitos dos serviços de armazenamento e análise de dados listados neste artigo. Para obter detalhes, consulte a página de preços do Azure.

Pré-requisitos

Observação

Recomendamos que você use o módulo Az PowerShell do Azure para interagir com o Azure. Confira Instalar o Azure PowerShell para começar. Para saber como migrar para o módulo Az PowerShell, confira Migrar o Azure PowerShell do AzureRM para o Az.

Usar o Jupyter Notebooks

O Notebook Jupyter fornece um IDE baseado em navegador para exploração e modelagem de dados. Você pode usar Python 2, Python 3 ou R em um Jupyter Notebook.

Para iniciar o Jupyter Notebook, selecione o ícone Jupyter Notebook no menu Iniciar ou na área de trabalho. No prompt de comando DSVM, você também pode executar o comando jupyter notebook pelo diretório em que tiver blocos de anotações existentes ou onde você quiser criar novos blocos de anotações.

Depois de iniciar o Jupyter, navegue até o /notebooks diretório para obter exemplos de blocos de anotações predefinidos na DSVM. Agora você pode:

  • Selecionar o notebook para exibir o código.
  • Execute cada célula selecionando Shift+Enter.
  • Executar o notebook inteiro selecionando Célula>Executar.
  • Criar um novo notebook selecionando o ícone Jupyter (canto superior esquerdo), selecionando o botão Novo à direita e escolhendo a linguagem do notebook (também conhecida como kernels).

Observação

Atualmente há suporte para kernels Python 2.7, Python 3.6, R, Julia e PySpark no Jupyter. O kernel R dá suporte à programação no R de software livre e no Microsoft R.

Uma vez no notebook, você pode explorar seus dados, criar o modelo e testar o modelo usando suas bibliotecas escolhidas.

Explore dados e desenvolva modelos com o Microsoft Machine Learning Server

Observação

O suporte para Machine Learning Server autônomo terminará em 1º de julho de 2021. Vamos removê-lo das imagens DSVM após 30 de junho. As implantações existentes continuarão a ter acesso ao software, mas não haverá suporte para ele após 1º de julho de 2021 devido à chegada da data de término de suporte.

Você pode usar linguagens como R e Python para fazer a análise de dados diretamente na DSVM.

Para R, você pode usar Ferramentas do R para Visual Studio. A Microsoft forneceu bibliotecas adicionais sobre o open source CRAN-R para permitir a análise escalonável e a capacidade de analisar dados maiores que o tamanho da memória permitido em análise paralela em partes.

Para Python, você pode usar um IDE como o Visual Studio Community Edition, que tem a extensão PTVS (Ferramentas Python para Visual Studio) pré-instalada. Por padrão, somente o Python 3.6, o ambiente do Conda raiz, é configurado em PTVS. Para habilitar o Anaconda Python 2.7, siga as seguintes etapas:

  1. Crie ambientes personalizados para cada versão acessando Ferramentas>Ferramentas Python>Ambientes Python e selecionando + Personalizado no Visual Studio Community Edition.
  2. Forneça uma descrição e defina o caminho de prefixo do ambiente como c:\anaconda\envs\python2 para o Anaconda Python 2.7.
  3. Selecione Detecção Automática>Aplicar para salvar o ambiente.

Confira a documentação do PTVS para obter mais detalhes sobre como criar os ambientes Python.

Agora você está pronto para criar um novo projeto em Python. Acesse Arquivo>Novo>Projeto>Python e selecione o tipo de aplicativo Python que você está criando. Você pode definir o ambiente do Python para o projeto atual na versão desejada (Python 2.7 ou 3.6) clicando com o botão direito do mouse em Ambientes Python, e, em seguida, selecionando Adicionar/Remover Ambientes Python. É possível encontrar mais informações sobre como trabalhar com PTVS na documentação do produto.

Gerenciar recursos do Azure

A DSVM não permite apenas que você crie sua solução de análise localmente na máquina virtual. Ela também permite que você acesse serviços na plataforma de nuvem do Azure. O Azure fornece vários serviços de análise de dados, armazenamento e computação, além de outros serviços que você pode administrar e acessar da DSVM.

Você tem duas opções para administrar seus recursos de nuvem e sua assinatura do Azure:

Amplie o armazenamento usando sistemas de arquivos compartilhados

Os cientistas de dados podem compartilhar grandes conjuntos de dados, códigos ou outros recursos dentro da equipe. O DSVM tem cerca de 45 GB de espaço disponível. Para aumentar o armazenamento, você pode usar os Arquivos do Azure e montá-los em uma ou mais instâncias do DSVM ou acessá-los por meio da API REST. Você também pode usar portal do Azure ou usar o Azure PowerShell para adicionar discos de dados extras dedicados.

Observação

O espaço máximo no compartilhamento de arquivos do Azure é de 5 TB. O limite de tamanho para cada arquivo é de 1 TB.

Você pode usar esse script no Azure PowerShell para criar um Compartilhamento de Arquivos 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 você criou um compartilhamento de Arquivos do Azure, é possível montá-lo em qualquer máquina virtual no Azure. Nós recomendamos que você insira a VM no mesmo datacenter do Azure que a conta de armazenamento para evitar latência e cobranças por transferência de dados. Aqui estão os comandos do 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, você pode acessar essa unidade como faria com qualquer unidade normal na VM.

Compartilhe o código no GitHub

O GitHub é um repositório de códigos onde você pode encontrar fontes e códigos de exemplo para diversas ferramentas usando tecnologias compartilhadas pela comunidade de desenvolvedores. Ele usa Git como a tecnologia para rastrear e armazenar versões dos arquivos de código. O GitHub também é uma plataforma em que você pode criar seu próprio repositório para armazenar o código compartilhado e a documentação da sua equipe, implementar o controle de versão e controlar quem tem acesso para exibir e contribuir com código.

Visite as páginas de ajuda do GitHub para obter mais informações sobre como usar o Git. Você pode usar o GitHub como uma das formas de colaborar com sua equipe, usar o código desenvolvido pela comunidade e retribuir com código na comunidade.

A DSVM vem carregada com ferramentas cliente na linha de comando e na GUI para acessar o repositório do GitHub. A ferramenta de linha de comando que funciona com Git e GitHub é chamada Git Bash. O Visual Studio está instalado na DSVM e tem as extensões de Git. Você pode encontrar ícones para essas ferramentas no menu Iniciar e na área de trabalho.

Para baixar o código de um repositório GitHub, você usa o comando git clone. Por exemplo, para baixar o repositório de ciência de dados publicado pela Microsoft no diretório atual, você pode executar o comando a seguir no Git Bash:

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

No Visual Studio, você pode fazer a mesma operação de clonagem. A seguinte captura de tela mostra como acessar as ferramentas Git e GitHub no Visual Studio:

Captura de tela do Visual Studio com a conexão do GitHub exibida

Encontre mais informações sobre como usar Git para trabalhar com o repositório GitHub nos recursos disponíveis em github.com. O roteiro é uma referência útil.

Acessar serviços de análise e dados do Azure

Armazenamento de Blobs do Azure

O armazenamento de Blob do Azure é um serviço de armazenamento em nuvem confiável e econômico para pequenos e grandes volumes de dados. Essa seção descreve como você pode mover os dados para o armazenamento de Blob e acessar os dados armazenados em um blob do Azure.

Pré-requisitos

  • Crie sua conta de Armazenamento de Blobs do Azure no portal do Azure.

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

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

  • Inicie o Gerenciador de Armazenamento do Azure. Ele pode ser baixado na página da Web do Gerenciador de Armazenamento.

    Captura de tela do Gerenciador de Armazenamento do Azure acessando uma conta de armazenamento

Mover dados da VM para o blob do Azure: AzCopy

Para mover dados entre seus arquivos locais e o armazenamento de Blob, você pode usar AzCopy na linha de comando ou no PowerShell:

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

Substitua C:\minhapasta pelo caminho em que seu arquivo está armazenado, minhacontadearmazenamento pelo nome da conta do armazenamento de Blob, meucontêiner pelo nome do contêiner, e a chave da conta de armazenamento pela sua chave de acesso de armazenamento de Blob. Você pode encontrar as credenciais da conta de armazenamento no portal do Azure.

Execute o comando AzCopy no PowerShell ou em um prompt de comando. Veja um exemplo de uso 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 um blob do Azure, seu arquivo aparecerá no Gerenciador de Armazenamento do Azure.

Captura de tela da conta de armazenamento, exibindo o arquivo CSV carregado

Mover dados da VM para o blob do Azure: Gerenciador de Armazenamento do Azure

Você também pode carregar dados do arquivo local na VM usando o Gerenciador de Armazenamento do Azure:

  • Para carregar dados em um contêiner, selecione o contêiner de destino e selecione o botão Carregar.Screenshot of the upload button in Azure Storage Explorer
  • Selecione as reticências (...) à direita da caixa Arquivos, selecione um ou vários arquivos para carregar no sistema de arquivos e selecione Carregar para começar a carregar os arquivos.Screenshot of the Upload files dialog box

Ler dados do blob do Azure: ODBC do Python

Você pode usar a biblioteca do BlobService para ler dados diretamente do blob em um Notebook Jupyter ou em um 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, conecte suas credenciais da conta de armazenamento do Blob e leia os dados no 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 em um quadro de dados:

Captura de tela das primeiras 10 linhas de dados

Azure Synapse Analytics e banco de dados

O Azure Synapse Analytics é um data warehouse elástico como um serviço, com experiência em SQL Server de nível corporativo.

Você pode provisionar o Azure Synapse Analytics seguindo as instruções neste artigo. Após provisionar o Azure Synapse Analytics, você poderá usar este passo a passo para carregar, explorar e modelar dados usando os dados do Azure Synapse Analytics.

Azure Cosmos DB

O Azure Cosmos DB é um banco de dados NoSQL na nuvem. Você pode usá-lo para trabalhar com documentos como JSON, e para armazenar e consultar os documentos.

Use as seguintes etapas de pré-requisito para acessar o Azure Cosmos DB na DSVM:

  1. O SDK de Python do Azure Cosmos DB já está instalado no DSVM. Para atualizá-lo, execute pip install pydocumentdb --upgrade a partir de um prompt de comando.

  2. Criar uma conta do Azure Cosmos DB e um banco de dados no Portal do Azure.

  3. Baixe a Ferramenta de Migração de Dados do Cosmos DB do Azure do Centro de Download da Microsoft e extraia para um diretório de sua escolha.

  4. Importe dados JSON (dados do vulcão) armazenados em um blob público para o Azure Cosmos DB com os seguintes parâmetros de comando para a ferramenta de migração. (Use dtui.exe no diretório em que você instalou a Ferramenta de Migração de Dados do Azure Cosmos DB.) Insira o local 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, você pode acessar o Jupyter e abrir o notebook denominado DocumentDBSample. Ele contém o código Python para acessar o Azure Cosmos DB e fazer algumas consultas básicas. Você pode aprender mais sobre o Azure Cosmos DB acessando a página de documentação do serviço.

Use relatórios e dashboards do Power BI

Visualize o arquivo JSON Volcano do exemplo anterior do Azure Cosmos DB no Power BI Desktop para obter informações visuais dos dados. As etapas detalhadas estão disponíveis no artigo sobre o Power BI. Aqui estão as etapas de alto nível:

  1. Abra o Power BI Desktop e selecione Obter dados. Especifique a URL como: https://cahandson.blob.core.windows.net/samples/volcano.json.
  2. Você deverá ver os registros JSON importados como uma lista. Converta a lista em uma tabela para que o Power BI possa trabalhar com ela.
  3. Expanda as colunas selecionando o ícone expandir (seta).
  4. Perceba que o local é um campo Registro. Expanda o registro e selecione apenas as coordenadas. A Coordenada é uma coluna de lista.
  5. Adicione uma nova coluna para converter a coluna de coordenadas da lista em uma coluna LatLong separada por vírgulas. Concatene os dois elementos no campo lista de coordenadas usando 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.

Ao invés de seguir as etapas acima, você pode colar o código abaixo. Ele cria o script com base nas etapas usadas no Editor Avançado no Power BI para escrever as transformações de dados em uma 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 você tem os dados no modelo de dados do Power BI. A instância da Área de Trabalho do Power BI deve aparecer da seguinte maneira:

Power BI Desktop

É possível iniciar a criação de relatórios e as visualizações usando o modelo de dados. Você pode executar as etapas deste artigo sobre o Power BI para criar um relatório.

Ajustar a escala da DSVM dinamicamente

Você pode escalar verticalmente a DSVM para atender às necessidades do seu projeto. Se você não precisar usar a VM à noite ou nos fins de semana, desligue-a no portal do Azure.

Observação

Você incorrerá em cobranças de computação se usar apenas o botão de desligamento do sistema operacional na VM. Em vez disso, você deve desalocar sua DSVM usando o portal do Azure ou Cloud Shell.

Você pode precisar lidar com análise em grande escala e precisar de maior capacidade de CPU, memória ou disco. Se este for o caso, você encontrará mais opções de tamanhos de VM em termos de núcleos de CPU, instâncias baseadas em GPU para aprendizado profundo, capacidade de memória e tipos de disco (incluindo unidades de estado sólido) que atendam às suas necessidades de computação e orçamento. A lista completa de VMs e seus preços de computação por hora estão disponíveis na página Preço de Máquinas Virtuais do Azure.

Adicionar mais ferramentas

As ferramentas predefinidas na DSVM podem atender a muitas necessidades comuns de análise de dados. Isso poupa tempo pois você não precisa instalar e configurar seus ambientes individualmente. Isso também economiza dinheiro, pois você paga apenas pelos recursos que usa.

Utilize outros serviços de análise e dados do Azure listados neste artigo para aprimorar seu ambiente de análise. Em alguns casos, você pode precisar de ferramentas adicionais, incluindo algumas ferramentas patenteadas de parceiros. Você tem acesso administrativo completo na máquina virtual para instalar novas ferramentas necessárias. Também é possível instalar pacotes adicionais no Python e no R que não foram pré-instalados. Para Python, você pode usar conda ou pip. Para R, você pode usar o install.packages() no console do R ou usar o IDE e selecionar Pacotes>Instalar Pacotes.

Aprendizado

Além dos exemplos baseados na estrutura, você também pode obter um conjunto de orientações passo a passo abrangentes que foram validados na DSVM. Essas orientações passo a passo ajudam a iniciar o desenvolvimento de aplicativos de aprendizagem profunda em domínios como reconhecimento vocal/texto e imagem.

  • Executando redes neurais em estruturas diferentes: este passo a passo mostra como migrar o código de uma estrutura para outra. Ele também demonstra como comparar o desempenho dos modelos e do runtime entre estruturas.

  • Um guia de instruções para criar uma solução de ponta a ponta para detectar produtos em imagens: a detecção de imagem é uma técnica que pode localizar e classificar objetos em imagens. Essa tecnologia tem o potencial de trazer grande recompensa em vários domínios de negócios da vida real. Por exemplo, os varejistas podem usar essa técnica para determinar qual produto um cliente retirou da prateleira. Por sua vez, essas informações ajudam as lojas a gerenciar o estoque do produtos.

  • Aprendizado profundo para áudio: Este tutorial mostra como treinar um modelo de aprendizado profundo para detecção de eventos no conjunto de dados de sons urbanos. Ele também fornece uma visão geral de como trabalhar com dados de áudio.

  • Classificação de documentos de texto: esse passo a passo demonstra como compilar e treinar duas arquiteturas de redes neurais: Rede de Atenção Hierárquica e rede LSTM (Memória Longa de Curto Prazo). Essas redes neurais usam a API Keras para aprendizagem profunda para classificar documentos de texto.

Resumo

Este artigo descreveu algumas das coisas que você pode fazer na Máquina Virtual de Ciência de Dados da Microsoft. Há muito mais coisas que você fazer para tornar o DSVM um ambiente eficaz de análise.