Co to są środowiska Azure Machine Learning?What are Azure Machine Learning environments?

Środowiska Azure Machine Learning są hermetyzacją środowiska, w którym odbywa się szkolenie uczenia maszynowego.Azure Machine Learning environments are an encapsulation of the environment where your machine learning training happens. Określają one pakiety języka Python, zmienne środowiskowe i ustawienia oprogramowania wokół skryptów szkoleń i oceniania.They specify the Python packages, environment variables, and software settings around your training and scoring scripts. Określają one również czasy wykonywania (Python, Spark lub Docker).They also specify run times (Python, Spark, or Docker). Środowiska są zarządzane i obsługiwane przez program w obszarze roboczym Machine Learning, które umożliwiają powtarzalny, z inspekcją i przenośne przepływy pracy uczenia maszynowego w różnych celach obliczeniowych.The environments are managed and versioned entities within your Machine Learning workspace that enable reproducible, auditable, and portable machine learning workflows across a variety of compute targets.

Możesz użyć Environment obiektu na lokalnym obliczeniu, aby:You can use an Environment object on your local compute to:

  • Opracowywanie skryptu szkoleniowego.Develop your training script.
  • Ponownie Użyj tego samego środowiska na Azure Machine Learning COMPUTE na potrzeby szkolenia modeli na dużą skalę.Reuse the same environment on Azure Machine Learning Compute for model training at scale.
  • Wdróż model przy użyciu tego samego środowiska.Deploy your model with that same environment.
  • Ponownie odwiedź środowisko, w którym został przeszkolony istniejący model.Revisit the environment in which an existing model was trained.

Na poniższym diagramie przedstawiono, jak można użyć pojedynczego Environment obiektu w konfiguracji przebiegu (na potrzeby szkolenia) oraz konfiguracji wnioskowania i wdrożenia (dla wdrożeń usług sieci Web).The following diagram illustrates how you can use a single Environment object in both your run configuration (for training) and your inference and deployment configuration (for web service deployments).

Diagram środowiska w przepływie pracy uczenia maszynowego

Środowisko, obiekt docelowy obliczeń i skrypt szkoleniowy tworzą razem konfigurację przebiegu: pełną specyfikację przebiegu szkoleniowego.The environment, compute target and training script together form the run configuration: the full specification of a training run.

Typy środowiskTypes of environments

Środowiska mogą być szeroko podzielone na trzy kategorie: nadzorowane, zarządzane przez użytkownika i zarządzane przez system.Environments can broadly be divided into three categories: curated, user-managed, and system-managed.

Środowiska nadzorowane są udostępniane przez Azure Machine Learning i są domyślnie dostępne w obszarze roboczym.Curated environments are provided by Azure Machine Learning and are available in your workspace by default. Przeznaczone do użycia jako ", zawierają kolekcje pakietów i ustawień języka Python, które ułatwiają rozpoczęcie pracy z różnymi platformami uczenia maszynowego.Intended to be used as is, they contain collections of Python packages and settings to help you get started with various machine learning frameworks. Te wstępnie utworzone środowiska umożliwiają również szybszy czas wdrażania.These pre-created environments also allow for faster deployment time. Aby zapoznać się z pełną listą, zobacz artykuł dotyczący środowisk nadzorowanych.For a full list, see the curated environments article.

W środowiskach zarządzanych przez użytkownika użytkownik jest odpowiedzialny za skonfigurowanie środowiska i zainstalowanie każdego pakietu, którego potrzebuje skrypt szkoleniowy w celu obliczenia.In user-managed environments, you're responsible for setting up your environment and installing every package that your training script needs on the compute target. Conda nie sprawdza Twojego środowiska ani nie instaluje żadnych elementów.Conda doesn't check your environment or install anything for you. W przypadku definiowania własnego środowiska należy wyświetlić listę azureml-defaults z wersją >= 1.0.45 jako zależność PIP.If you're defining your own environment, you must list azureml-defaults with version >= 1.0.45 as a pip dependency. Ten pakiet zawiera funkcje, które są konieczne do hostowania modelu jako usługi sieci Web.This package contains the functionality that's needed to host the model as a web service.

