Mik azok a Azure Machine Learning környezetek?What are Azure Machine Learning environments?

Azure Machine Learning környezetek a gépi tanulási képzést végző környezet beágyazását jelentik.Azure Machine Learning environments are an encapsulation of the environment where your machine learning training happens. Megadják a Python-csomagokat, a környezeti változókat és a szoftver beállításait a képzés és a pontozási szkriptek köré.They specify the Python packages, environment variables, and software settings around your training and scoring scripts. A futtatási időpontokat (Python, Spark vagy Docker) is megadják.They also specify run times (Python, Spark, or Docker). A környezetek a Machine Learning munkaterületen belül felügyelt és verzióval rendelkező entitások, amelyek lehetővé teszik a reprodukálható, auditálható és hordozható gépi tanulási munkafolyamatok különböző számítási célokból való átirányítását.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.

A helyi számítási feladatokhoz a Environment következőket használhatja:You can use an Environment object on your local compute to:

  • Fejlessze a betanítási szkriptet.Develop your training script.
  • Használja ugyanazt a környezetet Azure Machine Learning számítási feladatokhoz a Modelles képzések esetében.Reuse the same environment on Azure Machine Learning Compute for model training at scale.
  • Telepítse a modellt ugyanazzal a környezettel.Deploy your model with that same environment.
  • Tekintse át azt a környezetet, amelyben a meglévő modellt betanítták.Revisit the environment in which an existing model was trained.

Az alábbi ábra azt szemlélteti, hogyan használható egyetlen objektum a Environment futtatási konfigurációban (a betanításhoz) és a következtetési és telepítési konfigurációban (a webszolgáltatás központi telepítése esetén).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).

A Machine learning-munkafolyamatban található környezet ábrája

A környezet, a számítási cél és a betanítási parancsfájl együttesen a futtatási konfigurációt alkotják: egy képzési Futtatás teljes specifikációja.The environment, compute target and training script together form the run configuration: the full specification of a training run.

A környezetek típusaiTypes of environments

A környezetek széles körben három kategóriára oszthatók: a kurátor, a felhasználó által felügyelt és a rendszer által felügyelt.Environments can broadly be divided into three categories: curated, user-managed, and system-managed.

A Azure Machine Learning által biztosított, és a munkaterületen alapértelmezés szerint elérhetővé tett környezetek.Curated environments are provided by Azure Machine Learning and are available in your workspace by default. A szolgáltatásként való használatra szánt Python-csomagokat és-beállításokat tartalmazó gyűjteményeket tartalmaz, amelyek segítséget nyújtanak a különböző gépi tanulási keretrendszerek megkezdéséhez.Intended to be used as is, they contain collections of Python packages and settings to help you get started with various machine learning frameworks. Ezek az előre létrehozott környezetek is lehetővé teszik a gyorsabb üzembe helyezési időt.These pre-created environments also allow for faster deployment time. A teljes listát a kurátori környezetek című cikkbentalálja.For a full list, see the curated environments article.

A felhasználó által felügyelt környezetekben Ön felelős a környezet beállításához és minden olyan csomag telepítéséhez, amelyet a képzési parancsfájlnak szüksége van a számítási célra.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. A Conda nem vizsgálja a környezetet, vagy semmit sem telepít Önnek.Conda doesn't check your environment or install anything for you. Ha saját környezetét határozza meg, akkor a azureml-defaults verziót pip-függőségként kell listáznia >= 1.0.45 .If you're defining your own environment, you must list azureml-defaults with version >= 1.0.45 as a pip dependency. Ez a csomag tartalmazza a modell webszolgáltatásként való üzemeltetéséhez szükséges funkciókat.This package contains the functionality that's needed to host the model as a web service.

A rendszer által felügyelt környezeteket akkor használja, ha azt szeretné, hogy a Conda kezelje a Python-környezetet és a parancsfájlok függőségeit.You use system-managed environments when you want Conda to manage the Python environment and the script dependencies for you. Az új Conda-környezet a Conda-függőségek objektum alapján épül fel.A new conda environment is built based on the conda dependencies object. A Azure Machine Learning szolgáltatás alapértelmezés szerint ezt a típusú környezetet feltételezi, mert a távoli számítási célok nem konfigurálhatók manuálisan.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.

Környezetek létrehozása és kezeléseCreate and manage environments

Környezeteket a használatával hozhat létre:You can create environments by:

  • Új objektumok definiálása Environment egy kurátori környezet használatával vagy a saját függőségeinek definiálásával.Defining new Environment objects, either by using a curated environment or by defining your own dependencies.
  • Meglévő Environment objektumok használata a munkaterületről.Using existing Environment objects from your workspace. Ez a megközelítés lehetővé teszi az egységességet és a reprodukálhatóságot a függőségekkel.This approach allows for consistency and reproducibility with your dependencies.
  • Importálás meglévő anaconda-környezet definícióból.Importing from an existing Anaconda environment definition.
  • A Azure Machine Learning parancssori felület használataUsing the Azure Machine Learning CLI
  • A VS Code bővítmény használataUsing the VS Code extension

