Tutorial: carregar, acessar e explorar dados no Azure Machine Learning

APLICA-SE A: SDK do Python azure-ai-ml v2 (atual)

Neste tutorial, você aprenderá a:

  • Carregar dados no armazenamento em nuvem
  • Criar um ativo de dados do Azure Machine Learning
  • Acessar seus dados em um notebook para desenvolvimento interativo
  • Criar novas versões de ativos de dados

Normalmente, o início de um projeto de aprendizado de máquina envolve EDA (análise exploratória de dados), pré-processamento de dados (limpeza, engenharia de recursos) e a criação de protótipos de modelos do Machine Learning para validar hipóteses. Essa fase de prototipagem, é altamente interativa. Ele se presta ao desenvolvimento em um IDE ou em um notebook Jupyter, com um console interativo Python. Este tutorial descreve essas ideias.

Esse vídeo mostra como começar a usar o Estúdio do Azure Machine Learning para que você possa seguir as etapas no tutorial. O vídeo mostra como criar um notebook, clonar o notebook, criar uma instância de computação e baixar os dados necessários para o tutorial. Essas etapas estão descritas nas seções a seguir.

Pré-requisitos

  1. Para usar o Azure Machine Learning, primeiro você precisará de um workspace. Se você não tiver um, conclua Criar recursos necessários para começar para criar um workspace e saber mais sobre como usá-lo.

  2. Entre no estúdio e selecione seu workspace, caso ele ainda não esteja aberto.

  3. Abra ou crie um notebook em seu workspace:

    • Crie um novo notebook, se você quiser copiar/colar código em células.
    • Ou abra tutoriais/get-started-notebooks/explore-data.ipynb na seção Exemplos do estúdio. Em seguida, selecione Clonar para adicionar o bloco de anotações aos seus Arquivos. (Veja onde encontrar Exemplos.)

Definir o kernel

  1. Na barra superior acima do notebook aberto, crie uma instância de computação se você ainda não tiver uma.

    Screenshot shows how to create a compute instance.

  2. Se a instância de computação for interrompida, selecione Iniciar computação e aguarde até que ela esteja em execução.

    Screenshot shows how to start compute if it is stopped.

  3. Verifique se o kernel, encontrado no canto superior direito, é Python 3.10 - SDK v2. Caso contrário, use a lista suspensa para selecionar esse kernel.

    Screenshot shows how to set the kernel.

  4. Se você vir uma barra de notificação dizendo que você precisa de autenticação, selecione Autenticar.

Importante

O restante deste tutorial contém células do notebook do tutorial. Copie-as/cole-as no novo notebook ou, no caso de um notebook clonado, mude para ele.

Baixar os dados usados neste tutorial

Para ingestão de dados, o Azure Data Explorer manipula dados brutos nesses formatos. Este tutorial usa este exemplo de dados de cliente de cartão de crédito em formato CSV. Vemos as etapas prosseguirem em um recurso do Azure Machine Learning. Nesse recurso, criaremos uma pasta local com o nome sugerido de dados diretamente na pasta em que este notebook está localizado.

Observação

Este tutorial depende dos dados colocados em um local de pasta de recursos do Azure Machine Learning. Para este tutorial, “local” significa um local de pasta nesse recurso do Azure Machine Learning.

  1. Selecione Abrir terminal abaixo dos três pontos, conforme mostrado nesta imagem:

    Screenshot shows open terminal tool in notebook toolbar.

  2. A janela do terminal é aberta em uma nova guia.

  3. Verifique se cd está na mesma pasta em que este notebook está localizado. Por exemplo, se o notebook estiver em uma pasta chamada get-started-notebooks:

    cd get-started-notebooks    #  modify this to the path where your notebook is located
    
  4. Insira estes comandos na janela do terminal para copiar os dados para sua instância de computação:

    mkdir data
    cd data                     # the sub-folder where you'll store the data
    wget https://azuremlexamples.blob.core.windows.net/datasets/credit_card/default_of_credit_card_clients.csv
    
  5. Agora você pode fechar a janela.

Saiba mais sobre esses dados no repositório do Machine Learning da UCI.

Criar identificador para o workspace

