Co to są środowiska usługi Azure Machine Learning?

Środowiska usługi Azure Machine Edukacja to hermetyzacja środowiska, w którym odbywa się trenowanie uczenia maszynowego. Określają one pakiety języka Python i ustawienia oprogramowania wokół skryptów trenowania i oceniania. Środowiska są zarządzane i wersjonowane jednostki w obszarze roboczym usługi Machine Edukacja, które umożliwiają powtarzalne, możliwe do inspekcji i przenośne przepływy pracy uczenia maszynowego w różnych celach obliczeniowych.

Możesz użyć Environment obiektu w celu:

  • Opracowywanie skryptu szkoleniowego.
  • Ponowne użycie tego samego środowiska na maszynie azure Edukacja Compute na potrzeby trenowania modelu na dużą skalę.
  • Wdróż model przy użyciu tego samego środowiska.
  • Ponownie zajmij się środowiskiem, w którym został wytrenowany istniejący model.

Na poniższym diagramie pokazano, jak można użyć pojedynczego Environment obiektu zarówno w konfiguracji zadania (na potrzeby trenowania), jak i konfiguracji wnioskowania i wdrażania (w przypadku wdrożeń usług internetowych).

Diagram of an environment in machine learning workflow

Środowisko, docelowy obiekt obliczeniowy i skrypt szkoleniowy razem tworzą konfigurację zadania: pełną specyfikację zadania szkoleniowego.

Typy środowisk

Środowiska można zasadniczo podzielić na trzy kategorie: nadzorowane, zarządzane przez użytkownika i zarządzane przez system.

Nadzorowane środowiska są udostępniane przez usługę Azure Machine Edukacja i są domyślnie dostępne w obszarze roboczym. Przeznaczone do użycia tak, jak to jest, zawierają kolekcje pakietów i ustawień języka Python, aby ułatwić rozpoczęcie pracy z różnymi strukturami uczenia maszynowego. Te wstępnie utworzone środowiska umożliwiają również krótszy czas wdrażania. Nadzorowane środowiska są hostowane w usłudze AzureML Registry. Aby uzyskać pełną listę, zobacz środowiska w rejestrze azureml.

W środowiskach zarządzanych przez użytkownika odpowiadasz za skonfigurowanie środowiska i zainstalowanie każdego pakietu wymaganego przez skrypt trenowania na docelowym obiekcie obliczeniowym. Pamiętaj również, aby uwzględnić wszystkie zależności wymagane do wdrożenia modelu. Środowisko zarządzane przez użytkownika może mieć wartość BYOC (Bring Your Own Container) lub Kontekst kompilacji platformy Docker, który deleguje materializację obrazu do usługi AzureML.

Środowiska zarządzane przez system są używane, gdy chcesz , aby conda zarządzała środowiskiem języka Python. Nowe środowisko conda jest materializowane ze specyfikacji conda na podstawie podstawowego obrazu platformy Docker.

Tworzenie środowisk i zarządzanie nimi

Środowiska można tworzyć na podstawie klientów, takich jak azure Machine Edukacja Python SDK, Interfejs wiersza polecenia usługi Azure Machine Edukacja, strona Środowiska w programie Azure Machine Edukacja Studio i rozszerzenie programu VS Code. Każdy klient umożliwia dostosowanie obrazu podstawowego, pliku Dockerfile i warstwy języka Python w razie potrzeby.

Aby zapoznać się z konkretnymi przykładami kodu, zobacz sekcję "Tworzenie środowiska" w temacie How to use environments (Jak używać środowisk).

Środowiska są również łatwo zarządzane za pośrednictwem obszaru roboczego, co umożliwia:

  • Rejestrowanie środowisk.
  • Pobierz środowiska z obszaru roboczego, aby użyć ich do trenowania lub wdrażania.
  • Utwórz nowe wystąpienie środowiska, edytując istniejące.
  • Wyświetl zmiany w środowiskach w czasie, co zapewnia powtarzalność.
  • Twórz obrazy platformy Docker automatycznie ze środowisk.

