Udostępnianie danych między obszarami roboczymi za pomocą rejestrów (wersja zapoznawcza)

Rejestr usługi Azure Machine Learning umożliwia współpracę między obszarami roboczymi w organizacji. Za pomocą rejestrów można udostępniać modele, składniki, środowiska i dane. Udostępnianie danych rejestrom jest obecnie funkcją w wersji zapoznawczej. W tym artykule omówiono sposób wykonywania następujących zadań:

  • Utwórz zasób danych w rejestrze.
  • Udostępnianie istniejącego zasobu danych z obszaru roboczego do rejestru
  • Użyj zasobu danych z rejestru jako danych wejściowych do zadania trenowania modelu w obszarze roboczym.

Ważne

Ta funkcja jest obecnie w publicznej wersji zapoznawczej. Ta wersja zapoznawcza jest udostępniana bez umowy dotyczącej poziomu usług i nie zalecamy korzystania z niej w przypadku obciążeń produkcyjnych. Niektóre funkcje mogą być nieobsługiwane lub ograniczone.

Aby uzyskać więcej informacji, zobacz Uzupełniające warunki korzystania z wersji zapoznawczych platformy Microsoft Azure.

Kluczowy scenariusz rozwiązany przez udostępnianie danych przy użyciu rejestru usługi Azure Machine Learning

Dane mogą być współużytkowane przez wiele zespołów, projektów lub obszarów roboczych w centralnej lokalizacji. Takie dane nie mają poufnych kontroli dostępu i mogą być szeroko używane w organizacji.

Przykłady:

  • Zespół chce udostępnić publiczny zestaw danych, który jest wstępnie przetworzony i gotowy do użycia w eksperymentach.
  • Twoja organizacja uzyskała określony zestaw danych dla projektu od zewnętrznego dostawcy i chce udostępnić go wszystkim zespołom pracującym nad projektem.
  • Zespół chce udostępniać zasoby danych między obszarami roboczymi w różnych regionach.

W tych scenariuszach można utworzyć zasób danych w rejestrze lub udostępnić istniejący zasób danych z obszaru roboczego do rejestru. Ten zasób danych może być następnie używany w wielu obszarach roboczych.

Scenariusze NIE rozwiązane przez udostępnianie danych przy użyciu rejestru usługi Azure Machine Learning

  • Udostępnianie poufnych danych, które wymagają szczegółowej kontroli dostępu. Nie można utworzyć zasobu danych w rejestrze, aby udostępnić go małym podzbiorom użytkowników/obszarów roboczych, podczas gdy rejestr jest dostępny dla wielu innych użytkowników w organizacji.

  • Udostępnianie danych dostępnych w istniejącym magazynie, które nie może być kopiowane lub jest zbyt duże lub zbyt drogie, aby można je było skopiować. Za każdym razem, gdy zasoby danych są tworzone w rejestrze, kopia danych jest pozyskiwana do magazynu rejestru, aby można je było replikować.

Typy zasobów danych obsługiwane przez rejestr usługi Azure Machine Learning

Porada

Zapoznaj się z następującymi scenariuszami kanonicznymi podczas podejmowania decyzji, czy chcesz użyć uri_filewartości , uri_folderlub mltable dla danego scenariusza.

Możesz utworzyć trzy typy zasobów danych:

Typ Interfejs API w wersji 2 Scenariusz kanoniczny
Plik: Odwoływanie się do pojedynczego pliku uri_file Odczyt/zapis pojedynczego pliku — plik może mieć dowolny format.
Folder: Odwoływanie się do pojedynczego folderu uri_folder Musisz odczytywać/zapisywać katalog plików parquet/CSV w bibliotece Pandas/Spark. Uczenie głębokie przy użyciu obrazów, tekstu, dźwięku, plików wideo znajdujących się w katalogu.
Tabeli: Odwoływanie się do tabeli danych mltable Masz złożony schemat, którego dotyczą częste zmiany, lub potrzebujesz podzestawu dużych danych tabelarycznych.

