Udostępnij za pośrednictwem


Zarządzanie środowiskami usługi Azure Machine Learning przy użyciu interfejsu wiersza polecenia i zestawu SDK (wersja 2)

DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure w wersji 2 (current)Zestaw PYTHON SDK azure-ai-ml v2 (bieżąca)

Środowiska usługi Azure Machine Learning definiują środowiska wykonywania dla zadań lub wdrożeń i hermetyzują zależności dla kodu. Usługa Azure Machine Learning używa specyfikacji środowiska do utworzenia kontenera platformy Docker, w którym jest uruchamiany kod trenowania lub oceniania w określonym obiekcie docelowym obliczeniowym. Środowisko można zdefiniować na podstawie specyfikacji conda, obrazu platformy Docker lub kontekstu kompilacji platformy Docker.

Z tego artykułu dowiesz się, jak tworzyć środowiska usługi Azure Machine Learning i zarządzać nimi przy użyciu zestawu SDK i interfejsu wiersza polecenia (wersja 2).

Wymagania wstępne

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

Napiwek

W przypadku w pełni funkcjonalnego środowiska programistycznego użyj programu Visual Studio Code i rozszerzenia usługi Azure Machine Learning, aby zarządzać zasobami usługi Azure Machine Learning i trenować modele uczenia maszynowego.

Klonowanie repozytorium przykładów

Aby uruchomić przykłady trenowania, najpierw sklonuj repozytorium przykładów. W przypadku przykładów interfejsu wiersza polecenia przejdź do cli katalogu . W przypadku przykładów zestawu SDK przejdź do sdk/python/assets/environment katalogu:

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

Pamiętaj, że --depth 1 klonuje tylko najnowsze zatwierdzenie do repozytorium, co skraca czas na ukończenie operacji.

Nawiązywanie połączenia z obszarem roboczym

Napiwek

Użyj poniższych kart, aby wybrać metodę, której chcesz użyć do pracy ze środowiskami. Wybranie karty spowoduje automatyczne przełączenie wszystkich kart w tym artykule na tę samą kartę. W dowolnym momencie możesz wybrać inną kartę.

W przypadku korzystania z interfejsu wiersza polecenia platformy Azure potrzebne są parametry identyfikatora — subskrypcja, grupa zasobów i nazwa obszaru roboczego. Chociaż można określić te parametry dla każdego polecenia, można również ustawić wartości domyślne, które są używane dla wszystkich poleceń. Użyj następujących poleceń, aby ustawić wartości domyślne. Zastąp <subscription ID>wartości , <Azure Machine Learning workspace name>i <resource group> wartościami konfiguracji:

az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>

Wyselekcjonowane środowiska

W usłudze Azure Machine Learning istnieją dwa typy środowisk: wyselekcjonowane i niestandardowe. Wyselekcjonowane środowiska to wstępnie zdefiniowane środowiska zawierające popularne struktury uczenia maszynowego i narzędzia. Środowiska niestandardowe są definiowane przez użytkownika i można je utworzyć za pomocą polecenia az ml environment create.

Nadzorowane środowiska są udostępniane przez usługę Azure Machine Learning i są domyślnie dostępne. Usługa Azure Machine Learning rutynowo aktualizuje te środowiska przy użyciu najnowszych wersji platformy i utrzymuje je w celu stosowania poprawek błędów i poprawek zabezpieczeń. Są one wspierane przez buforowane obrazy platformy Docker, co zmniejsza koszt przygotowania zadania i czas wdrażania modelu.

Możesz użyć tych wyselekcjonowanych środowisk poza ramką na potrzeby trenowania lub wdrażania, odwołując się do określonej wersji lub najnowszej wersji środowiska. Użyj następującej składni: azureml://registries/azureml/environment/<curated-environment-name>/versions/<version-number> lub azureml://registries/azureml/environment/<curated-environment-name>/labels/latest. Można ich również używać jako odwołania do własnych środowisk niestandardowych, modyfikując pliki Dockerfile, które są kopiami zapasowymi tych wyselekcjonowanych środowisk.

Zestaw dostępnych środowisk wyselekcjonowanych można wyświetlić w interfejsie użytkownika usługi Azure Machine Learning Studio lub przy użyciu interfejsu wiersza polecenia (wersja 2) za pośrednictwem usługi az ml environment list.

Napiwek