Środowiska zarządzane przez system są używane, gdy chcesz, aby Conda zarządzać środowiskiem Python i zależnościami skryptów.You use system-managed environments when you want Conda to manage the Python environment and the script dependencies for you. Nowe środowisko Conda jest tworzone na podstawie obiektu zależności Conda.A new conda environment is built based on the conda dependencies object. Usługa Azure Machine Learning domyślnie przyjmuje ten typ środowiska, ponieważ jest to użyteczność w przypadku zdalnych obiektów docelowych obliczeń, które nie są ręcznie konfigurowane.The Azure Machine Learning service assumes this type of environment by default, because of its usefulness on remote compute targets that aren't manually configurable.

Tworzenie środowisk i zarządzanie nimiCreate and manage environments

Środowiska można tworzyć według:You can create environments by:

  • Definiowanie nowych Environment obiektów przy użyciu nadzorowanego środowiska lub przez Definiowanie własnych zależności.Defining new Environment objects, either by using a curated environment or by defining your own dependencies.
  • Używanie istniejących Environment obiektów w obszarze roboczym.Using existing Environment objects from your workspace. Takie podejście umożliwia spójność i odtwarzalność z zależnościami.This approach allows for consistency and reproducibility with your dependencies.
  • Importowanie z istniejącej definicji środowiska Anaconda.Importing from an existing Anaconda environment definition.
  • Korzystanie z interfejsu wiersza polecenia Azure Machine LearningUsing the Azure Machine Learning CLI
  • Korzystanie z rozszerzenia VS CodeUsing the VS Code extension

Aby zapoznać się z konkretnymi przykładami kodu, zobacz sekcję "Tworzenie środowiska" w temacie jak korzystać z środowisk.For specific code samples, see the "Create an environment" section of How to use environments. Środowiska są również łatwo zarządzane za poorednictwem obszaru roboczego.Environments are also easily managed through your workspace. Obejmują one następujące funkcje:They include the following functionality:

  • Środowiska są automatycznie rejestrowane w obszarze roboczym podczas przesyłania eksperymentu.Environments are automatically registered to your workspace when you submit an experiment. Można je również zarejestrować ręcznie.They can also be manually registered.
  • Możesz pobrać środowiska z obszaru roboczego, aby użyć go do szkolenia lub wdrożenia lub wprowadzić zmiany w definicji środowiska.You can fetch environments from your workspace to use for training or deployment, or to make edits to the environment definition.
  • Dzięki wersji można zobaczyć zmiany w środowiskach w czasie, co zapewnia odtwarzalność.With versioning, you can see changes to your environments over time, which ensures reproducibility.
  • Możesz automatycznie tworzyć obrazy platformy Docker w swoich środowiskach.You can build Docker images automatically from your environments.

Aby zapoznać się z przykładami kodu, zobacz sekcję "zarządzanie środowiskami" dotyczącą korzystania ze środowisk.For code samples, see the "Manage environments" section of How to use environments.

Kompilowanie, buforowanie i ponowne używanie środowiskaEnvironment building, caching, and reuse

Usługa Azure Machine Learning kompiluje definicje środowiska w obrazy platformy Docker i środowiska Conda.The Azure Machine Learning service builds environment definitions into Docker images and conda environments. W pamięci podręcznej są również używane środowiska, dzięki czemu można je ponownie wykorzystać w kolejnych przebiegach szkoleniowych i wdrożeniach punktów końcowych usługi.It also caches the environments so they can be reused in subsequent training runs and service endpoint deployments. Uruchamianie skryptu szkoleniowego zdalnie wymaga utworzenia obrazu platformy Docker, a uruchomienie lokalne może bezpośrednio używać środowiska Conda.Running a training script remotely requires the creation of a Docker image whereas, a local run can use a Conda environment directly.

Przesyłanie przebiegu przy użyciu środowiskaSubmitting a run using an environment

