Compartir vía


Uso compartido de datos entre áreas de trabajo con registros (versión preliminar)

El registro de Azure Machine Learning le permite colaborar entre áreas de trabajo dentro de su organización. Con los registros, puede compartir modelos, componentes, entornos y datos. El uso compartido de datos con registros es actualmente una característica en vista previa (GB). En este artículo aprenderá a:

  • Cree un recurso de datos en el registro.
  • Uso compartido de un recurso de datos existente del área de trabajo al registro
  • Usar el recurso de datos del registro como entrada para un trabajo de entrenamiento de modelos en un área de trabajo.

Importante

Esta característica actualmente está en su versión preliminar pública. Esta versión preliminar se ofrece sin un Acuerdo de Nivel de Servicio y no se recomienda para cargas de trabajo de producción. Es posible que algunas características no sean compatibles o que tengan sus funcionalidades limitadas.

Para más información, consulte Términos de uso complementarios de las Versiones Preliminares de Microsoft Azure.

Escenario clave abordado por el uso compartido de datos mediante el registro de Azure Machine Learning

Es posible que quiera compartir los datos entre varios equipos, proyectos o áreas de trabajo en una ubicación central. Estos datos no tienen controles de acceso confidenciales y se pueden usar ampliamente en la organización.

Algunos ejemplos son:

  • Un equipo quiere compartir un conjunto de datos público que está preprocesado y listo para usarse en experimentos.
  • Su organización ha adquirido un conjunto de datos determinado para un proyecto de un proveedor externo y quiere que esté disponible para todos los equipos que trabajan en un proyecto.
  • Un equipo quiere compartir recursos de datos entre áreas de trabajo de diferentes regiones.

En estos escenarios, puede crear un recurso de datos en un registro o compartir un recurso de datos existente de un área de trabajo a un registro. A continuación, este recurso de datos se puede usar en varias áreas de trabajo.

Escenarios que NO están abordados por el uso compartido de datos mediante el registro de Azure Machine Learning

  • Uso compartido de datos confidenciales que requieren un control de acceso específico. No se puede crear un recurso de datos en un registro para compartirlo con un pequeño subconjunto de usuarios o áreas de trabajo, mientras que muchos otros usuarios de la organización pueden acceder al registro.

  • Compartir datos que están disponibles en el almacenamiento existente que no se deben copiar o que son demasiado grandes o demasiado costosos para copiarse. Cada vez que se crean recursos de datos en un registro, se ingiere una copia de los datos en el almacenamiento del registro para que se pueda replicar.

Tipos de recursos de datos compatibles con el registro de Azure Machine Learning

Sugerencia

Consulte los siguientes escenarios canónicos para decidir si quiere usar uri_file, uri_folder o mltable para su escenario.

Puede crear tres tipos de recursos de datos:

Tipo API V2 Escenario canónico
Archivo: referencia a un único archivo. uri_file Lectura o escritura de un único archivo: el archivo puede tener cualquier formato.
Carpeta: referencia a una única carpeta. uri_folder Debe leer o escribir un directorio de archivos Parquet o CSV en Pandas o Spark. Aprendizaje profundo con imágenes, texto, audio, archivos de vídeo ubicados en un directorio.
Tabla: referencia a una tabla de datos. mltable Tiene un esquema complejo sujeto a cambios frecuentes o necesita un subconjunto de datos tabulares grandes.

Rutas de acceso admitidas en el registro de Azure Machine Learning

Al crear un recurso de datos, debe especificar un parámetro path que apunte a la ubicación de los datos. Actualmente, las únicas rutas de acceso admitidas son las ubicaciones del equipo local.

Sugerencia

"Local" significa el almacenamiento local del equipo que está usando. Por ejemplo, si usa un portátil, la unidad local. Si se trata de una instancia de proceso de Azure Machine Learning, la unidad "local" de la instancia de proceso.

Requisitos previos

