Ciência de dados com uma máquina virtual de ciência de dados do Windows
A DSVM (Windows Data Science Virtual Machine) é um poderoso ambiente de desenvolvimento de ciência de dados que oferece suporte a tarefas de exploração e modelagem de dados. O ambiente vem pré-construído e pré-empacotado com várias ferramentas populares de análise de dados que facilitam o início da análise para implantações locais, na nuvem ou híbridas.
A DSVM trabalha em estreita colaboração com os serviços do Azure. Ele pode ler e processar dados já armazenados no Azure, no Azure Synapse (anteriormente SQL DW), Azure Data Lake, Azure Storage ou Azure Cosmos DB. Também pode tirar partido de outras ferramentas de análise, como o Azure Machine Learning.
Neste artigo, você aprenderá a usar sua DSVM para lidar com tarefas de ciência de dados e interagir com outros serviços do Azure. Este é um exemplo de tarefas que a DSVM pode cobrir:
- Use um Jupyter Notebook para experimentar seus dados em um navegador, usando Python 2, Python 3 e Microsoft R. (O Microsoft R é uma versão pronta para empresas do R projetada para alto desempenho.)
- Explore dados e desenvolva modelos localmente na DSVM, usando o Microsoft Machine Learning Server e o Python.
- Administre seus recursos do Azure usando o portal do Azure ou o PowerShell.
- Estenda seu espaço de armazenamento e compartilhe conjuntos de dados/código em grande escala em toda a sua equipe, com um compartilhamento de Arquivos do Azure como uma unidade montável em sua DSVM.
- Compartilhe código com sua equipe com o GitHub. Acesse seu repositório com os clientes Git pré-instalados: Git Bash e Git GUI.
- Aceda aos serviços de dados e análise do Azure:
- Armazenamento de Blobs do Azure
- BD do Cosmos para o Azure
- Azure Synapse (anteriormente SQL DW)
- Base de Dados SQL do Azure
- Crie relatórios e um painel com a instância do Power BI Desktop - pré-instalada na DSVM - e implante-os na nuvem.
- Instale mais ferramentas em sua máquina virtual.
Nota
Aplicam-se taxas de utilização adicionais a muitos dos serviços de armazenamento e análise de dados listados neste artigo. Para mais informações, visite a página de preços do Azure.
Pré-requisitos
- Uma subscrição do Azure. Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.
- Uma DSVM provisionada no portal do Azure. Para obter mais informações, visite o recurso Criando uma máquina virtual.
Nota
Recomendamos que utilize o módulo Azure Az do PowerShell para interagir com o Azure. Para começar, consulte Instalar o Azure PowerShell. 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 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 da DSVM, você também pode executar o comando jupyter notebook
a partir do diretório que hospeda blocos de anotações existentes ou onde deseja criar novos blocos de anotações.
Depois de iniciar o Jupyter, navegue até o /notebooks
diretório. Este diretório hospeda blocos de anotações de exemplo que são pré-empacotados na DSVM. Pode:
- Selecione o bloco de anotações para ver o código.
- Selecione Shift+Enter para executar cada célula.
- Selecione Executar célula>para executar todo o bloco de anotações.
- Criar um novo bloco de notas; selecione o ícone Jupyter (canto superior esquerdo), selecione o botão Novo e, em seguida, escolha o idioma do bloco de notas (também conhecido como kernels).
Nota
Neste momento, os kernels Python 2.7, Python 3.6, R, Julia e PySpark no Jupyter são suportados. O kernel R suporta programação em código aberto R e Microsoft R. No bloco de anotações, você pode explorar seus dados, criar seu modelo e testá-lo com suas bibliotecas escolhidas.
Explore dados e desenvolva modelos com o Microsoft Machine Learning Server
Nota
O suporte para Machine Learning Server Standalone terminou em 1º de julho de 2021. Nós o removemos das imagens da DSVM após 30 de junho de 2021. As implantações existentes ainda podem acessar o software, mas o suporte terminou após 1º de julho de 2021.
Você pode usar R e Python para sua análise de dados diretamente na DSVM.
Para R, você pode usar R Tools for Visual Studio. A Microsoft fornece outras bibliotecas, além do recurso CRAN R de código aberto. Essas bibliotecas permitem análises escaláveis e a capacidade de analisar massas de dados que excedem as limitações de tamanho de memória da análise em partes paralelas.
Para Python, você pode usar um IDE - por exemplo, Visual Studio Community Edition - que tem a extensão Python Tools for Visual Studio (PTVS) pré-instalada. Por padrão, apenas o Python 3.6, o ambiente Conda raiz, é configurado em PTVS. Para ativar o Anaconda Python 2.7:
- Crie ambientes personalizados para cada versão. Selecione Ferramentas>Python Tools>Python Environments e, em seguida, selecione + Personalizar no Visual Studio Community Edition.
- Forneça uma descrição e defina o caminho do prefixo do ambiente como c:\anaconda\envs\python2 para Anaconda Python 2.7.
- Selecione Auto Detect Apply (Detetar>automaticamente Aplicar) para salvar o ambiente.
Visite o recurso de documentação PTVS para obter mais informações sobre como criar ambientes Python.
Agora você pode criar um novo projeto Python. Selecione File>New>Project>Python e selecione o tipo de aplicativo Python que você deseja construir. Você pode definir o ambiente Python para o projeto atual para a versão desejada (Python 2.7 ou 3.6) clicando com o botão direito do mouse em Ambientes Python e selecionando Adicionar/Remover Ambientes Python. Visite a documentação do produto para obter mais informações sobre como trabalhar com PTVS.
Gerir recursos do Azure
A DSVM permite que você crie sua solução de análise localmente na máquina virtual. Ele também permite que você acesse serviços na plataforma de nuvem do Azure. O Azure fornece vários serviços, incluindo computação, armazenamento, análise de dados e muito mais, que pode administrar e aceder a partir da sua DSVM.
Você tem duas opções disponíveis para administrar sua assinatura do Azure e recursos de nuvem:
Visite o portal do Azure em seu navegador.
Use scripts do PowerShell. Execute o Azure PowerShell a partir de um atalho da área de trabalho ou do menu Iniciar . Visite o recurso de documentação do Microsoft Azure PowerShell para obter mais informações.
Estenda o armazenamento usando sistemas de arquivos compartilhados
Os cientistas de dados podem compartilhar grandes conjuntos de dados, código ou outros recursos dentro da equipe. A DSVM tem cerca de 45 GB de espaço disponível. Para expandir seu armazenamento, você pode usar Arquivos do Azure e montá-lo em uma ou mais instâncias DSVM ou acessá-lo com uma API REST. Você também pode usar o portal do Azure ou usar o Azure PowerShell para adicionar discos de dados dedicados extras.
Nota
O espaço máximo em um compartilhamento de arquivos do Azure é de 5 TB. Cada ficheiro tem um limite de tamanho de 1 TB.
Este script do Azure PowerShell cria 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
Você pode montar um compartilhamento de Arquivos do Azure em qualquer máquina virtual no Azure. Sugerimos que coloque a VM e a conta de armazenamento no mesmo centro de dados do Azure, para evitar encargos de latência e transferência de dados. Estes comandos do Azure PowerShell montam 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>>
Você pode acessar essa unidade como faria com qualquer unidade normal na VM.
Compartilhar código no GitHub
O repositório de código do GitHub hospeda exemplos de código e fontes de código para muitas ferramentas que a comunidade de desenvolvedores compartilha. Ele usa o Git como a tecnologia para rastrear e armazenar versões dos arquivos de código. O GitHub também serve como uma plataforma para criar seu próprio repositório. Seu próprio repositório pode armazenar o código compartilhado e a documentação da sua equipe, implementar o controle de versão e controlar as permissões de acesso para as partes interessadas que desejam visualizar e contribuir com código. O GitHub suporta colaboração dentro de sua equipe, uso de código desenvolvido pela comunidade e contribuições de código de volta para a comunidade. Visite as páginas de ajuda do GitHub para obter mais informações sobre o Git.
A DSVM vem carregada com ferramentas de cliente na linha de comando e na GUI para acessar o repositório GitHub. A ferramenta de linha de comando Git Bash opera com Git e GitHub. O Visual Studio é instalado na DSVM e tem as extensões Git. Tanto o menu Iniciar como o ambiente de trabalho têm ícones para estas ferramentas.
Use o comando para baixar código git clone
de um repositório GitHub. Para baixar o repositório de ciência de dados publicado pela Microsoft no diretório atual, por exemplo, execute este comando no Git Bash:
git clone https://github.com/Azure/DataScienceVM.git
Visual Studio pode lidar com a mesma operação de clone. Esta captura de tela mostra como acessar as ferramentas Git e GitHub no Visual Studio:
Você pode trabalhar com recursos de github.com disponíveis em seu repositório GitHub. Para obter mais informações, visite o recurso de cheat sheet do GitHub.
Aceder aos serviços de dados e análise 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 recursos de dados grandes e pequenos. Esta seção descreve como mover dados para o armazenamento de Blob e acessar dados armazenados em um blob do Azure.
Pré-requisitos
Uma conta de armazenamento de Blob do Azure, criada no portal do Azure.
Confirme se a ferramenta AzCopy de linha de comando está pré-instalada, com este comando:
C:\Program Files (x86)\Microsoft SDKs\Azure\AzCopy\azcopy.exe
O diretório que hospeda azcopy.exe já está em sua variável de ambiente PATH, portanto, você pode evitar digitar o caminho de comando completo ao executar essa ferramenta. Para obter mais informações sobre a ferramenta AzCopy, leia a documentação do AzCopy.
Inicie a ferramenta Azure Storage Explorer. Você pode baixá-lo da página da Web do Storage Explorer.
Mover dados de uma VM para um 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:\myfolder pelo caminho do diretório que hospeda seu arquivo
- Substitua mystorageaccount pelo nome da sua conta de armazenamento de Blob
- Substitua mycontainer pelo nome do contêiner
- Substitua a chave da conta de armazenamento pela chave de acesso de armazenamento de Blob
Você pode encontrar suas credenciais de conta de armazenamento no portal do Azure.
Execute o comando AzCopy no PowerShell ou em um prompt de comando. Estes são exemplos de comandos 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 o arquivo para um blob do Azure, seu arquivo aparecerá no Gerenciador de Armazenamento do Azure.
Mover dados de uma VM para um blob do Azure: Azure Storage Explorer
Você também pode carregar dados do arquivo local em sua VM com 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 .
À direita da caixa Ficheiros , selecione as reticências (...), selecione um ou vários ficheiros para carregar a partir do sistema de ficheiros e selecione Carregar para começar a carregar os ficheiros.
Ler dados de um blob do Azure: Python ODBC
A biblioteca BlobService pode ler dados diretamente de um blob localizado em um Jupyter Notebook 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
Conecte as credenciais da sua conta de armazenamento de Blob 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 um quadro de dados:
Azure Synapse Analytics e bancos de dados
O Azure Synapse Analytics é um "armazém como serviço" de dados elástico com uma experiência de classe empresarial do SQL Server. Este recurso descreve como provisionar o Azure Synapse Analytics. Depois de provisionar o Azure Synapse Analytics, este passo a passo explica como lidar com upload, exploração e modelagem de dados usando dados no Azure Synapse Analytics.
Azure Cosmos DB
O Azure Cosmos DB é um banco de dados NoSQL baseado em nuvem. Ele pode lidar com documentos JSON, por exemplo, e pode armazenar e consultar os documentos. Estas etapas de exemplo mostram como acessar o Azure Cosmos DB a partir da DSVM:
O SDK Python do Azure Cosmos DB já está instalado na DSVM. Para atualizá-lo, execute
pip install pydocumentdb --upgrade
a partir de um prompt de comando.Crie uma conta e um banco de dados do Azure Cosmos DB no portal do Azure.
Baixe a Ferramenta de Migração de Dados do Azure Cosmos DB do Centro de Download da Microsoft e extraia-a para um diretório de sua escolha.
Importe os dados JSON (dados 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 do diretório onde 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 ir para o Jupyter e abrir o bloco de anotações intitulado DocumentDBSample. Ele contém código Python para acessar o Azure Cosmos DB e lidar com algumas consultas básicas. Visite a página de documentação do serviço Azure Cosmos DB para obter mais informações sobre o Azure Cosmos DB.
Usar relatórios e painéis do Power BI
Você pode visualizar o arquivo JSON Volcano descrito no exemplo anterior do Azure Cosmos DB no Power BI Desktop, para obter informações visuais sobre os próprios dados. Este artigo do Power BI oferece etapas detalhadas. Estas são as etapas, em alto nível:
- Abra o Power BI Desktop e selecione Obter Dados. Especifique este URL:
https://cahandson.blob.core.windows.net/samples/volcano.json
. - Os registros JSON, importados como uma lista, devem ficar visíveis. Converta a lista em uma tabela, para que o Power BI possa trabalhar com ela.
- Selecione o ícone de expansão (seta) para expandir as colunas.
- O local é um campo Registro . Expanda o registro e selecione apenas as coordenadas. Coordenada é uma coluna de lista.
- Adicione uma nova coluna para converter a coluna de coordenadas da lista em uma coluna LatLong separada por vírgula. Use a fórmula
Text.From([coordinates]{1})&","&Text.From([coordinates]{0})
para concatenar os dois elementos no campo da lista de coordenadas. - Converta a coluna Elevação em decimal e selecione os botões Fechar e Aplicar .
Você pode usar o código a seguir como uma alternativa às etapas anteriores. Ele cria scripts das etapas usadas no Editor Avançado no Power BI para gravar 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 em seu modelo de dados do Power BI. Sua instância do Power BI Desktop deve aparecer da seguinte maneira:
Você pode começar a criar relatórios e visualizações com o modelo de dados. Este artigo do Power BI explica como criar um relatório.
Dimensione a DSVM dinamicamente
Você pode dimensionar a DSVM para cima e para baixo para atender às necessidades do seu projeto. Se você não precisar usar a VM à noite ou nos fins de semana, poderá desligar a VM do portal do Azure.
Nota
Você incorre em encargos de computação se usar apenas o botão de desligamento para o sistema operacional na VM. Em vez disso, você deve desalocar sua DSVM usando o portal do Azure ou o Cloud Shell.
Para um projeto de análise em grande escala, você pode precisar de mais CPU, memória ou capacidade de disco. Nesse caso, você pode encontrar VMs de diferentes números de núcleos de CPU, capacidade de memória, tipos de disco (incluindo unidades de estado sólido) e instâncias baseadas em GPU para aprendizado profundo que atendam às suas necessidades de computação e orçamento. A página de preços das Máquinas Virtuais do Azure mostra a lista completa de VMs, juntamente com seus preços de computação por hora.
Adicionar mais ferramentas
A DSVM oferece ferramentas pré-criadas que podem atender a muitas necessidades comuns de análise de dados. Eles economizam tempo porque você não precisa instalar e configurar individualmente seus ambientes. Eles também economizam dinheiro, porque você paga apenas pelos recursos que usa.
Você pode usar outros serviços de dados e análise do Azure descritos neste artigo para aprimorar seu ambiente de análise. Em alguns casos, você pode precisar de outras ferramentas, incluindo ferramentas proprietárias específicas de parceiros. Você tem acesso administrativo total na máquina virtual para instalar as ferramentas necessárias. Você também pode instalar outros pacotes em Python e R que não estão pré-instalados. Para Python, você pode usar qualquer um conda
ou pip
. Para R, você pode usar install.packages()
no console R ou usar o IDE e selecionar Pacotes>de instalação de pacotes.
Aprendizagem profunda
Além dos exemplos baseados em estrutura, você pode obter um conjunto de instruções passo a passo abrangentes que foram validadas na DSVM. Estas instruções passo a passo ajudam você a iniciar o desenvolvimento de aplicativos de aprendizagem profunda em domínios de análise de imagem e texto/linguagem.
Executando redes neurais em diferentes estruturas: este passo a passo mostra como migrar código de uma estrutura para outra. Ele também mostra como comparar modelos e desempenho de tempo de execução entre estruturas.
Um guia prático para criar uma solução completa para detetar produtos em imagens: A técnica de deteção de imagem pode localizar e classificar objetos dentro de imagens. Esta tecnologia tem o potencial de trazer enormes recompensas em muitos domínios de negócios da vida real. Por exemplo, os retalhistas podem utilizar esta técnica para identificar um produto que um cliente retirou da prateleira. Essas informações ajudam as lojas de varejo a gerenciar o estoque de produtos.
Aprendizagem profunda para áudio: este tutorial mostra como treinar um modelo de aprendizagem profunda para deteção de eventos de áudio 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: Este passo a passo demonstra como construir e treinar duas arquiteturas de redes neurais: Rede de Atenção Hierárquica e Rede de Memória de Longo Prazo (LSTM). Essas redes neurais usam a API Keras para aprendizado profundo, 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ê pode fazer para tornar a DSVM um ambiente de análise eficaz.