Ścieżki obsługiwane przez rejestr usługi Azure Machine Learning

Podczas tworzenia zasobu danych należy określić parametr ścieżki wskazujący lokalizację danych. Obecnie jedynymi obsługiwanymi ścieżkami są lokalizacje na komputerze lokalnym.

Porada

"Lokalne" oznacza magazyn lokalny dla komputera, którego używasz. Jeśli na przykład używasz laptopa, dysk lokalny. Jeśli wystąpienie obliczeniowe usługi Azure Machine Learning, dysk "lokalny" wystąpienia obliczeniowego.

Wymagania wstępne

Przed wykonaniem kroków opisanych w tym artykule upewnij się, że masz następujące wymagania wstępne:

Klonowanie repozytorium przykładów

Przykłady kodu w tym artykule są oparte na przykładzie nyc_taxi_data_regression w repozytorium przykładów. Aby użyć tych plików w środowisku projektowym, użyj następujących poleceń, aby sklonować repozytorium i zmienić katalogi na przykład:

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

W przykładzie interfejsu wiersza polecenia zmień katalogi na cli/jobs/pipelines-with-components/nyc_taxi_data_regression w lokalnym klonie repozytorium przykładów.

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

Tworzenie połączenia zestawu SDK

Porada

Ten krok jest wymagany tylko w przypadku korzystania z zestawu SDK języka Python.

Utwórz połączenie klienta z obszarem roboczym usługi Azure Machine Learning i rejestrem. W poniższym przykładzie zastąp <...> wartości symboli zastępczych wartościami odpowiednimi dla twojej konfiguracji. Na przykład identyfikator subskrypcji platformy Azure, nazwa obszaru roboczego, nazwa rejestru itp.:

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)

Tworzenie danych w rejestrze

Zasób danych utworzony w tym kroku jest używany w dalszej części tego artykułu podczas przesyłania zadania szkoleniowego.

Porada

To samo polecenie interfejsu wiersza polecenia az ml data create może służyć do tworzenia danych w obszarze roboczym lub rejestrze. Uruchomienie polecenia z --workspace-name poleceniem tworzy dane w obszarze roboczym, a uruchomienie polecenia z poleceniem --registry-name tworzy dane w rejestrze.

Źródło danych znajduje się w sklonowanym wcześniej repozytorium przykładów . W obszarze klonu lokalnego przejdź do następującej ścieżki katalogu: cli/jobs/pipelines-with-components/nyc_taxi_data_regression. W tym katalogu utwórz plik YAML o nazwie data-registry.yml i użyj następującego kodu YAML jako zawartości pliku:

$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/

Wartość path wskazuje data_transformed podkatalog, który zawiera dane udostępniane przy użyciu rejestru.

Aby utworzyć dane w rejestrze, użyj polecenia az ml data create. W poniższych przykładach zastąp ciąg <registry-name> nazwą rejestru.

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

Jeśli wystąpi błąd, że dane o tej nazwie i wersji już istnieją w rejestrze, możesz edytować version pole w data-registry.yml programie lub określić inną wersję interfejsu wiersza polecenia, która zastępuje wartość wersji w data-registry.ymlprogramie .

# 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

Porada

version=$(date +%s) Jeśli polecenie nie ustawi zmiennej $version w środowisku, zastąp $version zmienną liczbą losową.

name Zapisz dane i version z danych wyjściowych az ml data create polecenia i użyj ich za pomocą az ml data show polecenia , aby wyświetlić szczegóły elementu zawartości.

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

Porada

Jeśli użyto innej nazwy lub wersji danych, zastąp --name odpowiednio parametry i --version .

Można również użyć az ml data list --registry-name <registry-name> polecenia , aby wyświetlić listę wszystkich zasobów danych w rejestrze.

Tworzenie środowiska i składnika w rejestrze

Aby utworzyć środowisko i składnik w rejestrze, wykonaj kroki opisane w artykule Jak udostępniać modele, składniki i środowiska . Środowisko i składnik są używane w zadaniu szkoleniowym w następnej sekcji.