Antes de seguir los pasos de este artículo, asegúrese de que tiene los siguientes requisitos previos:

  • Familiaridad con los registros de Azure Machine Learning y los conceptos de datos en Azure Machine Learning.

  • Un registro de Azure Machine Learning para compartir datos. Para crear un registro, consulte Información sobre cómo crear un registro.

  • Un área de trabajo de Azure Machine Learning. Si no tiene uno, siga los pasos descritos en el artículo Inicio rápido: Creación de recursos del área de trabajo para crear uno.

    Importante

    La región de Azure (ubicación) donde cree el área de trabajo debe estar en la lista de regiones admitidas para el registro de Azure Machine Learning.

  • El entorno y el componente creados a partir del artículo Uso compartido de modelos, componentes y entornos.

  • La CLI de Azure y la extensión mlo el SDK v2 de Python para Azure Machine Learning:

    Para instalar la CLI de Azure y la extensión, consulte Instalación, configuración y uso de la CLI (v2).

    Importante

    • En los ejemplos de la CLI de este artículo se supone que usa el shell de Bash (o compatible). Por ejemplo, de un sistema Linux o Subsistema de Windows para Linux.

    • En los ejemplos también se supone que ha configurado los valores predeterminados de la CLI de Azure para que no tenga que especificar los parámetros de la suscripción, el área de trabajo, el grupo de recursos ni la ubicación. Para establecer la configuración predeterminada, use los siguientes comandos. Reemplace los parámetros siguientes por los valores de su configuración:

      • Reemplace <subscription> con la identificación de su suscripción de Azure.
      • Reemplace <workspace> por el nombre del área de trabajo de Azure Machine Learning.
      • Reemplace <resource-group> por el grupo de recursos de Azure que contiene el área de trabajo.
      • Reemplace <location> por la región de Azure que contiene el área de trabajo.
      az account set --subscription <subscription>
      az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
      

      Puede ver cuáles son los valores predeterminados actuales mediante el comando az configure -l.

Clonación del repositorio de ejemplos

Los ejemplos de código de este artículo se basan en el la muestra nyc_taxi_data_regression del repositorio de ejemplos. Para usar estos archivos en el entorno de desarrollo, use los siguientes comandos para clonar el repositorio y cambiar los directorios en el ejemplo:

git clone https://github.com/Azure/azureml-examples
cd azureml-examples

En el ejemplo de la CLI, cambie los directorios a cli/jobs/pipelines-with-components/nyc_taxi_data_regression en el clon local del repositorio de ejemplos.

cd cli/jobs/pipelines-with-components/nyc_taxi_data_regression

Creación de una conexión de SDK

Sugerencia

Este paso solo es necesario cuando se usa el SDK de Python.

Cree una conexión de cliente tanto al área de trabajo de Azure Machine Learning como al registro. En el ejemplo siguiente, reemplace los valores de marcador de posición <...> por los valores adecuados para la configuración. Por ejemplo, el identificador de suscripción de Azure, el nombre del área de trabajo, el nombre del registro, etc.:

ml_client_workspace = MLClient( credential=credential,
    subscription_id = "<workspace-subscription>",
    resource_group_name = "<workspace-resource-group",
    workspace_name = "<workspace-name>")
print(ml_client_workspace)

ml_client_registry = MLClient(credential=credential,
                        registry_name="<REGISTRY_NAME>",
                        registry_location="<REGISTRY_REGION>")
print(ml_client_registry)

Creación de datos en el registro

El recurso de datos creado en este paso se usa más adelante en este artículo al enviar un trabajo de entrenamiento.

Sugerencia

El mismo comando az ml data create de la CLI se puede usar para crear datos en un área de trabajo o registro. Al ejecutar el comando con --workspace-name se crean los datos en un área de trabajo, mientras que al ejecutar el comando con --registry-name se crean los datos en el registro.

El origen de datos se encuentra en el repositorio de ejemplos que ha clonado anteriormente. En el clon local, vaya a la siguiente ruta de acceso de directorio: cli/jobs/pipelines-with-components/nyc_taxi_data_regression. En este directorio, cree un archivo YAML denominado data-registry.yml y use el siguiente código YAML como contenido del archivo:

$schema: https://azuremlschemas.azureedge.net/latest/data.schema.json
name: transformed-nyc-taxt-data
description: Transformed NYC Taxi data created from local folder.
version: 1
type: uri_folder
path: data_transformed/

El valor path apunta al subdirectorio data_transformed, que contiene los datos que se comparten mediante el registro.

Para crear los datos en el registro, use az ml data create. En los siguientes ejemplos, reemplace <registry-name> con el nombre del registro.

az ml data create --file data-registry.yml --registry-name <registry-name>

Si recibe un error de que ya existen datos con este nombre y versión en el registro, puede editar el campo version en data-registry.yml o especificar otra versión en la CLI que invalide el valor de versión en data-registry.yml.

# use shell epoch time as the version
version=$(date +%s)
az ml data create --file data-registry.yml --registry-name <registry-name> --set version=$version

Sugerencia

Si el comando version=$(date +%s) no establece la variable $version en el entorno, reemplace $version por un número aleatorio.

Guarde los valores name y version de los datos de la salida del comando az ml data create y úselos con el comando az ml data show para ver los detalles del recurso.

az ml data show --name transformed-nyc-taxt-data --version 1 --registry-name <registry-name>

Sugerencia

Si ha usado otro nombre o versión de datos, reemplace los parámetros --name y --version en consecuencia.

