Zarządzanie środowiskami usługi Azure Machine Edukacja za pomocą 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 Edukacja używa specyfikacji środowiska do utworzenia kontenera platformy Docker, w którym działa 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 Edukacja 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 azure Machine Edukacja, aby zarządzać zasobami usługi Azure Machine Edukacja 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.

Połączenie do obszaru roboczego

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 będą 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

Istnieją dwa typy środowisk w usłudze Azure Machine Edukacja: wyselekcjonowane i niestandardowe środowiska. 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.

Wyselekcjonowane środowiska są udostępniane przez usługę Azure Machine Edukacja i są domyślnie dostępne. Usługa Azure Machine Edukacja rutynowo aktualizuje te środowiska przy użyciu najnowszych wersji platformy i utrzymuje je na potrzeby 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 Edukacja Studio lub przy użyciu interfejsu wiersza polecenia (wersja 2) za pośrednictwem usługi az ml environment list.

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 Edukacja 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 będzie 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 Edukacja wyszuka plik 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 Edukacja rozpocznie kompilowanie 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 Edukacja skompiluje ś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 Edukacja utworzy środowisko Conda z określonymi zależnościami i wykona 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 Edukacja 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 Edukacja skompiluje końcowy obraz platformy Docker ze specyfikacji ś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 Edukacja.

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 spowoduje ukrycie go domyślnie 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 utworzysz 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

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 Edukacja za pośrednictwem 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