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_file
metody , uri_folder
lub 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:
Znajomość rejestrów i pojęć dotyczących danych usługi Azure Machine Learning w usłudze Azure Machine Learning.
Rejestr usługi Azure Machine Learning do udostępniania danych. Aby utworzyć rejestr, zobacz Dowiedz się, jak utworzyć rejestr.
Obszar roboczy usługi Azure Machine Learning. Jeśli go nie masz, wykonaj kroki opisane w artykule Szybki start: tworzenie zasobów obszaru roboczego, aby je utworzyć.
Ważne
Region platformy Azure (lokalizacja), w którym tworzysz obszar roboczy, musi znajdować się na liście obsługiwanych regionów rejestru usługi Azure Machine Learning.
Środowisko i składnik utworzony w artykule How to share models, components, and environments (Jak udostępniać modele, składniki i środowiska).
Interfejs wiersza polecenia platformy
ml
Azure i rozszerzenie lub zestaw SDK języka Python usługi Azure Machine Learning w wersji 2:Aby zainstalować interfejs wiersza polecenia platformy Azure i rozszerzenie, zobacz Instalowanie, konfigurowanie i używanie interfejsu wiersza polecenia (wersja 2).
Ważne
W przykładach interfejsu wiersza polecenia w tym artykule założono, że używasz powłoki Bash (lub zgodnej). Na przykład z systemu Linux lub Podsystem Windows dla systemu Linux.
W przykładach założono również, że skonfigurowano wartości domyślne dla interfejsu wiersza polecenia platformy Azure, aby nie trzeba było określać parametrów subskrypcji, obszaru roboczego, grupy zasobów ani lokalizacji. Aby ustawić ustawienia domyślne, użyj następujących poleceń. Zastąp następujące parametry wartościami konfiguracji:
- Zamień wartość
<subscription>
na identyfikator swojej subskrypcji platformy Azure. - Zastąp
<workspace>
ciąg nazwą obszaru roboczego usługi Azure Machine Learning. - Zastąp element
<resource-group>
grupą zasobów platformy Azure zawierającą obszar roboczy. - Zastąp element
<location>
regionem platformy Azure zawierającym obszar roboczy.
az account set --subscription <subscription> az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
Bieżące wartości domyślne można zobaczyć za pomocą
az configure -l
polecenia .- Zamień wartość
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.yml
pliku .
# 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 zmodyfikujcompute
pole podjobs.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>