Antes de nos aprofundarmos no código, você precisa de uma maneira de referenciar seu workspace. Você criará um ml_client para um identificador do workspace. Em seguida, você usará ml_client para gerenciar recursos e trabalhos.

Na próxima célula, insira a ID da Assinatura, o nome do Grupo de Recursos e o nome do Espaço de trabalho. Para encontrar esses valores:

  1. Na barra de ferramentas do Estúdio do Azure Machine Learning superior direito, selecione o nome do espaço de trabalho.
  2. Copie o valor do workspace, do grupo de recursos e da ID da assinatura no código.
  3. Será necessário copiar um valor, fechar a área e colar, em seguida, voltar para o próximo.
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
from azure.ai.ml.entities import Data
from azure.ai.ml.constants import AssetTypes

# authenticate
credential = DefaultAzureCredential()

# Get a handle to the workspace
ml_client = MLClient(
    credential=credential,
    subscription_id="<SUBSCRIPTION_ID>",
    resource_group_name="<RESOURCE_GROUP>",
    workspace_name="<AML_WORKSPACE_NAME>",
)

Observação

A criação do MLClient não se conectará ao espaço de trabalho. A inicialização do cliente é lenta, e ele aguarda a primeira vez que precisa fazer uma chamada (isso acontecerá na próxima célula de código).

Carregar dados no armazenamento em nuvem

O Azure Machine Learning usa URIs (Uniform Resource Identifiers), que apontam para locais de armazenamento na nuvem. Um URI facilita o acesso a dados em notebooks e trabalhos. Os formatos de URI de dados são semelhantes às URLs da Web que você usa no navegador da Web para acessar páginas da Web. Por exemplo:

  • Acessar dados do servidor https público: https://<account_name>.blob.core.windows.net/<container_name>/<folder>/<file>
  • Acessar dados do Azure Data Lake Gen 2: abfss://<file_system>@<account_name>.dfs.core.windows.net/<folder>/<file>

Um ativo de dados do Azure Machine Learning é semelhante aos indicadores do navegador da Web (favoritos). Em vez de se lembrar de longos caminhos de armazenamento (URIs) que apontam para os dados usados com mais frequência, você pode criar um ativo de dados e acessar esse ativo com um nome amigável.

A criação do ativo de dados também cria uma referência para a localização da fonte de dados, junto de uma cópia dos metadados. Como os dados permanecem na localização existente, você não tem nenhum custo de armazenamento adicional e não arrisca a integridade da fonte de dados. Você pode criar ativos de dados por meio dos armazenamentos de dados do Azure Machine Learning, do Armazenamento do Azure, de URLs públicas e de arquivos locais.

Dica

Para carregamentos de dados de tamanho menor, a criação de ativos de dados do Azure Machine Learning funciona bem para uploads de dados de recursos de computador locais para o armazenamento em nuvem. Essa abordagem evita a necessidade de ferramentas ou utilitários extras. No entanto, um upload de dados de tamanho maior pode exigir uma ferramenta ou utilitário dedicado; por exemplo, azcopy. A ferramenta de linha de comando azcopy move dados de e para o Armazenamento do Azure. Saiba mais sobre o azcopy aqui.

A próxima célula do notebook cria o ativo de dados. O exemplo de código carrega o arquivo de dados brutos para o recurso de armazenamento em nuvem designado.

Sempre que você cria um ativo de dados, você precisa de uma versão exclusiva para ele. Se a versão já existir, você receberá um erro. Nesse código, estamos usando "inicial" para a primeira leitura dos dados. Se essa versão já existir, vamos ignorar a etapa de criá-la novamente.

Você também pode omitir o parâmetro de versão e um número de versão é gerado para você, começando com 1 e incrementando a partir daí.

Nesse tutorial, usaremos o nome "inicial" como a primeira versão. O tutorial Criar pipelines de produção de machine learning também usará essa versão dos dados e, portanto, aqui estamos usando um valor que você verá novamente nesse tutorial.

from azure.ai.ml.entities import Data
from azure.ai.ml.constants import AssetTypes

# update the 'my_path' variable to match the location of where you downloaded the data on your
# local filesystem

my_path = "./data/default_of_credit_card_clients.csv"
# set the version number of the data asset
v1 = "initial"