Adott kódok esetében tekintse meg a környezetek használatacímű témakör "környezet létrehozása" című szakaszát.For specific code samples, see the "Create an environment" section of How to use environments. A környezeteket a munkaterületen is könnyedén kezelheti.Environments are also easily managed through your workspace. Ezek a következő funkciókat tartalmazzák:They include the following functionality:

  • A környezetek automatikusan regisztrálva lesznek a munkaterületen, amikor elküld egy kísérletet.Environments are automatically registered to your workspace when you submit an experiment. Manuálisan is regisztrálhatók.They can also be manually registered.
  • A munkaterületről beolvashat környezeteket a képzéshez vagy az üzembe helyezéshez, vagy szerkesztheti a környezet definícióját.You can fetch environments from your workspace to use for training or deployment, or to make edits to the environment definition.
  • A verziószámozással időben megtekintheti a környezetek változásait, ami biztosítja a reprodukálhatóságot.With versioning, you can see changes to your environments over time, which ensures reproducibility.
  • Docker-rendszerképeket automatikusan építhet ki a környezetből.You can build Docker images automatically from your environments.

A kódok használatával kapcsolatban tekintse meg a környezetek használatárólszóló témakör "környezetek kezelése" című szakaszát.For code samples, see the "Manage environments" section of How to use environments.

Környezetek kiépítése, gyorsítótárazása és újrafelhasználásaEnvironment building, caching, and reuse

A Azure Machine Learning szolgáltatás környezeti definíciókat épít be a Docker-rendszerképekbe és a Conda környezetbe.The Azure Machine Learning service builds environment definitions into Docker images and conda environments. Emellett gyorsítótárazza a környezeteket, hogy újra felhasználhatók legyenek a következő képzések futtatásakor és a szolgáltatás végpontjának telepítése során.It also caches the environments so they can be reused in subsequent training runs and service endpoint deployments. A betanítási szkriptek távoli futtatása a Docker-rendszerkép létrehozását igényli, míg egy helyi Futtatás közvetlenül is használhat Conda-környezetet.Running a training script remotely requires the creation of a Docker image whereas, a local run can use a Conda environment directly.

Futtatás elküldése környezet használatávalSubmitting a run using an environment

Amikor először küld el egy távoli futtatást egy környezettel, a Azure Machine Learning szolgáltatás egy ACR-felépítési feladatot hív meg a munkaterülethez társított Azure Container Registry (ACR) használatával.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. Ezután a rendszer gyorsítótárazza a beépített Docker-rendszerképet a munkaterület ACR-ben.The built Docker image is then cached on the Workspace ACR. A kurátori környezetek a globális ACR-ben gyorsítótárazott Docker-rendszerképekkel támogatottak.Curated environments are backed by Docker images that are cached in Global ACR. A Futtatás végrehajtásának megkezdése után a rendszer a képet a megfelelő ACR-ből olvassa be a számítási cél alapján.At the start of the run execution, the image is retrieved by the compute target from the relevant ACR.

Helyi futtatások esetén a rendszer egy Docker-vagy Conda-környezetet hoz létre a környezeti definíció alapján.For local runs, a Docker or Conda environment is created based on the environment definition. A szkripteket ezután végrehajtja a cél számításon – helyi futtatókörnyezeti környezetben vagy helyi Docker-motoron.The scripts are then executed on the target compute - a local runtime environment or local Docker engine.

Környezetek kiépítése Docker-rendszerképekkéntBuilding environments as Docker images

Ha a környezet definíciója még nem létezik a munkaterület ACR-ben, a rendszer egy új rendszerképet fog felépíteni.If the environment definition doesn't already exist in the workspace ACR, a new image will be built. A rendszerkép létrehozása két lépésből áll:The image build consists of two steps:

  1. Alaprendszerkép letöltése és a Docker-lépések végrehajtásaDownloading a base image, and executing any Docker steps
  2. Conda-környezet létrehozása a környezeti definícióban megadott Conda-függőségek alapján.Building a conda environment according to conda dependencies specified in the environment definition.

A második lépés kimarad, ha felhasználó által felügyelt függőségeketad meg.The second step is omitted if you specify user-managed dependencies. Ebben az esetben Ön felelős a Python-csomagok telepítéséhez, az alaprendszerképbe való belefoglalásával, vagy az első lépésben az egyéni Docker-lépések megadásával.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. Emellett a Python végrehajtható fájl megfelelő helyének megadására is a felelős.You're also responsible for specifying the correct location for the Python executable. Egyéni Docker-alaprendszerképis használható.It is also possible to use a custom Docker base image.