Podczas pracy ze środowiskami nadzorowanymi w interfejsie wiersza polecenia lub zestawie SDK nazwa środowiska zaczyna się od AzureML- nazwy środowiska wyselekcjonowanego. W przypadku korzystania z usługi Azure Machine Learning Studio nie mają tego prefiksu. Przyczyną tej różnicy jest to, że interfejs użytkownika studio wyświetla wyselekcjonowane i niestandardowe środowiska na osobnych kartach, więc prefiks nie jest konieczny. Interfejs wiersza polecenia i zestaw SDK nie mają tej separacji, dlatego prefiks jest używany do rozróżniania środowisk wyselekcjonowanych i niestandardowych.

Tworzenie środowiska niestandardowego

Środowisko można zdefiniować na podstawie obrazu platformy Docker, kontekstu kompilacji platformy Docker i specyfikacji conda z obrazem platformy Docker.

Tworzenie środowiska na podstawie obrazu platformy Docker

Aby zdefiniować środowisko na podstawie obrazu platformy Docker, podaj identyfikator URI obrazu hostowanego w rejestrze, takim jak Docker Hub lub Azure Container Registry.

Poniższy przykład to plik specyfikacji YAML dla środowiska zdefiniowanego na podstawie obrazu platformy Docker. Obraz z oficjalnego repozytorium PyTorch w usłudze Docker Hub jest określany za pośrednictwem image właściwości w pliku YAML.

$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: docker-image-example
image: pytorch/pytorch:latest
description: Environment created from a Docker image.

Aby utworzyć środowisko:

az ml environment create --file assets/environment/docker-image.yml

Napiwek

Usługa Azure Machine Learning obsługuje zestaw obrazów podstawowych opartych na procesorze CPU i procesorze GPU Ubuntu Linux z typowymi zależnościami systemowymi. Na przykład obrazy procesora GPU zawierają miniconda, OpenMPI, CUDA, cuDNN i NCCL. Możesz użyć tych obrazów dla środowisk lub użyć odpowiednich plików Dockerfile jako odwołania podczas tworzenia własnych obrazów niestandardowych.

Aby zapoznać się z zestawem obrazów podstawowych i odpowiadającymi im plikami Dockerfile, zobacz repozytorium AzureML-Containers.

Tworzenie środowiska na podstawie kontekstu kompilacji platformy Docker

Zamiast definiować środowisko ze wstępnie utworzonego obrazu, można również zdefiniować je z kontekstu kompilacji platformy Docker. W tym celu określ katalog, który służy jako kontekst kompilacji. Ten katalog powinien zawierać plik Dockerfile (nie większy niż 1 MB) i inne pliki potrzebne do skompilowania obrazu.

Poniższy przykład to plik specyfikacji YAML dla środowiska zdefiniowanego z kontekstu kompilacji. Ścieżka lokalna do folderu kontekstu kompilacji jest określona w build.path polu, a ścieżka względna do pliku Dockerfile w tym folderze kontekstu kompilacji jest określona build.dockerfile_path w polu. Jeśli build.dockerfile_path zostanie pominięty w pliku YAML, usługa Azure Machine Learning szuka pliku Dockerfile o nazwie Dockerfile w katalogu głównym kontekstu kompilacji.

W tym przykładzie kontekst kompilacji zawiera plik Dockerfile o nazwie Dockerfile i requirements.txt plik, do którego odwołuje się plik Dockerfile do instalowania pakietów języka Python.

$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: docker-context-example
build:
  path: docker-contexts/python-and-pip

Aby utworzyć środowisko:

az ml environment create --file assets/environment/docker-context.yml

Usługa Azure Machine Learning rozpoczyna tworzenie obrazu z kontekstu kompilacji po utworzeniu środowiska. Stan kompilacji można monitorować i wyświetlać dzienniki kompilacji w interfejsie użytkownika programu Studio.

Tworzenie środowiska na podstawie specyfikacji conda

Środowisko można zdefiniować przy użyciu standardowego pliku konfiguracji COnda YAML, który zawiera zależności dla środowiska conda. Aby uzyskać informacje na temat tego standardowego formatu, zobacz Ręczne tworzenie środowiska .

Należy również określić podstawowy obraz platformy Docker dla tego środowiska. Usługa Azure Machine Learning tworzy środowisko conda na podstawie dostarczonego obrazu platformy Docker. Jeśli zainstalujesz pewne zależności języka Python na obrazie platformy Docker, te pakiety nie będą istnieć w środowisku wykonywania, co spowoduje awarie środowiska uruchomieniowego. Domyślnie usługa Azure Machine Learning tworzy środowisko Conda z określonymi zależnościami i uruchamia zadanie w tym środowisku zamiast używać dowolnych bibliotek języka Python zainstalowanych na obrazie podstawowym.

