Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
SE APLICA A:SDK de Azure Machine Learning v1 para Python
Importante
En este artículo se proporciona información sobre el uso del SDK de Azure Machine Learning v1. EL SDK v1 está en desuso a partir del 31 de marzo de 2025. El soporte técnico finalizará el 30 de junio de 2026. Puede instalar y usar SDK v1 hasta esa fecha.
Se recomienda realizar la transición al SDK v2 antes del 30 de junio de 2026. Para más información sobre SDK v2, consulte ¿Qué es la CLI de Azure Machine Learning y el SDK de Python v2? y la referencia del SDK v2.
En este artículo, aprenderá a versionar y realizar un seguimiento de los conjuntos de datos de Azure Machine Learning para la reproducibilidad. El control de versiones del conjunto de datos marca los estados específicos de los datos para que pueda aplicar una versión específica del conjunto de datos para futuros experimentos.
Es posible que quiera crear una versión de los recursos de Azure Machine Learning en estos escenarios típicos:
- Cuando los nuevos datos estén disponibles para el reentrenamiento
- Al aplicar diferentes enfoques de preparación de datos o ingeniería de características
Requisitos previos
El SDK de Azure Machine Learning para Python. Este SDK incluye el paquete de azureml-datasets
Un área de trabajo de Azure Machine Learning. Crear un área de trabajo nueva, o recuperar un área de trabajo existente con este ejemplo de código:
import azureml.core from azureml.core import Workspace ws = Workspace.from_config()
Registrar y recuperar versiones del conjunto de datos
Puede crear versiones, reutilizar y compartir un conjunto de datos registrado entre experimentos y con sus compañeros. Puede registrar varios conjuntos de datos con el mismo nombre y recuperar una versión específica por nombre y número de versión.
Registrar una versión del conjunto de datos
En el ejemplo de código siguiente se establece el parámetro create_new_version
del conjunto de datos de titanic_ds
en True
, para registrar una nueva versión de ese conjunto de datos. Si el área de trabajo no tiene ningún titanic_ds
conjunto de datos existente registrado, el código crea un nuevo conjunto de datos con el nombre titanic_ds
, y establece su versión en 1.
titanic_ds = titanic_ds.register(workspace = workspace,
name = 'titanic_ds',
description = 'titanic training data',
create_new_version = True)
Recuperar un conjunto de datos por nombre
De forma predeterminada, el método de Dataset
clase get_by_name() devuelve la versión más reciente del conjunto de datos registrado con el área de trabajo.
Este código devuelve la versión 1 del conjunto de datos titanic_ds
.
from azureml.core import Dataset
# Get a dataset by name and version number
titanic_ds = Dataset.get_by_name(workspace = workspace,
name = 'titanic_ds',
version = 1)
Procedimientos recomendados de control de versiones
Al crear una versión del conjunto de datos, no crear una copia adicional de los datos con el área de trabajo. Dado que los conjuntos de datos son referencias a los datos del servicio de almacenamiento, tiene una única fuente de verdad, administrada por el servicio de almacenamiento.
Importante
Si los datos a los que hace referencia el conjunto de datos se sobrescriben o eliminan, una llamada a una versión específica del conjunto de datos no revierte el cambio.
Al cargar datos desde un conjunto de datos, siempre se carga el contenido de datos actual al que hace referencia el conjunto de datos. Para garantizar la reproducibilidad de cada versión del conjunto de datos, se recomienda evitar la modificación del contenido de datos al que hace referencia la versión del conjunto de datos. Cuando se produzcan nuevos datos, guarde los nuevos archivos de datos en una carpeta de datos independiente y, a continuación, cree una nueva versión del conjunto de datos para incluir datos de esa nueva carpeta.
Esta imagen y código de ejemplo muestran la manera recomendada de estructurar las carpetas de datos y crear versiones de conjunto de datos que hagan referencia a esas carpetas:
from azureml.core import Dataset
# get the default datastore of the workspace
datastore = workspace.get_default_datastore()
# create & register weather_ds version 1 pointing to all files in the folder of week 27
datastore_path1 = [(datastore, 'Weather/week 27')]
dataset1 = Dataset.File.from_files(path=datastore_path1)
dataset1.register(workspace = workspace,
name = 'weather_ds',
description = 'weather data in week 27',
create_new_version = True)
# create & register weather_ds version 2 pointing to all files in the folder of week 27 and 28
datastore_path2 = [(datastore, 'Weather/week 27'), (datastore, 'Weather/week 28')]
dataset2 = Dataset.File.from_files(path = datastore_path2)
dataset2.register(workspace = workspace,
name = 'weather_ds',
description = 'weather data in week 27, 28',
create_new_version = True)
Control de versiones de un conjunto de datos de salida de canalización de ML
Puede usar un conjunto de datos como entrada y salida de cada paso de canalización de ML. Al volver a ejecutar canalizaciones, la salida de cada paso de canalización se registra como una nueva versión del conjunto de datos.
Las canalizaciones de Machine Learning rellenan la salida de cada paso en una nueva carpeta cada vez que se vuelve a ejecutar la canalización. Los conjuntos de datos de salida con versiones se vuelven reproducibles. Para más información, visite conjuntos de datos en canalizaciones.
from azureml.core import Dataset
from azureml.pipeline.steps import PythonScriptStep
from azureml.pipeline.core import Pipeline, PipelineData
from azureml.core. runconfig import CondaDependencies, RunConfiguration
# get input dataset
input_ds = Dataset.get_by_name(workspace, 'weather_ds')
# register pipeline output as dataset
output_ds = PipelineData('prepared_weather_ds', datastore=datastore).as_dataset()
output_ds = output_ds.register(name='prepared_weather_ds', create_new_version=True)
conda = CondaDependencies.create(
pip_packages=['azureml-defaults', 'azureml-dataprep[fuse,pandas]'],
pin_sdk_version=False)
run_config = RunConfiguration()
run_config.environment.docker.enabled = True
run_config.environment.python.conda_dependencies = conda
# configure pipeline step to use dataset as the input and output
prep_step = PythonScriptStep(script_name="prepare.py",
inputs=[input_ds.as_named_input('weather_ds')],
outputs=[output_ds],
runconfig=run_config,
compute_target=compute_target,
source_directory=project_folder)
Seguimiento de datos en los experimentos
Azure Machine Learning realiza un seguimiento de los datos en todo el experimento como conjuntos de datos de entrada y salida. Estos son los escenarios en los que se realiza un seguimiento de los datos como conjunto de datos de entrada:
Como objeto
DatasetConsumptionConfig
, mediante el parámetroinputs
oarguments
del objetoScriptRunConfig
, al enviar el trabajo del experimentoCuando el script llama a determinados métodos,
get_by_name()
oget_by_id()
, por ejemplo. El nombre asignado al conjunto de datos en el momento en que registró ese conjunto de datos en el área de trabajo es el nombre mostrado
Estos son los escenarios en los que se realiza un seguimiento de los datos como conjunto de datos de entrada:
Pase un objeto
OutputFileDatasetConfig
a través del parámetrooutputs
oarguments
al enviar un trabajo de experimento.OutputFileDatasetConfig
objetos también pueden conservar los datos entre los pasos de la canalización. Para obtener más información, visite Mover datos entre los pasos de canalización de MLRegistrar un conjunto de datos en el script. El nombre asignado al conjunto de datos cuando lo registró en el área de trabajo es el nombre mostrado. En este ejemplo de código,
training_ds
es el nombre que se muestra:training_ds = unregistered_ds.register(workspace = workspace, name = 'training_ds', description = 'training data' )
Envío de un trabajo secundario, con un conjunto de datos no registrado, en el script. Este envío da como resultado un conjunto de datos guardado anónimo
Seguimiento de conjuntos de datos en trabajos de experimento
Para cada experimento de Machine Learning, puede realizar un seguimiento de los conjuntos de datos de entrada del objeto Job
del experimento. En este ejemplo de código se usa el método get_details()
para realizar un seguimiento de los conjuntos de datos de entrada usados con la ejecución del experimento:
# get input datasets
inputs = run.get_details()['inputDatasets']
input_dataset = inputs[0]['dataset']
# list the files referenced by input_dataset
input_dataset.to_path()
También puede encontrar el input_datasets
desde experimentos con Azure Machine Learning Studio.
En este recorte de pantalla se muestra dónde encontrar el conjunto de datos de entrada de un experimento en Estudio de Azure Machine Learning. Para este ejemplo, comience en el panel Experimentos y abra la pestaña Propiedades para una ejecución específica del keras-mnist
experimento.
Este código registra modelos con conjuntos de datos:
model = run.register_model(model_name='keras-mlp-mnist',
model_path=model_path,
datasets =[('training data',train_dataset)])
Después del registro, puede ver la lista de modelos registrados con el conjunto de datos con Python o el studio.
El recorte de pantalla siguiente se encuentra en el panel Conjuntos de datos, en Activos. Seleccione el conjunto de datos y, a continuación, seleccione la pestaña Modelos para obtener una lista de los modelos registrados con el conjunto de datos.