Środowiska "Anonimowe" są automatycznie rejestrowane w obszarze roboczym podczas przesyłania eksperymentu. Nie będą one wyświetlane, ale mogą być pobierane przez wersję.

Przykłady kodu można znaleźć w sekcji "Zarządzanie środowiskami" w temacie How to use environments (Jak używać środowisk).

Kompilowanie, buforowanie i ponowne używanie środowiska

Usługa Azure Machine Edukacja kompiluje definicje środowiska do obrazów platformy Docker. Buforuje również środowiska, aby mogły być ponownie używane w kolejnych zadaniach szkoleniowych i wdrożeniach punktu końcowego usługi. Zdalne uruchamianie skryptu szkoleniowego wymaga utworzenia obrazu platformy Docker. Domyślnie usługa AzureML zarządza obiektem docelowym kompilacji obrazu w przypadku bezserwerowego limitu przydziału obliczeniowego obszaru roboczego, jeśli nie ma dedykowanego zestawu obliczeniowego dla obszaru roboczego.

Uwaga

Wszelkie ograniczenia sieci w obszarze roboczym usługi AzureML mogą wymagać dedykowanej konfiguracji obliczeniowej kompilacji obrazu zarządzanego przez użytkownika. Wykonaj kroki, aby zabezpieczyć zasoby obszaru roboczego.

Przesyłanie zadania przy użyciu środowiska

Po pierwszym przesłaniu zadania zdalnego przy użyciu środowiska lub ręcznego tworzenia wystąpienia środowiska usługa Azure Machine Edukacja tworzy obraz dla podanej specyfikacji. Obraz wyniku jest buforowany w wystąpieniu rejestru kontenerów skojarzonym z obszarem roboczym. Wyselekcjonowane środowiska są już buforowane w rejestrze AzureML. Na początku wykonywania zadania obraz jest pobierany przez docelowy obiekt obliczeniowy z odpowiedniego rejestru kontenerów.

Kompilowanie środowisk jako obrazów platformy Docker

Jeśli obraz dla określonej definicji środowiska jeszcze nie istnieje w wystąpieniu rejestru kontenerów skojarzonym z obszarem roboczym usługi AzureML, zostanie skompilowany nowy obraz. W przypadku środowisk zarządzanych przez system kompilacja obrazu składa się z dwóch kroków:

  1. Pobieranie obrazu podstawowego i wykonywanie dowolnych kroków platformy Docker
  2. Tworzenie środowiska conda zgodnie z zależnościami conda określonymi w definicji środowiska.

W przypadku środowisk zarządzanych przez użytkownika udostępnionych kontekst platformy Docker będzie kompilować w następujący sposób. W takim przypadku odpowiadasz za instalowanie dowolnych pakietów języka Python, dołączając je do obrazu podstawowego lub określając niestandardowe kroki platformy Docker.

Buforowanie obrazów i ponowne użycie

Jeśli używasz tej samej definicji środowiska dla innego zadania, usługa Azure Machine Edukacja ponownie używa buforowanego obrazu z rejestru kontenerów skojarzonego z obszarem roboczym.

Aby wyświetlić szczegóły buforowanego obrazu, sprawdź stronę Środowiska w usłudze Azure Machine Edukacja Studio lub użyj polecenia MLClient.environments , aby uzyskać i sprawdzić środowisko.

Aby określić, czy ponownie użyć buforowanego obrazu, czy utworzyć nowy, usługa Azure Machine Edukacja oblicza wartość skrótu z definicji środowiska i porównuje ją z skrótami istniejących środowisk. Skrót służy jako unikatowy identyfikator środowiska i jest oparty na definicji środowiska:

  • Obraz podstawowy
  • Niestandardowe kroki platformy Docker
  • Pakiety języka Python