Képek gyorsítótárazása és újrafelhasználásaImage caching and reuse

Ha ugyanezt a környezeti definíciót használja egy másik futtatáshoz, a Azure Machine Learning szolgáltatás újrahasználja a gyorsítótárazott rendszerképet a munkaterület ACR-ből.If you use the same environment definition for another run, the Azure Machine Learning service reuses the cached image from the Workspace ACR.

A gyorsítótárazott képek részleteinek megtekintéséhez használja Environment.get_image_details metódust.To view the details of a cached image, use Environment.get_image_details method.

Annak megállapításához, hogy fel kell-e használni a gyorsítótárazott képet, vagy újat kell létrehoznia, a szolgáltatás kiszámítja a környezeti definícióból származó kivonatot , és összehasonlítja a meglévő környezetek kivonatával.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. A kivonat a következőn alapul:The hash is based on:

  • Kiinduló rendszerkép tulajdonságának értékeBase image property value
  • Egyéni Docker-lépések tulajdonságának értékeCustom docker steps property value
  • Python-csomagok listája a Conda-definícióbanList of Python packages in Conda definition
  • A Spark-definícióban található csomagok listájaList of packages in Spark definition

A kivonat nem függ a környezet nevétől vagy verziójától – Ha átnevezi a környezetet, vagy új környezetet hoz létre egy meglévő tulajdonságok és csomagok alapján, akkor a kivonatoló érték változatlan marad.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. A környezeti definíció módosításait, például a Python-csomagok hozzáadását vagy eltávolítását, vagy a csomag verziójának módosítását, a kivonat értékének módosítását okozhatja.However, environment definition changes, such as adding or removing a Python package or changing the package version, cause the hash value to change. Egy adott környezetben a függőségek vagy a csatornák sorrendjének módosítása új környezetet eredményez, és így új rendszerkép-buildre van szükség.Changing the order of dependencies or channels in an environment will result in a new environment and thus require a new image build. Fontos megjegyezni, hogy a kurátori környezet változásai érvénytelenítik a kivonatot, és egy új "nem kiszolgált" környezetet eredményeznek.It is important to note that any change to a curated environment will invalidate the hash and result in a new "non-curated" environment.

A számított kivonatoló értéket a munkaterület és a globális ACR (vagy a helyi futtatások számítási céljának) összehasonlítja.The computed hash value is compared to those in the Workspace and Global ACR (or on the compute target for local runs). Ha egyezés van, akkor a gyorsítótárazott képet kihúzta a rendszer, ellenkező esetben a rendszerkép kiépítése aktiválódik.If there is a match then the cached image is pulled, otherwise an image build is triggered. A gyorsítótárazott képek lekérésének időtartama magában foglalja a letöltési időt, míg az újonnan létrehozott rendszerképek lekérésének időtartama magában foglalja a fordítási időt és a letöltési időt is.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.

A következő ábra három környezeti definíciót mutat be.The following diagram shows three environment definitions. Közülük kettő eltérő névvel és verzióval rendelkezik, de a rendszerkép és a Python-csomagok is azonosak.Two of them have different names and versions, but identical base image and Python packages. Azonban ugyanazzal a kivonattal rendelkeznek, és így ugyanahhoz a gyorsítótárazott képhez tartoznak.But they have the same hash and thus correspond to the same cached image. A harmadik környezet különböző Python-csomagokat és-verziókat tartalmaz, ezért egy másik gyorsítótárazott rendszerképnek felel meg.The third environment has different Python packages and versions, and therefore corresponds to a different cached image.

A környezeti gyorsítótárazás diagramja Docker-rendszerképekként

Fontos

Ha például olyan környezetet hoz létre, amely nem rögzített csomag-függőséggel rendelkezik, például a környezet a numpy környezet létrehozásakor telepített csomag verziószámát fogja használni.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. Emellett a megfelelő definícióval rendelkező jövőbeli környezetek továbbra is a régi verziót használják.Also, any future environment with matching definition will keep using the old version.

A csomag frissítéséhez meg kell adnia egy verziószámot a rendszerkép újraépítésének kényszerítéséhez, például: numpy==1.18.1 .To update the package, specify a version number to force image rebuild, for example numpy==1.18.1. A rendszer telepíti az új függőségeket, beleértve a beágyazottkat is, amelyek megszakítják a korábban működő forgatókönyvet.New dependencies, including nested ones, will be installed that might break a previously working scenario.

Figyelmeztetés

A környezet. a Build metódus újraépíti a gyorsítótárazott rendszerképet, amely a nem rögzített csomagok frissítésének lehetséges mellékhatása, valamint az adott gyorsítótárazott rendszerképnek megfelelő összes környezeti definíció esetén a reprodukálhatóság megszakítása.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.

Következő lépésekNext steps