También puede usar az ml data list --registry-name <registry-name> para enumerar todos los recursos de datos en el registro.

Creación de un entorno y un componente en el registro

Para crear un entorno y un componente en el registro, siga los pasos del artículo Uso compartido de modelos, componentes y entornos. El entorno y el componente se usan en el trabajo de entrenamiento de la sección siguiente.

Sugerencia

Puede usar un entorno y un componente del área de trabajo en lugar de usarlos del registro.

Ejecución de un trabajo de canalización en un área de trabajo mediante el componente del registro

Al ejecutar un trabajo de canalización que usa un componente y datos de un registro, los recursos de proceso son locales para el área de trabajo. En el ejemplo siguiente, el trabajo usa el componente de entrenamiento Scikit Learn y el recurso de datos creado en las secciones anteriores para entrenar un modelo.

Nota

El aspecto clave es que esta canalización se va a ejecutar en un área de trabajo mediante datos de entrenamiento que no están en el área de trabajo específica. Los datos están en un registro que se puede usar con cualquier área de trabajo de la organización. Puede ejecutar este trabajo de entrenamiento en cualquier área de trabajo a la que tenga acceso sin tener que preocuparse de que los datos de entrenamiento estén disponibles en esa área de trabajo.

Compruebe que esté en el directorio cli/jobs/pipelines-with-components/nyc_taxi_data_regression. Edite la sección component en la sección train_job del archivo single-job-pipeline.yml para que haga referencia al componente de entrenamiento y path de la sección training_data para que haga referencia al recurso de datos creado en las secciones anteriores. En el ejemplo siguiente se muestra el aspecto que tiene single-job-pipeline.yml después de la edición. Reemplace <registry_name> por el nombre del registro:

$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: nyc_taxi_data_regression_single_job
description: Single job pipeline to train regression model based on nyc taxi dataset

jobs:
  train_job:
    type: command
    component: azureml://registries/<registry-name>/component/train_linear_regression_model/versions/1
    compute: azureml:cpu-cluster
    inputs:
      training_data: 
        type: uri_folder
        path: azureml://registries/<registry-name>/data/transformed-nyc-taxt-data/versions/1
    outputs:
      model_output: 
        type: mlflow_model
      test_data: 

Advertencia

  • Antes de ejecutar el trabajo de canalización, confirme que el área de trabajo en la que ejecutará el trabajo se encuentra en una región de Azure admitida por el registro en el que creó los datos.
  • Confirme que el área de trabajo tiene un clúster de proceso con el nombre cpu-cluster o edite el campo compute en jobs.train_job.compute con el nombre del proceso.

Ejecute el trabajo de canalización con el comando az ml job create.

az ml job create --file single-job-pipeline.yml 

Sugerencia

Si no ha configurado el área de trabajo y el grupo de recursos predeterminados, como se explica en la sección de requisitos previos, tendrá que especificar los parámetros --workspace-name y --resource-group para que az ml job create funcione.

Para obtener más información sobre la ejecución de trabajos, consulte los siguientes artículos:

Compartir datos del área de trabajo al registro

En los pasos siguientes se muestra cómo compartir un recurso de datos existente de un área de trabajo a un registro.

En primer lugar, cree un recurso de datos en el área de trabajo. Asegúrese de que esté en el directorio cli/assets/data. El local-folder.yml que se encuentra en este directorio se usa para crear un recurso de datos en el área de trabajo. Los datos especificados en este archivo están disponibles en el directorio cli/assets/data/sample-data. El siguiente código YAML es el contenido del archivo local-folder.yml:

$schema: https://azuremlschemas.azureedge.net/latest/data.schema.json
name: local-folder-example-titanic
description: Dataset created from local folder.
type: uri_folder
path: sample-data/

Para crear el recurso de datos en el área de trabajo, use el siguiente comando:

az ml data create -f local-folder.yml

Para obtener más información sobre cómo crear recursos de datos en un área de trabajo, consulte Creación de recursos de datos.

El recurso de datos creado en el área de trabajo se puede compartir en un registro. Desde el registro, se puede usar en varias áreas de trabajo. Tenga en cuenta que estamos pasando los parámetros --share_with_name y --share_with_version en la función de compartir. Estos parámetros son opcionales y si no se pasan estos datos se compartirán con el mismo nombre y versión que en el área de trabajo.

El siguiente ejemplo muestra el uso del comando compartir para compartir un recurso de dato. Reemplace <registry-name> por el nombre del registro al que se compartirán los datos.

az ml data share --name local-folder-example-titanic --version <version-in-workspace> --share-with-name <name-in-registry> --share-with-version <version-in-registry> --registry-name <registry-name>

Pasos siguientes