Przechowywanie wersji i śledzenie zestawów danych usługi Azure Machine Edukacja

DOTYCZY: Zestaw SDK języka Python azureml w wersji 1

W tym artykule dowiesz się, jak wersję i śledzić zestawy danych usługi Azure Machine Edukacja w celu odtworzenia. Przechowywanie wersji zestawu danych zawiera zakładki określone stany danych, dzięki czemu można zastosować określoną wersję zestawu danych na potrzeby przyszłych eksperymentów.

Możesz chcieć użyć wersji zasobów usługi Azure Machine Edukacja w następujących typowych scenariuszach:

  • Gdy nowe dane staną się dostępne do ponownego trenowania
  • Zastosowanie różnych metod przygotowywania danych lub inżynierii cech

Wymagania wstępne

Rejestrowanie i pobieranie wersji zestawu danych

Możesz wersję, ponownie użyć i udostępnić zarejestrowany zestaw danych w eksperymentach i współpracownikom. Możesz zarejestrować wiele zestawów danych pod tą samą nazwą i pobrać określoną wersję według nazwy i numeru wersji.

Rejestrowanie wersji zestawu danych

Ten przykładowy kod ustawia create_new_version parametr titanic_ds zestawu danych na True, aby zarejestrować nową wersję tego zestawu danych. Jeśli obszar roboczy nie ma zarejestrowanego zestawu titanic_ds danych, kod tworzy nowy zestaw danych o nazwie titanic_dsi ustawia jego wersję na 1.

titanic_ds = titanic_ds.register(workspace = workspace,
                                 name = 'titanic_ds',
                                 description = 'titanic training data',
                                 create_new_version = True)

Pobieranie zestawu danych według nazwy

Domyślnie Dataset metoda get_by_name() klasy zwraca najnowszą wersję zestawu danych zarejestrowanego w obszarze roboczym.

Ten kod zwraca wersję 1 titanic_ds zestawu danych.

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)

Najlepsze rozwiązanie dotyczące przechowywania wersji

Podczas tworzenia wersji zestawu danych nie można utworzyć dodatkowej kopii danych z obszarem roboczym. Ponieważ zestawy danych odwołują się do danych w usłudze magazynu, masz jedno źródło prawdy zarządzane przez usługę magazynu.

Ważne

Jeśli dane, do których odwołuje się zestaw danych, zostaną zastąpione lub usunięte, wywołanie określonej wersji zestawu danych nie spowoduje odwrócenia zmiany.

Podczas ładowania danych z zestawu danych bieżąca zawartość danych, do której odwołuje się zestaw danych, jest zawsze ładowana. Jeśli chcesz upewnić się, że każda wersja zestawu danych jest odtwarzalna, zalecamy uniknięcie modyfikacji zawartości danych, do której odwołuje się wersja zestawu danych. Gdy zostaną wprowadzone nowe dane, zapisz nowe pliki danych w osobnym folderze danych, a następnie utwórz nową wersję zestawu danych w celu uwzględnienia danych z tego nowego folderu.

Ten obraz i przykładowy kod pokazują zalecany sposób tworzenia zarówno struktury folderów danych, jak i tworzenia wersji zestawów danych odwołujących się do tych folderów:

Folder structure

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)

Przechowywanie wersji wyjściowego zestawu danych potoku uczenia maszynowego

Zestaw danych można użyć jako danych wejściowych i wyjściowych każdego kroku potoku uczenia maszynowego. Podczas ponownego uruchamiania potoków dane wyjściowe każdego kroku potoku są rejestrowane jako nowa wersja zestawu danych.

Potoki Edukacja maszyny wypełniają dane wyjściowe każdego kroku w nowym folderze przy każdym ponownym uruchomieniu potoku. Wersjonowane wyjściowe zestawy danych stają się następnie odtwarzalne. Aby uzyskać więcej informacji, odwiedź stronę Zestawy danych w potokach.

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)

Śledzenie danych w eksperymentach

Usługa Azure Machine Edukacja śledzi dane w całym eksperymencie jako zestawy danych wejściowych i wyjściowych. W tych scenariuszach dane są śledzone jako wejściowy zestaw danych:

  • DatasetConsumptionConfig Jako obiekt za pomocą parametru inputsScriptRunConfig lub arguments obiektu podczas przesyłania zadania eksperymentu

  • Gdy skrypt wywołuje niektóre metody — get_by_name() lub get_by_id() — na przykład. Nazwa przypisana do zestawu danych w momencie zarejestrowania tego zestawu danych w obszarze roboczym to wyświetlana nazwa

W tych scenariuszach dane są śledzone jako wyjściowy zestaw danych:

  • OutputFileDatasetConfig Przekaż obiekt za pomocą parametru outputs lub arguments podczas przesyłania zadania eksperymentu. OutputFileDatasetConfig obiekty mogą również utrwalać dane między krokami potoku. Aby uzyskać więcej informacji, zobacz Przenoszenie danych między krokami potoku uczenia maszynowego

  • Zarejestruj zestaw danych w skrycie. Nazwa przypisana do zestawu danych po zarejestrowaniu go w obszarze roboczym to wyświetlana nazwa. W tym przykładzie training_ds kodu jest wyświetlana nazwa:

    training_ds = unregistered_ds.register(workspace = workspace,
                                     name = 'training_ds',
                                     description = 'training data'
                                     )
    
  • Przesyłanie zadania podrzędnego z niezarejestrowanym zestawem danych w skry skryptzie. To przesłanie powoduje anonimowy zapisany zestaw danych

Śledzenie zestawów danych w zadaniach eksperymentów

Dla każdego eksperymentu machine Edukacja można śledzić wejściowe zestawy danych dla obiektu eksperymentuJob. W tym przykładzie kodu użyto get_details() metody do śledzenia wejściowych zestawów danych używanych z przebiegiem eksperymentu:

# get input datasets
inputs = run.get_details()['inputDatasets']
input_dataset = inputs[0]['dataset']

# list the files referenced by input_dataset
input_dataset.to_path()

Możesz również znaleźć eksperymenty input_datasets z programem Azure Machine Edukacja Studio.

Ten zrzut ekranu przedstawia miejsce znalezienia wejściowego zestawu danych eksperymentu w usłudze Azure Machine Edukacja Studio. W tym przykładzie zacznij od okienka Eksperymenty i otwórz kartę Właściwości dla określonego przebiegu eksperymentu. keras-mnist

Input datasets

Ten kod rejestruje modele przy użyciu zestawów danych:

model = run.register_model(model_name='keras-mlp-mnist',
                           model_path=model_path,
                           datasets =[('training data',train_dataset)])

Po rejestracji można wyświetlić listę modeli zarejestrowanych w zestawie danych przy użyciu języka Python lub studio.

Zrzut ekranu thia pochodzi z okienka Zestawy danych w obszarze Zasoby. Wybierz zestaw danych, a następnie wybierz kartę Modele , aby wyświetlić listę modeli zarejestrowanych w zestawie danych.

Input datasets models

Następne kroki