Podczas pierwszego przesyłania zdalnego przebiegu przy użyciu środowiska usługa Azure Machine Learning wywołuje zadanie kompilacji ACR na Azure Container Registry (ACR) skojarzonym z obszarem roboczym.When you first submit a remote run using an environment, the Azure Machine Learning service invokes an ACR Build Task on the Azure Container Registry (ACR) associated with the Workspace. Skompilowany obraz platformy Docker jest następnie buforowany w obszarze roboczym ACR.The built Docker image is then cached on the Workspace ACR. Nadzorowane środowiska są obsługiwane przez obrazy platformy Docker, które są buforowane w ACR globalnym.Curated environments are backed by Docker images that are cached in Global ACR. Na początku wykonywania przebiegu obraz jest pobierany przez obiekt docelowy obliczeń z odpowiednich ACR.At the start of the run execution, the image is retrieved by the compute target from the relevant ACR.

W przypadku uruchomień lokalnych środowisko Docker lub Conda jest tworzone na podstawie definicji środowiska.For local runs, a Docker or Conda environment is created based on the environment definition. Skrypty są następnie wykonywane w docelowym środowisku obliczeniowym (środowisko uruchomieniowe lokalnego lub lokalnego aparatu platformy Docker).The scripts are then executed on the target compute - a local runtime environment or local Docker engine.

Kompilowanie środowisk jako obrazów platformy DockerBuilding environments as Docker images

Jeśli definicja środowiska nie istnieje już w obszarze roboczym ACR, zostanie utworzony nowy obraz.If the environment definition doesn't already exist in the workspace ACR, a new image will be built. Kompilacja obrazu składa się z dwóch kroków:The image build consists of two steps:

  1. Pobieranie obrazu podstawowego i wykonywanie wszelkich kroków platformy DockerDownloading a base image, and executing any Docker steps
  2. Kompilowanie środowiska Conda zgodnie z zależnościami Conda określonymi w definicji środowiska.Building a conda environment according to conda dependencies specified in the environment definition.

Drugi krok zostanie pominięty w przypadku określenia zależności zarządzanych przez użytkownika.The second step is omitted if you specify user-managed dependencies. W takim przypadku użytkownik jest odpowiedzialny za instalację dowolnych pakietów języka Python, dołączając je do obrazu podstawowego lub określając niestandardowe kroki platformy Docker w pierwszym kroku.In this case you're responsible for installing any Python packages, by including them in your base image, or specifying custom Docker steps within the first step. Użytkownik jest również odpowiedzialny za określenie prawidłowej lokalizacji pliku wykonywalnego języka Python.You're also responsible for specifying the correct location for the Python executable. Istnieje również możliwość użycia niestandardowego obrazu platformy Docker.It is also possible to use a custom Docker base image.

Buforowanie i ponowne użycie obrazuImage caching and reuse

Jeśli używasz tej samej definicji środowiska dla innego uruchomienia, usługa Azure Machine Learning ponownie używa buforowanego obrazu z obszaru roboczego ACR.If you use the same environment definition for another run, the Azure Machine Learning service reuses the cached image from the Workspace ACR.

Aby wyświetlić szczegóły buforowanego obrazu, użyj metody Environment.get_image_details .To view the details of a cached image, use Environment.get_image_details method.

Aby określić, czy ponownie użyć buforowanego obrazu, czy utworzyć nowy, usługa oblicza wartość skrótu z definicji środowiska i porównuje ją z skrótami istniejących środowisk.To determine whether to reuse a cached image or build a new one, the service computes a hash value from the environment definition and compares it to the hashes of existing environments. Skrót jest oparty na:The hash is based on:

  • Wartość właściwości obrazu podstawowegoBase image property value
  • Niestandardowa wartość właściwości kroków platformy DockerCustom docker steps property value
  • Lista pakietów języka Python w definicji CondaList of Python packages in Conda definition
  • Lista pakietów w definicji platformy SparkList of packages in Spark definition

