Verze a sledování datových sad Azure Machine Learning
V tomto článku se dozvíte, jak verze a sledovat Azure Machine Learning datových sad pro reprodukovatelnost. Správa verzí datové sady je způsob, jak si vytvořit záložku stavu dat, abyste mohli použít konkrétní verzi datové sady pro budoucí experimenty.
Typické scénáře správy verzí:
- Když jsou k dispozici nová data pro opětovné natrénování
- Při použití různých přístupů k přípravě dat nebo technických přístupech k funkcím
Požadavky
Pro účely tohoto kurzu potřebujete:
Azure Machine Learning SDK pro Python nainstalovaný. Tato sada SDK zahrnuje balíček azureml-datasets .
Pracovní prostor Azure Machine Learning Načtěte existující kód spuštěním následujícího kódu nebo vytvořte nový pracovní prostor.
import azureml.core from azureml.core import Workspace ws = Workspace.from_config()
Registrace a načtení verzí datové sady
Registrací datové sady můžete verze, opakované použití a sdílení dat napříč experimenty a kolegy. Můžete zaregistrovat více datových sad pod stejným názvem a načíst konkrétní verzi podle názvu a čísla verze.
Registrace verze datové sady
Následující kód zaregistruje novou verzi titanic_ds
datové sady nastavením parametru create_new_version
na True
. Pokud v pracovním prostoru není zaregistrovaná žádná datová titanic_ds
sada, vytvoří kód novou datovou sadu s názvem titanic_ds
a nastaví její verzi na 1.
titanic_ds = titanic_ds.register(workspace = workspace,
name = 'titanic_ds',
description = 'titanic training data',
create_new_version = True)
Načtení datové sady podle názvu
Ve výchozím nastavení vrátí metoda get_by_name() třídy Dataset
nejnovější verzi datové sady zaregistrované v pracovním prostoru.
Následující kód získá verzi 1 titanic_ds
datové sady.
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)
Osvědčený postup správy verzí
Při vytváření verze datové sady nevytváříte další kopii dat s pracovním prostorem. Vzhledem k tomu, že datové sady jsou odkazy na data ve vaší službě úložiště, máte jediný zdroj pravdy, který spravuje vaše služba úložiště.
Důležité
Pokud jsou data odkazovaná vaší datovou sadou přepsána nebo odstraněna, volání konkrétní verze datové sady se nezmění .
Při načítání dat z datové sady se vždy načte aktuální obsah dat odkazovaný datovou sadou. Pokud chcete zajistit, aby každá verze datové sady byla reprodukovatelná, doporučujeme neupravovat obsah dat, na který odkazuje verze datové sady. Když se nová data přidají, uložte nové datové soubory do samostatné datové složky a vytvořte novou verzi datové sady, která bude obsahovat data z této nové složky.
Následující obrázek a ukázkový kód ukazují doporučený způsob strukturování datových složek a vytváření verzí datových sad, které odkazují na tyto složky:
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)
Verze výstupní datové sady kanálu ML
Datovou sadu můžete použít jako vstup a výstup každého kroku kanálu ML. Při opětovném spuštění kanálů se výstup každého kroku kanálu zaregistruje jako nová verze datové sady.
ML kanály naplní výstup každého kroku do nové složky při každém opětovném spuštění kanálu. Toto chování umožňuje reprodukovatelné výstupní výstupní datové sady verzí. Přečtěte si další informace o datových sadách v kanálech.
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)
Sledování dat v experimentech
Azure Machine Learning sleduje data v rámci experimentu jako vstupní a výstupní datové sady.
Tady jsou scénáře, ve kterých se vaše data sledují jako vstupní datová sada.
DatasetConsumptionConfig
Jako objekt prostřednictvím objektuinputs
neboarguments
parametru objektuScriptRunConfig
při odesílání spuštění experimentu.Pokud se metody jako get_by_name() nebo get_by_id() volají ve vašem skriptu. V tomto scénáři je název přiřazený k datové sadě, když jste ji zaregistrovali do pracovního prostoru, zobrazovaný název.
Tady jsou scénáře, ve kterých se vaše data sledují jako výstupní datová sada.
OutputFileDatasetConfig
Předání objektu buď prostřednictvím nebo parametruoutputs
arguments
při odesílání spuštění experimentu.OutputFileDatasetConfig
Objekty lze použít také k zachování dat mezi kroky kanálu. Viz Přesun dat mezi kroky kanálu ML.Zaregistrujte datovou sadu ve skriptu. V tomto scénáři je název přiřazený k datové sadě, když jste ji zaregistrovali do pracovního prostoru, zobrazovaný název. V následujícím příkladu je název,
training_ds
který by se zobrazil.training_ds = unregistered_ds.register(workspace = workspace, name = 'training_ds', description = 'training data' )
Odeslání podřízeného spuštění s neregistrovanou datovou sadou ve skriptu Výsledkem je anonymní uložená datová sada.
Trasování datových sad v spuštění experimentu
Pro každý Machine Learning experiment můžete snadno sledovat datové sady používané jako vstup s objektem experimentuRun
.
Následující kód používá metodu get_details()
ke sledování, které vstupní datové sady byly použity při spuštění experimentu:
# get input datasets
inputs = run.get_details()['inputDatasets']
input_dataset = inputs[0]['dataset']
# list the files referenced by input_dataset
input_dataset.to_path()
Můžete také najít input_datasets
experimenty pomocí studio Azure Machine Learning.
Následující obrázek ukazuje, kde najít vstupní datovou sadu experimentu na studio Azure Machine Learning. V tomto příkladu přejděte do podokna Experimenty a otevřete kartu Vlastnosti pro konkrétní spuštění experimentu. keras-mnist
K registraci modelů v datových sadách použijte následující kód:
model = run.register_model(model_name='keras-mlp-mnist',
model_path=model_path,
datasets =[('training data',train_dataset)])
Po registraci můžete zobrazit seznam modelů registrovaných v datové sadě pomocí Pythonu nebo přejít do studia.
Následující zobrazení je z podokna Datové sady v části Prostředky. Vyberte datovou sadu a pak vyberte kartu Modely pro seznam modelů zaregistrovaných v datové sadě.