Udostępnij za pomocą


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

DOTYCZY: Rozszerzenie Azure CLI ml w wersji 2 (aktualna)Pakiet Python SDK azure-ai-ml v2 (aktualna)

Środowiska Azure Machine Learning definiują środowiska wykonawcze dla zadań lub wdrożeń i obejmują 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

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 przełącz się do katalogu cli. W przypadku przykładów zestawu SDK przejdź do katalogu sdk/python/assets/environment.

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

Parametr --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 powoduje 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>, <Azure Machine Learning workspace name> i <resource group> wartościami dla Twojej 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żesz je również wykorzystać jako odniesienie do własnych niestandardowych środowisk, modyfikując pliki Dockerfile, które wspierają te wyselekcjonowane środowiska.

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 kuratorowanymi w interfejsie wiersza polecenia lub zestawie SDK nazwa środowiska zaczyna się od AzureML- nazwy środowiska kuratorowanego. W przypadku korzystania z usługi Azure Machine Learning Studio nie mają tego prefiksu. Przyczyną tej różnicy jest to, że interfejs użytkownika studia wyświetla wyselekcjonowane i niestandardowe środowiska na osobnych kartach, więc prefiks nie jest konieczny. CLI i SDK nie mają tego rozdzielenia, więc prefiks jest używany do rozróżnienia pomiędzy środowiskami kuratorskimi a niestandardowymi.

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 pomocą 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 swoich środowisk lub użyć odpowiednich plików Dockerfile jako punkt odniesienia 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 polu build.path, a ścieżka względna do pliku Dockerfile w tym folderze kontekstowym jest określona w polu build.dockerfile_path. 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 budowy zawiera plik Dockerfile o nazwie Dockerfile oraz plik requirements.txt, do którego odwołuje się Dockerfile do instalacji pakietów 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 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 za pomocą właściwości conda_file określana jest ścieżka względna do pliku conda z pliku YAML środowiska usługi Azure Machine Learning. Alternatywnie można zdefiniować specyfikację conda bezpośrednio przy użyciu conda_file jako 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 uruchomić kompilację środowiska w interfejsie użytkownika 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.

Lista

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.

Archiwum

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ć pól name i version, ponieważ takie środowiska są traktowane jako "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 pole environment w konfiguracji wdrożenia YAML.

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