Wartość skrótu nie jest zależna od nazwy środowiska lub wersji — Jeśli zmienisz nazwę środowiska lub utworzysz nowe środowisko z dokładnymi właściwościami i pakietami istniejącymi, a następnie wartości skrótu pozostają takie same.The hash doesn't depend on environment name or version - if you rename your environment or create a new environment with the exact properties and packages of an existing one, then the hash value remains the same. Jednak zmiany definicji środowiska, takie jak dodawanie lub usuwanie pakietu języka Python lub zmiana wersji pakietu, powodują zmianę wartości skrótu.However, environment definition changes, such as adding or removing a Python package or changing the package version, cause the hash value to change. Zmiana kolejności zależności lub kanałów w środowisku spowoduje powstanie nowego środowiska i w związku z tym wymaga nowej kompilacji obrazu.Changing the order of dependencies or channels in an environment will result in a new environment and thus require a new image build. Należy pamiętać, że jakakolwiek zmiana w środowisku nadzorowanym spowoduje unieważnienie skrótu i powstanie nowego środowiska bez nadzoru.It is important to note that any change to a curated environment will invalidate the hash and result in a new "non-curated" environment.

Obliczona wartość skrótu jest porównywana z wartościami w obszarze roboczym i globalnym ACR (lub na obiekcie docelowym obliczeń dla lokalnych przebiegów).The computed hash value is compared to those in the Workspace and Global ACR (or on the compute target for local runs). Jeśli istnieje dopasowanie, zostanie pobrany buforowany obraz, w przeciwnym razie zostanie wyzwolona kompilacja obrazu.If there is a match then the cached image is pulled, otherwise an image build is triggered. Czas trwania ściągania obrazu w pamięci podręcznej obejmuje czas pobierania, podczas którego czas ściągania nowo skompilowanego obrazu obejmuje zarówno czas kompilacji, jak i czas pobierania.The duration to pull a cached image includes the download time whereas the duration to pull a newly built image includes both the build time and the download time.

Na poniższym diagramie przedstawiono trzy definicje środowiska.The following diagram shows three environment definitions. Dwa z nich mają różne nazwy i wersje, ale identyczne obrazy podstawowe i pakiety języka Python.Two of them have different names and versions, but identical base image and Python packages. Ale mają one ten sam skrót i odpowiadają na ten sam zapisany w pamięci podręcznej.But they have the same hash and thus correspond to the same cached image. Trzecie środowisko ma inne pakiety i wersje języka Python, dlatego odnosi się do innego obrazu w pamięci podręcznej.The third environment has different Python packages and versions, and therefore corresponds to a different cached image.

Diagram pamięci podręcznej środowiska jako obrazów platformy Docker

Ważne

W przypadku tworzenia środowiska z przypiętym zależnością pakietu, na przykład, numpy to środowisko będzie korzystać z zainstalowanej wersji pakietu w momencie tworzenia środowiska.If you create an environment with an unpinned package dependency, for example numpy, that environment will keep using the package version installed at the time of environment creation. Ponadto wszystkie przyszłe środowiska ze zgodną definicją będą nadal używane w starej wersji.Also, any future environment with matching definition will keep using the old version.

Aby zaktualizować pakiet, określ numer wersji, aby wymusić Odbudowywanie obrazu numpy==1.18.1 .To update the package, specify a version number to force image rebuild, for example numpy==1.18.1. Zostaną zainstalowane nowe zależności, w tym zagnieżdżone, które mogą spowodować uszkodzenie wcześniej działającego scenariusza.New dependencies, including nested ones, will be installed that might break a previously working scenario.

Ostrzeżenie

Metoda Environment. Build spowoduje odbudowanie buforowanego obrazu z możliwym efektem ubocznym aktualizowania przypiętych pakietów i przerwaniem odtwarzalności dla wszystkich definicji środowiska odpowiadających danemu z pamięci podręcznej.The Environment.build method will rebuild the cached image, with possible side-effect of updating unpinned packages and breaking reproducibility for all environment definitions corresponding to that cached image.

Następne krokiNext steps