Porada

Możesz użyć środowiska i składnika z obszaru roboczego zamiast używać tych z rejestru.

Uruchamianie zadania potoku w obszarze roboczym przy użyciu składnika z rejestru

Podczas uruchamiania zadania potoku, które używa składnika i danych z rejestru, zasoby obliczeniowe są lokalne w obszarze roboczym. W poniższym przykładzie zadanie używa składnika szkoleniowego Scikit Learn i zasobu danych utworzonego w poprzednich sekcjach do trenowania modelu.

Uwaga

Kluczowym aspektem jest to, że ten potok będzie uruchamiany w obszarze roboczym przy użyciu danych szkoleniowych, które nie są w określonym obszarze roboczym. Dane są w rejestrze, który może być używany z dowolnym obszarem roboczym w organizacji. Możesz uruchomić to zadanie szkoleniowe w dowolnym obszarze roboczym, do którego masz dostęp bez obaw o udostępnienie danych szkoleniowych w tym obszarze roboczym.

Sprawdź, czy jesteś w cli/jobs/pipelines-with-components/nyc_taxi_data_regression katalogu. Edytuj sekcję component w sekcji pliku, train_job aby odwoływać się do składnika szkoleniowego single-job-pipeline.yml i path w sekcji training_data , aby odwoływać się do zasobu danych utworzonego w poprzednich sekcjach. W poniższym przykładzie pokazano, jak wygląda wygląd single-job-pipeline.yml po edycji. <registry_name> Zastąp ciąg nazwą rejestru:

$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: 

Ostrzeżenie

  • Przed uruchomieniem zadania potoku upewnij się, że obszar roboczy, w którym uruchomisz zadanie, znajduje się w regionie świadczenia usługi Azure obsługiwanym przez rejestr, w którym utworzono dane.
  • Upewnij się, że obszar roboczy ma klaster obliczeniowy o nazwie lub edytuj compute pole pod jobs.train_job.compute nazwą cpu-cluster obliczeń.

Uruchom zadanie potoku za az ml job create pomocą polecenia .

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

Porada

Jeśli nie skonfigurowano domyślnego obszaru roboczego i grupy zasobów, zgodnie z opisem w sekcji wymagań wstępnych, należy określić --workspace-name parametry i --resource-group do az ml job create pracy.

Aby uzyskać więcej informacji na temat uruchamiania zadań, zobacz następujące artykuły:

Udostępnianie danych z obszaru roboczego do rejestru

W poniższych krokach pokazano, jak udostępnić istniejący zasób danych z obszaru roboczego do rejestru.

Najpierw utwórz zasób danych w obszarze roboczym. Upewnij się, że jesteś w cli/assets/data katalogu. Obiekt local-folder.yml znajdujący się w tym katalogu służy do tworzenia zasobu danych w obszarze roboczym. Dane określone w tym pliku są dostępne w cli/assets/data/sample-data katalogu. Następujący kod YAML jest zawartością local-folder.yml pliku:

$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/

Aby utworzyć zasób danych w obszarze roboczym, użyj następującego polecenia:

az ml data create -f local-folder.yml

Aby uzyskać więcej informacji na temat tworzenia zasobów danych w obszarze roboczym, zobacz How to create data assets (Jak tworzyć zasoby danych).

Zasób danych utworzony w obszarze roboczym można udostępnić rejestrowi. Z rejestru można go używać w wielu obszarach roboczych. Należy pamiętać, że przekazujemy --share_with_name parametry i --share_with_version w funkcji udostępniania. Te parametry są opcjonalne i jeśli te dane nie zostaną przekazane, zostaną udostępnione tej samej nazwie i wersji, co w obszarze roboczym.

W poniższym przykładzie pokazano użycie polecenia udostępniania w celu udostępnienia zasobu danych. Zastąp <registry-name> ciąg nazwą rejestru, do którego będą udostępniane dane.

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>

Następne kroki