Criar um ativo de dados

Concluído

Como cientista de dados, você quer se concentrar no treinamento de modelos de aprendizado de máquina. Embora você precise de acesso a dados como entrada para um modelo de aprendizado de máquina, você não quer se preocupar com como obter acesso. Para simplificar o acesso aos dados com os quais você deseja trabalhar, você pode usar ativos de dados.

Compreender os ativos de dados

No Azure Machine Learning, os ativos de dados são referências ao local onde os dados são armazenados, como obter acesso e quaisquer outros metadados relevantes. Você pode criar ativos de dados para obter acesso a dados em armazenamentos de dados, serviços de armazenamento do Azure, URLs públicas ou dados armazenados em seu dispositivo local.

Os benefícios do uso de ativos de dados são:

  • Você pode compartilhar e reutilizar dados com outros membros da equipe para que eles não precisem se lembrar dos locais dos arquivos.
  • Você pode acessar dados diretamente durante o treinamento do modelo (em qualquer tipo de computação suportado) sem se preocupar com cadeias de conexão ou caminhos de dados.
  • Você pode fazer a versão dos metadados do ativo de dados.

Há três tipos principais de ativos de dados que você pode usar:

Diagrama de diferentes tipos de ativos de dados no Azure Machine Learning.

  • Arquivo URI: aponta para um arquivo específico.
  • Pasta URI: aponta para uma pasta.
  • MLTable: aponta para uma pasta ou arquivo e inclui um esquema para ler como dados tabulares.

Nota

URI significa Uniform Resource Identifier (Identificador Uniforme de Recursos ) e significa um local de armazenamento em seu computador local, Blob do Azure ou Armazenamento Data Lake, local https disponível publicamente ou até mesmo um armazenamento de dados anexado.

Quando usar ativos de dados

Os ativos de dados são mais úteis ao executar tarefas de aprendizado de máquina como trabalhos do Azure Machine Learning. Como um trabalho, você pode executar um script Python que recebe entradas e gera saídas. Um ativo de dados pode ser analisado como entrada ou saída de um trabalho do Azure Machine Learning.

Vamos dar uma olhada em cada um dos tipos de ativos de dados, como criá-los e como usar o ativo de dados em um trabalho.

Criar um ativo de dados de arquivo URI

Um ativo de dados de arquivo URI aponta para um arquivo específico. O Aprendizado de Máquina do Azure armazena apenas o caminho para o arquivo, o que significa que você pode apontar para qualquer tipo de arquivo. Ao usar o ativo de dados, você especifica como deseja ler os dados, o que depende do tipo de dados ao qual você está se conectando.

Os caminhos suportados que você pode usar ao criar um ativo de dados de arquivo URI são:

  • Local: ./<path>
  • Armazenamento de Blobs do Azure: wasbs://<account_name>.blob.core.windows.net/<container_name>/<folder>/<file>
  • Azure Data Lake Storage (Gen 2): abfss://<file_system>@<account_name>.dfs.core.windows.net/<folder>/<file>
  • Armazenamento de dados: azureml://datastores/<datastore_name>/paths/<folder>/<file>

Importante

Quando você cria um ativo de dados e aponta para um arquivo ou pasta armazenado em seu dispositivo local, uma cópia do arquivo ou pasta será carregada para o armazenamento de workspaceblobstoredados padrão. Você pode encontrar o LocalUpload arquivo ou pasta na pasta. Ao carregar uma cópia, você ainda poderá acessar os dados do espaço de trabalho do Azure Machine Learning, mesmo quando o dispositivo local no qual os dados estão armazenados não estiver disponível.

Para criar um ativo de dados de arquivo URI, você pode usar o seguinte código:

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

my_path = '<supported-path>'

my_data = Data(
    path=my_path,
    type=AssetTypes.URI_FILE,
    description="<description>",
    name="<name>",
    version="<version>"
)

ml_client.data.create_or_update(my_data)

Ao analisar o ativo de dados do arquivo URI como entrada em um trabalho do Azure Machine Learning, primeiro você precisa ler os dados antes de trabalhar com ele.

Imagine que você cria um script Python que deseja executar como um trabalho e define o valor do parâmetro input_data de entrada como sendo o ativo de dados do arquivo URI (que aponta para um arquivo CSV). Você pode ler os dados incluindo o seguinte código em seu script Python:

import argparse
import pandas as pd

parser = argparse.ArgumentParser()
parser.add_argument("--input_data", type=str)
args = parser.parse_args()

df = pd.read_csv(args.input_data)
print(df.head(10))

Se o ativo de dados do arquivo URI apontar para um tipo diferente de arquivo, você precisará usar o código Python apropriado para ler os dados. Por exemplo, se em vez de arquivos CSV, você estiver trabalhando com arquivos JSON, você usaria pd.read_json() em vez disso.

Criar um ativo de dados de pasta URI

Um ativo de dados de pasta URI aponta para uma pasta específica. Ele funciona de forma semelhante a um ativo de dados de arquivo URI e suporta os mesmos caminhos.

Para criar um ativo de dados de pasta URI com o SDK do Python, você pode usar o seguinte código:

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

my_path = '<supported-path>'

my_data = Data(
    path=my_path,
    type=AssetTypes.URI_FOLDER,
    description="<description>",
    name="<name>",
    version='<version>'
)

ml_client.data.create_or_update(my_data)

Ao analisar o ativo de dados da pasta URI como entrada em um trabalho do Azure Machine Learning, você primeiro precisa ler os dados antes de poder trabalhar com ele.

Imagine que você cria um script Python que deseja executar como um trabalho e define o valor do parâmetro input_data de entrada como sendo o ativo de dados da pasta URI (que aponta para vários arquivos CSV). Você pode ler todos os arquivos CSV na pasta e concatená-los, o que você pode fazer incluindo o seguinte código em seu script Python:

import argparse
import glob
import pandas as pd

parser = argparse.ArgumentParser()
parser.add_argument("--input_data", type=str)
args = parser.parse_args()

data_path = args.input_data
all_files = glob.glob(data_path + "/*.csv")
df = pd.concat((pd.read_csv(f) for f in all_files), sort=False)

Dependendo do tipo de dados com os quais você está trabalhando, o código usado para ler os arquivos pode mudar.

Criar um ativo de dados MLTable

Um ativo de dados MLTable permite apontar para dados tabulares. Ao criar um ativo de dados MLTable, você especifica a definição de esquema para ler os dados. Como o esquema já está definido e armazenado com o ativo de dados, não é necessário especificar como ler os dados ao usá-lo.

Portanto, você deseja usar um ativo de dados MLTable quando o esquema de seus dados é complexo ou muda com freqüência. Em vez de alterar a forma de ler os dados em cada script que usa os dados, você só precisa alterá-los no próprio ativo de dados.

Ao definir o esquema ao criar um ativo de dados MLTable, você também pode optar por especificar apenas um subconjunto dos dados.

Para determinados recursos do Azure Machine Learning, como o Automated Machine Learning, você precisa usar um ativo de dados MLTable, pois o Azure Machine Learning precisa saber como ler os dados.

Para definir o esquema, você pode incluir um arquivo MLTable na mesma pasta que os dados que deseja ler. O arquivo MLTable inclui o caminho apontando para os dados que você deseja ler e como ler os dados:

type: mltable

paths:
  - pattern: ./*.txt
transformations:
  - read_delimited:
      delimiter: ','
      encoding: ascii
      header: all_files_same_headers

Para criar um ativo de dados MLTable com o Python SDK, você pode usar o seguinte código:

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

my_path = '<path-including-mltable-file>'

my_data = Data(
    path=my_path,
    type=AssetTypes.MLTABLE,
    description="<description>",
    name="<name>",
    version='<version>'
)

ml_client.data.create_or_update(my_data)

Ao analisar um ativo de dados MLTable como entrada para um script Python que deseja executar como um trabalho do Azure Machine Learning, você pode incluir o seguinte código para ler os dados:

import argparse
import mltable
import pandas

parser = argparse.ArgumentParser()
parser.add_argument("--input_data", type=str)
args = parser.parse_args()

tbl = mltable.load(args.input_data)
df = tbl.to_pandas_dataframe()

print(df.head(10))

Uma abordagem comum é converter os dados tabulares em um quadro de dados Pandas. No entanto, você também pode converter os dados em um quadro de dados do Spark, se isso se adequar melhor à sua carga de trabalho.