Skrót nie ma wpływu na nazwę ani wersję środowiska. Jeśli zmienisz nazwę środowiska lub utworzysz nowe z tymi samymi ustawieniami i pakietami co inne środowisko, wartość skrótu pozostanie taka sama. Jednak definicja środowiska zmienia się, takich jak dodawanie lub usuwanie pakietu Python lub zmiana wersji pakietu zmienia wynikową wartość skrótu. Zmiana kolejności zależności lub kanałów w środowisku spowoduje również zmianę skrótu i wymaga nowej kompilacji obrazu. Podobnie każda zmiana w nadzorowanym środowisku powoduje utworzenie środowiska niestandardowego.

Uwaga

Nie będzie można przesłać żadnych lokalnych zmian w środowisku wyselekcjonowanych bez zmiany nazwy środowiska. Prefiksy "AzureML-" i "Microsoft" są zarezerwowane wyłącznie dla wyselekcjonowanych środowisk, a przesyłanie zadania zakończy się niepowodzeniem, jeśli nazwa zaczyna się od jednej z nich.

Obliczona wartość skrótu środowiska jest porównywana z wartościami w rejestrze kontenerów obszaru roboczego. Jeśli istnieje dopasowanie, buforowany obraz zostanie ściągnięty i użyty, w przeciwnym razie zostanie wyzwolona kompilacja obrazu.

Na poniższym diagramie przedstawiono trzy definicje środowiska. Dwa z nich mają różne nazwy i wersje, ale identyczne obrazy podstawowe i pakiety języka Python, co skutkuje tym samym skrótem i odpowiadającym im obrazem w pamięci podręcznej. Trzecie środowisko ma różne pakiety i wersje języka Python, co prowadzi do innego skrótu i buforowanego obrazu.

Diagram of environment caching and Docker images

Rzeczywiste obrazy buforowane w rejestrze kontenerów obszaru roboczego mają nazwy podobne do azureml/azureml_e9607b2514b066c851012848913ba19f tych, które pojawiają się na końcu.

Ważne

  • Jeśli tworzysz środowisko z odpiętą zależnością pakietu (na przykład numpy), środowisko używa wersji pakietu, która była dostępna podczas tworzenia środowiska. Każde przyszłe środowisko korzystające z zgodnej definicji będzie używać oryginalnej wersji.

    Aby zaktualizować pakiet, określ numer wersji, aby wymusić ponowne kompilowanie obrazu. Przykładem może być zmiana numpy wartości na numpy==1.18.1. Nowe zależności — w tym zagnieżdżone — zostaną zainstalowane i mogą spowodować przerwanie wcześniej działającego scenariusza.

  • Użycie przypiętego obrazu podstawowego, takiego jak mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04 w definicji środowiska, może spowodować ponowne skompilowanie obrazu za każdym razem, gdy latest tag jest aktualizowany. Ułatwia to obrazowi otrzymywanie najnowszych poprawek i aktualizacji systemowych.

Stosowanie poprawek obrazów

Firma Microsoft jest odpowiedzialna za stosowanie poprawek obrazów podstawowych pod kątem znanych luk w zabezpieczeniach. Aktualizacje dla obsługiwanych obrazów są wydawane co dwa tygodnie, z zobowiązaniem niewłaczanych luk w zabezpieczeniach starszych niż 30 dni w najnowszej wersji obrazu. Poprawione obrazy są wydawane przy użyciu nowego niezmiennego tagu, a :latest tag jest aktualizowany do najnowszej wersji poprawionego obrazu.

Aby użyć nowo poprawkowego obrazu, należy zaktualizować skojarzone zasoby usługi Azure Machine Edukacja. Na przykład podczas pracy z zarządzanym punktem końcowym online należy ponownie wdrożyć punkt końcowy, aby użyć poprawionego obrazu.

Jeśli udostępniasz własne obrazy, odpowiadasz za ich aktualizowanie i aktualizowanie zasobów usługi Azure Machine Edukacja, które z nich korzystają.

Aby uzyskać więcej informacji na temat obrazów podstawowych, zobacz następujące linki:

Następne kroki