Crear un recurso de datos

Completado

Como científico de datos, quiere centrarse en el entrenamiento de modelos de Machine Learning. Aunque necesita acceso a los datos como entrada para un modelo de Machine Learning, no quiere preocuparse por cómo obtener acceso. Para simplificar el acceso a los datos con los que desea trabajar, puede usar recursos de datos.

Descripción de los recursos de datos

En Azure Machine Learning, los recursos de datos son referencias a dónde se almacenan los datos, cómo obtener acceso y cualquier otro metadato pertinente. Puede crear recursos de datos para obtener acceso a los datos en almacenes de datos, servicios de almacenamiento de Azure, direcciones URL públicas o datos almacenados en el dispositivo local.

Las ventajas de usar recursos de datos son las siguientes:

  • Puede compartir y reutilizar datos con otros miembros del equipo de forma que no necesiten recordar ubicaciones de archivos.
  • Puede acceder sin problemas a los datos durante el entrenamiento del modelo (en cualquier tipo de proceso admitido) sin preocuparse por las cadenas de conexión o las rutas de acceso de datos.
  • Puede crear una versión de los metadatos del recurso de datos.

Hay tres tipos principales de recursos de datos que puede usar:

Diagram of different types of data assets in Azure Machine Learning.

  • Archivo URI: apunta a un archivo específico.
  • Carpeta URI: apunta a una carpeta.
  • MLTable: apunta a una carpeta o archivo e incluye un esquema para leer como datos tabulares.

Nota:

URI significa identificador uniforme de recursos y representa una ubicación de almacenamiento en el equipo local, Azure Blob o Data Lake Storage, ubicación HTTPS disponible públicamente o incluso un almacén de datos asociado.

Cuándo usar recursos de datos

Los recursos de datos son más útiles al ejecutar tareas de aprendizaje automático como trabajos de Azure Machine Learning. Como trabajo, puede ejecutar un script de Python que toma entradas y genera salidas. Un recurso de datos se puede analizar como entrada o salida de un trabajo de Azure Machine Learning.

Echemos un vistazo a cada uno de los tipos de recursos de datos, cómo crearlos y cómo usar el recurso de datos en un trabajo.

Creación de un recurso de datos de archivo URI

Un recurso de datos de archivo URI apunta a un archivo específico. Azure Machine Learning solo almacena la ruta de acceso al archivo, lo que significa que puede apuntar a cualquier tipo de archivo. Al usar el recurso de datos, especifique cómo desea leer los datos, lo que depende del tipo de datos al que se conecte.

Las rutas de acceso admitidas que puede usar al crear un recurso de datos de archivo URI son:

  • Local: ./<path>
  • Azure Blob Storage: 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>
  • Almacén de datos: azureml://datastores/<datastore_name>/paths/<folder>/<file>

Importante

Al crear un recurso de datos y apuntar a un archivo o carpeta almacenado en el dispositivo local, se cargará una copia del archivo o carpeta en el almacén de datos predeterminado workspaceblobstore. Puede encontrar el archivo o carpeta en la carpeta LocalUpload. Al cargar una copia, todavía podrá acceder a los datos desde el área de trabajo de Azure Machine Learning, incluso cuando el dispositivo local en el que se almacenan los datos no está disponible.

Para crear un recurso de datos de archivo URI, puede usar el código siguiente:

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)

Al analizar el recurso de datos del archivo URI como entrada en un trabajo de Azure Machine Learning, primero debe leer los datos para poder trabajar con él.

Imagine que crea un script de Python que desea ejecutar como trabajo y establece el valor del parámetro input_data de entrada para que sea el recurso de datos del archivo URI (que apunta a un archivo CSV). Para leer los datos, incluya el código siguiente en el script de 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))

Si el recurso de datos del archivo URI apunta a un tipo diferente de archivo, debe usar el código de Python adecuado para leer los datos. Por ejemplo, si en lugar de usar archivos CSV está trabajando con archivos JSON, usaría pd.read_json() en su lugar.

Creación de un recurso de datos de carpeta URI

Un recurso de datos de carpeta URI apunta a una carpeta específica. Funciona de forma similar a un recurso de datos de archivo URI y admite las mismas rutas de acceso.

Para crear un recurso de datos de carpeta URI con el SDK de Python, puede usar el código siguiente:

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)

Al analizar el recurso de datos de la carpeta URI como entrada en un trabajo de Azure Machine Learning, primero debe leer los datos para poder trabajar con él.

Imagine que crea un script de Python que desea ejecutar como trabajo y establece el valor del parámetro input_data de entrada para que sea el recurso de datos de la carpeta URI (que apunta a varios archivos CSV). Puede leer todos los archivos CSV de la carpeta y concatenarlos; puede hacerlo mediante la inclusión del código siguiente en el script de 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)

Según el tipo de datos con los que trabaje, el código que use para leer los archivos puede cambiar.

Creación de un recurso de datos de MLTable

Un recurso de datos de MLTable permite apuntar a datos tabulares. Al crear un recurso de datos de MLTable, se especifica la definición de esquema para leer los datos. Como el esquema ya está definido y almacenado con el recurso de datos, no es necesario especificar cómo leer los datos al usarlo.

Por lo tanto, quiere usar un recurso de datos MLTable cuando el esquema de los datos sea complejo o cambie con frecuencia. En lugar de cambiar cómo leer los datos en cada script que los usa, solo tiene que cambiarlos en el propio recurso de datos.

Al definir el esquema al crear un recurso de datos de MLTable, también puede optar por especificar solo un subconjunto de los datos.

Para determinadas características de Azure Machine Learning, como el aprendizaje automático automatizado, debe usar un recurso de datos de MLTable, ya que Azure Machine Learning debe saber cómo leer los datos.

Para definir el esquema, puede incluir un archivo MLTable en la misma carpeta que los datos que desea leer. El archivo MLTable incluye la ruta de acceso que apunta a los datos que desea leer y cómo leer los datos:

type: mltable

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

Para crear un recurso de datos de MLTable con el SDK de Python, puede usar el código siguiente:

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)

Al analizar un recurso de datos de MLTable como entrada en un script de Python que desea ejecutar como un trabajo de Azure Machine Learning, puede incluir el código siguiente para leer los datos:

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))

Un enfoque común consiste en convertir los datos tabulares en una trama de datos de Pandas. Sin embargo, también puede convertir los datos en una trama de datos de Spark si se adapta mejor a la carga de trabajo.