Poniższy przykład to plik specyfikacji YAML dla środowiska zdefiniowanego ze specyfikacji conda. W tym miejscu ścieżka względna do pliku conda z pliku YAML środowiska usługi Azure Machine Learning jest określana conda_file za pośrednictwem właściwości . Alternatywnie można zdefiniować specyfikację conda w tekście przy użyciu conda_file właściwości, zamiast definiować ją w osobnym pliku.

$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: docker-image-plus-conda-example
image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04
conda_file: conda-yamls/pydata.yml
description: Environment created from a Docker image plus Conda environment.

Aby utworzyć środowisko:

az ml environment create --file assets/environment/docker-image-plus-conda.yaml

Usługa Azure Machine Learning tworzy końcowy obraz platformy Docker ze specyfikacji tego środowiska, gdy środowisko jest używane w zadaniu lub wdrożeniu. Możesz również ręcznie wyzwolić kompilację środowiska w interfejsie użytkownika programu Studio.

Zarządzaj środowiskami

Zestaw SDK i interfejs wiersza polecenia (wersja 2) umożliwiają również zarządzanie cyklem życia zasobów środowiska usługi Azure Machine Learning.

List

Wyświetl listę wszystkich środowisk w obszarze roboczym:

az ml environment list

Wyświetl listę wszystkich wersji środowiska pod daną nazwą:

az ml environment list --name docker-image-example

Pokaż

Uzyskaj szczegółowe informacje o określonym środowisku:

az ml environment show --name docker-image-example --version 1

Zaktualizuj

Zaktualizuj modyfikowalne właściwości określonego środowiska:

az ml environment update --name docker-image-example --version 1 --set description="This is an updated description."

Ważne

W przypadku środowisk tylko description i tags można je aktualizować. Wszystkie inne właściwości są niezmienne; jeśli musisz zmienić dowolne z tych właściwości, należy utworzyć nową wersję środowiska.

Archiwizuj

Archiwizowanie środowiska domyślnie ukrywa je przed zapytaniami listy (az ml environment list). Nadal możesz odwoływać się do zarchiwizowanego środowiska i używać go w przepływach pracy. Możesz zarchiwizować wszystkie wersje środowiska lub tylko określoną wersję.

Jeśli nie określisz wersji, wszystkie wersje środowiska pod daną nazwą zostaną zarchiwizowane. Jeśli tworzysz nową wersję środowiska w zarchiwizowanym kontenerze środowiska, ta nowa wersja zostanie automatycznie ustawiona jako zarchiwizowana.

Zarchiwizuj wszystkie wersje środowiska:

az ml environment archive --name docker-image-example

Zarchiwizuj określoną wersję środowiska:

az ml environment archive --name docker-image-example --version 1

Ważne

Archiwizowanie wersji środowiska nie powoduje usunięcia buforowanego obrazu w rejestrze kontenerów. Jeśli chcesz usunąć buforowany obraz skojarzony z określonym środowiskiem, możesz użyć polecenia az acr repository delete w skojarzonym ze środowiskiem repozytorium.

Używanie środowisk do trenowania

Aby użyć środowiska niestandardowego do zadania szkoleniowego, określ environment pole konfiguracji YAML zadania. Możesz odwołać się do istniejącego zarejestrowanego środowiska usługi Azure Machine Learning za pośrednictwem programu environment: azureml:<environment-name>:<environment-version> lub environment: azureml:<environment-name>@latest (w celu odwołania się do najnowszej wersji środowiska) lub zdefiniować wbudowaną specyfikację środowiska. W przypadku definiowania środowiska wbudowanego nie należy określać name pól i version , ponieważ te środowiska są traktowane jako środowiska "niezarejestrowane" i nie są śledzone w rejestrze zasobów środowiska.

Po przesłaniu zadania szkoleniowego tworzenie nowego środowiska może potrwać kilka minut. Czas trwania zależy od rozmiaru wymaganych zależności. Środowiska są buforowane przez usługę. Tak długo, jak definicja środowiska pozostaje niezmieniona, poniesiesz pełny czas instalacji tylko raz.


Aby uzyskać więcej informacji na temat używania środowisk w zadaniach, zobacz Trenowanie modeli.

Używanie środowisk na potrzeby wdrożeń modeli

Środowiska dla wdrożeń modelu można również używać zarówno w trybie online, jak i wsadowym oceniania. W tym celu określ environment pole w konfiguracji YAML wdrożenia.

Aby uzyskać więcej informacji na temat używania środowisk we wdrożeniach, zobacz Wdrażanie i ocenianie modelu uczenia maszynowego przy użyciu punktu końcowego online.

Następne kroki