my_data = Data(
    name="credit-card",
    version=v1,
    description="Credit card data",
    path=my_path,
    type=AssetTypes.URI_FILE,
)

## create data asset if it doesn't already exist:
try:
    data_asset = ml_client.data.get(name="credit-card", version=v1)
    print(
        f"Data asset already exists. Name: {my_data.name}, version: {my_data.version}"
    )
except:
    ml_client.data.create_or_update(my_data)
    print(f"Data asset created. Name: {my_data.name}, version: {my_data.version}")

Você pode ver os dados carregados selecionando Dados à esquerda. Você verá que os dados são carregados e um ativo de dados é criado:

Screenshot shows the data in studio.

Esses dados são chamados de cartão de crédito e, na guia Ativos de dados, podemos vê-los na coluna Nome. Esses dados são carregados no armazenamento de dados padrão do workspace chamado workspaceblobstore, visto na coluna Fonte de dados .

Um armazenamento de dados do Microsoft Azure Machine Learning é uma referência a uma conta de armazenamento existente no Azure. Um armazenamento de dados oferece estes benefícios:

  1. Uma API comum e fácil de usar, para interagir com diferentes tipos de armazenamento (blob/arquivos/Azure Data Lake Storage) e métodos de autenticação.
  2. Uma maneira mais fácil de descobrir armazenamentos de dados úteis ao trabalhar em equipe.
  3. Em seus scripts, uma maneira de ocultar informações de conexão para acesso a dados baseado em credenciais (entidade de serviço/SAS/chave).

Acessar dados em um notebook

O Pandas dá suporte direto a URIs; este exemplo mostra como ler um arquivo CSV de um armazenamento de dados do Azure Machine Learning:

import pandas as pd

df = pd.read_csv("azureml://subscriptions/<subid>/resourcegroups/<rgname>/workspaces/<workspace_name>/datastores/<datastore_name>/paths/<folder>/<filename>.csv")

No entanto, como mencionado anteriormente, pode se tornar difícil lembrar desses URIs. Além disso, você deve substituir manualmente todos os valores da <subcadeia> no comando pd.read_csv pelos valores reais dos seus recursos.

Você desejará criar ativos de dados para dados acessados com frequência. Veja uma maneira mais fácil de acessar o arquivo CSV no Pandas:

Importante

Em uma célula do notebook, execute este código para instalar a biblioteca Python azureml-fsspec no kernel do Jupyter:

%pip install -U azureml-fsspec
import pandas as pd

# get a handle of the data asset and print the URI
data_asset = ml_client.data.get(name="credit-card", version=v1)
print(f"Data asset URI: {data_asset.path}")

# read into pandas - note that you will see 2 headers in your data frame - that is ok, for now

df = pd.read_csv(data_asset.path)
df.head()

Leia Acessar dados do armazenamento em nuvem do Azure durante o desenvolvimento interativo para saber mais sobre o acesso a dados em um notebook.

Criar uma nova versão do ativo de dados

Você deve ter notado que os dados precisam de um pouco de limpeza leve para se adequar ao treinamento de um modelo de machine learning. Ele tem:

  • dois cabeçalhos
  • uma coluna de ID do cliente; não usaríamos esse recurso no Machine Learning
  • espaços no nome da variável de resposta

Além disso, em comparação com o formato CSV, o formato de arquivo Parquet se torna uma maneira melhor de armazenar esses dados. O Parquet oferece compactação e mantém o esquema. Portanto, para limpar os dados e armazená-los no Parquet, use:

# read in data again, this time using the 2nd row as the header
df = pd.read_csv(data_asset.path, header=1)
# rename column
df.rename(columns={"default payment next month": "default"}, inplace=True)
# remove ID column
df.drop("ID", axis=1, inplace=True)

# write file to filesystem
df.to_parquet("./data/cleaned-credit-card.parquet")

Esta tabela mostra a estrutura dos dados no arquivo .CSV default_of_credit_card_clients.csv original baixado em uma etapa anterior. Os dados carregados contêm 23 variáveis explicativas e 1 variável de resposta, conforme mostrado aqui:

Nomes das Colunas Tipo de variável Descrição
X1 Explicativas Valor do crédito determinado (dólar NT): inclui o crédito individual do consumidor e seu crédito familiar (suplementar).
X2 Explicativas Sexo (1 = masculino; 2 = feminino).
X3 Explicativas Educação (1 = pós-graduação; 2 = universidade; 3 = ensino médio; 4 = outros).
X4 Explicativas Estado civil (1 = casado; 2 = solteiro; 3 = outros).
X5 Explicativas Idade (anos).
X6-X11 Explicativas Histórico de pagamentos anteriores. Acompanhamos os últimos registros de pagamento mensais (de abril a setembro de 2005). -1 = pago devidamente; 1 = atraso de pagamento por um mês; 2 = atraso de pagamento por dois meses; . . .; 8 = atraso de pagamento por oito meses; 9 = atraso de pagamento por nove meses ou mais.
X12-17 Explicativas Valor da declaração de cobrança (dólar NT) de abril a setembro de 2005.
X18-23 Explicativas Valor do pagamento anterior (dólar NT) de abril a setembro de 2005.
S Resposta Pagamento padrão (Sim = 1, Não = 0)

Em seguida, crie uma nova versão do ativo de dados (os dados são carregados automaticamente no armazenamento em nuvem). Para essa versão, vamos adicionar um valor de tempo para que, a cada vez que esse código for executado, um número de versão diferente seja criado.

from azure.ai.ml.entities import Data
from azure.ai.ml.constants import AssetTypes
import time

# Next, create a new *version* of the data asset (the data is automatically uploaded to cloud storage):
v2 = "cleaned" + time.strftime("%Y.%m.%d.%H%M%S", time.gmtime())
my_path = "./data/cleaned-credit-card.parquet"

# Define the data asset, and use tags to make it clear the asset can be used in training

my_data = Data(
    name="credit-card",
    version=v2,
    description="Default of credit card clients data.",
    tags={"training_data": "true", "format": "parquet"},
    path=my_path,
    type=AssetTypes.URI_FILE,
)

## create the data asset

my_data = ml_client.data.create_or_update(my_data)

print(f"Data asset created. Name: {my_data.name}, version: {my_data.version}")

O arquivo parquet limpo é a fonte de dados de versão mais recente. Esse código mostra primeiro o conjunto de resultados da versão do CSV e, em seguida, a versão parquet:

import pandas as pd

# get a handle of the data asset and print the URI
data_asset_v1 = ml_client.data.get(name="credit-card", version=v1)
data_asset_v2 = ml_client.data.get(name="credit-card", version=v2)

# print the v1 data
print(f"V1 Data asset URI: {data_asset_v1.path}")
v1df = pd.read_csv(data_asset_v1.path)
print(v1df.head(5))

# print the v2 data
print(
    "_____________________________________________________________________________________________________________\n"
)
print(f"V2 Data asset URI: {data_asset_v2.path}")
v2df = pd.read_parquet(data_asset_v2.path)
print(v2df.head(5))

Limpar os recursos

Se você planeja prosseguir agora para outros tutorial, vá diretamente para as Próximas etapas.

Parar a instância de computação

Se não for usá-la agora, pare a instância de computação:

  1. No estúdio, na área de navegação à esquerda, selecione Computação.
  2. Nas guias superiores, selecione Instâncias de computação
  3. Selecione a instância de computação na lista.
  4. Na barra de ferramentas superior, selecione Parar.

Excluir todos os recursos

Importante

Os recursos que você criou podem ser usados como pré-requisitos em outros tutoriais e artigos de instruções do Azure Machine Learning.

Se você não pretende usar nenhum dos recursos criados, exclua-os para não gerar custos:

  1. No portal do Azure, selecione Grupos de recursos no canto esquerdo.

  2. Selecione o grupo de recursos que você criou por meio da lista.

  3. Selecione Excluir grupo de recursos.

    Screenshot of the selections to delete a resource group in the Azure portal.

  4. Insira o nome do grupo de recursos. Em seguida, selecione Excluir.

Próximas etapas

Leia Criar ativos de dados para obter mais informações sobre ativos de dados.

Leia Criar armazenamentos de dados para saber mais sobre os armazenamentos de dados.

Continue com os tutoriais para aprender a desenvolver um script de treinamento.