Udostępnianie danych między obszarami roboczymi przy użyciu 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

Możesz mieć dane 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.

Oto kilka przykładów:

  • Zespół chce udostępnić publiczny zestaw danych, który jest wstępnie przetworzony i gotowy do użycia w eksperymentach.
  • Twoja organizacja nabył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 podzbiorowi 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

Napiwek

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

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

Typ Interfejs API w wersji 2 Scenariusz kanoniczny
Plik: odwołanie do pojedynczego pliku uri_file Odczyt/zapis pojedynczego pliku — plik może mieć dowolny format.
Folder: Odwołanie 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, audio, plików wideo znajdujących się w katalogu.
Tabela: odwołanie do tabeli danych mltable Masz złożony schemat, który podlega częstym zmianom lub potrzebujesz podzbioru 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.

Napiwek

"Lokalny" oznacza magazyn lokalny dla używanego komputera. 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 nyc_taxi_data_regression przykładzie 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

Napiwek

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

Utwórz połączenie klienta z obszarem roboczym i rejestrem usługi Azure Machine Learning. W poniższym przykładzie zastąp <...> wartości symboli zastępczych wartościami odpowiednimi dla 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.

Napiwek

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 za --workspace-name pomocą polecenia powoduje utworzenie danych w obszarze roboczym podczas uruchamiania polecenia za --registry-name pomocą polecenia tworzy dane w rejestrze.

Źródło danych znajduje się we wcześniej sklonowanym 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 <registry-name> ciąg 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 pliku lub określić inną wersję interfejsu wiersza polecenia, która zastępuje wartość wersji w data-registry.ymlpliku .

# 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

Napiwek

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 z poleceniem az ml data show , aby wyświetlić szczegóły zasobu.

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

Napiwek

Jeśli użyto innej nazwy lub wersji danych, zastąp odpowiednio --name 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 trenowania w następnej sekcji.

Napiwek

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

W przypadku 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 w celu wytrenowania modelu.

Uwaga

Kluczowym aspektem jest to, że ten potok będzie uruchamiany w obszarze roboczym przy użyciu danych treningowych, 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. To zadanie szkoleniowe można uruchomić w dowolnym obszarze roboczym, do którego masz dostęp bez obaw o udostępnianie danych szkoleniowych w tym obszarze roboczym.

Sprawdź, czy jesteś w cli/jobs/pipelines-with-components/nyc_taxi_data_regression katalogu. Edytuj sekcję component w train_job sekcji single-job-pipeline.yml pliku, aby odwołać się do składnika trenowania i path w training_data sekcji, aby odwołać się do zasobu danych utworzonego w poprzednich sekcjach. W poniższym przykładzie pokazano, jak wygląda po single-job-pipeline.yml edycji. Zastąp ciąg <registry_name> 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 zostanie uruchomione 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 cpu-cluster lub zmodyfikuj compute pole pod jobs.train_job.compute nazwą obliczeń.

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

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

Napiwek

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 dla elementu az ml job create do 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 to zawartość 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że być udostępniany 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