Betanítási futtatások konfigurálása és elküldéseConfigure and submit training runs

Ebből a cikkből megtudhatja, hogyan konfigurálhat és küldhet be Azure Machine Learning-futtatásokat a modellek betanításához.In this article, you learn how to configure and submit Azure Machine Learning runs to train your models. A kódrészletek a betanítási szkriptek konfigurációjának és beküldésének főbb részeit ismertetik.Snippets of code explain the key parts of configuration and submission of a training script. Ezután használja az egyik példa notebookot a teljes körű működésre vonatkozó példák megtalálásához.Then use one of the example notebooks to find the full end-to-end working examples.

Ha betanítást végez, gyakori, hogy elindítsa a helyi számítógépen, majd később kibővíti a felhőalapú fürtöt.When training, it is common to start on your local computer, and then later scale out to a cloud-based cluster. A Azure Machine Learning használatával különböző számítási célokból futtathat parancsfájlokat anélkül, hogy módosítani kellene a betanítási szkriptet.With Azure Machine Learning, you can run your script on various compute targets without having to change your training script.

Mindössze annyit kell tennie, hogy a parancsfájl futtatási konfigurációján belül minden számítási cél esetében meghatározza a környezetet.All you need to do is define the environment for each compute target within a script run configuration. Ha ezt követően egy másik számítási célra szeretné futtatni a betanítási kísérletet, adja meg az adott számítás futtatási konfigurációját.Then, when you want to run your training experiment on a different compute target, specify the run configuration for that compute.

ElőfeltételekPrerequisites

Mi az a parancsfájl-futtatási konfiguráció?What's a script run configuration?

A ScriptRunConfig használatával konfigurálhatja a betanítási futtatáshoz szükséges információkat a kísérlet részeként.A ScriptRunConfig is used to configure the information necessary for submitting a training run as part of an experiment.

A betanítási kísérletet egy ScriptRunConfig-objektummal küldi el.You submit your training experiment with a ScriptRunConfig object. Ez az objektum az alábbiakat tartalmazza:This object includes the:

  • source_directory: a betanítási parancsfájlt tartalmazó forrás könyvtárasource_directory: The source directory that contains your training script
  • parancsfájl: a futtatandó betanítási szkriptscript: The training script to run
  • compute_target: a futtatandó számítási célcompute_target: The compute target to run on
  • környezet: a parancsfájl futtatásakor használandó környezetenvironment: The environment to use when running the script
  • és néhány további konfigurálható lehetőség is (további információt a dokumentációban talál)and some additional configurable options (see the reference documentation for more information)

A modell betanításaTrain your model

A betanítási futtatást elküldő kód mintája megegyezik a számítási célok összes típusával:The code pattern to submit a training run is the same for all types of compute targets:

  1. Kísérlet létrehozása a futtatáshozCreate an experiment to run
  2. Hozzon létre egy környezetet, amelyben a parancsfájl futni fogCreate an environment where the script will run
  3. ScriptRunConfig létrehozása, amely meghatározza a számítási célt és a környezetetCreate a ScriptRunConfig, which specifies the compute target and environment
  4. A Futtatás elküldéseSubmit the run
  5. Várjon, amíg a Futtatás befejeződikWait for the run to complete

Vagy a következőket teheti:Or you can:

Kísérlet létrehozásaCreate an experiment

Hozzon létre egy kísérletet a munkaterületen.Create an experiment in your workspace.

from azureml.core import Experiment

experiment_name = 'my_experiment'
experiment = Experiment(workspace=ws, name=experiment_name)

Számítási cél kiválasztásaSelect a compute target

Válassza ki azt a számítási célt, amelyen a betanítási parancsfájl futni fog.Select the compute target where your training script will run on. Ha nincs megadva számítási cél a ScriptRunConfig, vagy ha az compute_target='local' Azure ml a parancsfájlt helyileg fogja végrehajtani.If no compute target is specified in the ScriptRunConfig, or if compute_target='local', Azure ML will execute your script locally.

A cikkben szereplő mintakód azt feltételezi, hogy már létrehozott egy számítási célt my_compute_target az "Előfeltételek" szakaszból.The example code in this article assumes that you have already created a compute target my_compute_target from the "Prerequisites" section.

Megjegyzés

A Azure Databricks nem támogatott számítási célként a modell betanításához.Azure Databricks is not supported as a compute target for model training. Az adatelőkészítési és-telepítési feladatokhoz Azure Databricks is használhatja.You can use Azure Databricks for data preparation and deployment tasks.

Környezet létrehozásaCreate an environment

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 Docker-rendszerképet, 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, Docker image, environment variables, and software settings around your training and scoring scripts. Emellett a futtatókörnyezeteket (Python, Spark vagy Docker) is megadják.They also specify runtimes (Python, Spark, or Docker).

Meghatározhatja saját környezetét, vagy használhat egy Azure ML-beli kiszervezett környezetet is.You can either define your own environment, or use an Azure ML curated environment. A válogatott környezetek előre definiált környezetek, amelyek alapértelmezés szerint a munkaterületen elérhetők.Curated environments are predefined environments that are available in your workspace by default. Ezeket a környezeteket a gyorsítótárazott Docker-rendszerképek alkotják, ami csökkenti a Futtatás előkészítési költségeit.These environments are backed by cached Docker images which reduces the run preparation cost. A rendelkezésre álló, kitalált környezetek teljes listájáért tekintse meg Azure Machine learning kurátori környezeteket .See Azure Machine Learning Curated Environments for the full list of available curated environments.

Távoli számítási cél esetén a következő népszerű kurátori környezetek egyikét használhatja a kezdéshez:For a remote compute target, you can use one of these popular curated environments to start with:

from azureml.core import Workspace, Environment

ws = Workspace.from_config()
myenv = Environment.get(workspace=ws, name="AzureML-Minimal")

A környezetekkel kapcsolatos további információkért és részletekért lásd: Create & Azure Machine learning-környezetek használata.For more information and details about environments, see Create & use software environments in Azure Machine Learning.

Helyi számítási célLocal compute target

Ha a számítási cél a helyi gép, Ön felelős annak biztosításáért, hogy az összes szükséges csomag elérhető legyen a Python-környezetben, ahol a szkript fut.If your compute target is your local machine, you are responsible for ensuring that all the necessary packages are available in the Python environment where the script runs. A használatával az python.user_managed_dependencies aktuális Python-környezetet (vagy a Pythont a megadott elérési úton) használhatja.Use python.user_managed_dependencies to use your current Python environment (or the Python on the path you specify).

from azureml.core import Environment

myenv = Environment("user-managed-env")
myenv.python.user_managed_dependencies = True

# You can choose a specific Python environment by pointing to a Python path 
# myenv.python.interpreter_path = '/home/johndoe/miniconda3/envs/myenv/bin/python'

A parancsfájl futtatási konfigurációjának létrehozásaCreate the script run configuration

Most, hogy van egy számítási cél ( my_compute_target ) és egy környezet ( myenv ), hozzon létre egy parancsfájl-futtatási konfigurációt, amely futtatja a saját könyvtárában található képzési parancsfájlt ( train.py ) project_folder :Now that you have a compute target (my_compute_target) and environment (myenv), create a script run configuration that runs your training script (train.py) located in your project_folder directory:

from azureml.core import ScriptRunConfig

src = ScriptRunConfig(source_directory=project_folder,
                      script='train.py',
                      compute_target=my_compute_target,
                      environment=myenv)

# Set compute target
# Skip this if you are running on your local computer
script_run_config.run_config.target = my_compute_target

Ha nem ad meg környezetet, a rendszer létrehoz egy alapértelmezett környezetet az Ön számára.If you do not specify an environment, a default environment will be created for you.

Ha olyan parancssori argumentumokkal rendelkezik, amelyeket át szeretne adni a betanítási szkriptnek, akkor megadhatja azokat a arguments ScriptRunConfig konstruktor paraméterén keresztül, például: arguments=['--arg1', arg1_val, '--arg2', arg2_val] .If you have command-line arguments you want to pass to your training script, you can specify them via the arguments parameter of the ScriptRunConfig constructor, e.g. arguments=['--arg1', arg1_val, '--arg2', arg2_val].

Ha szeretné felülbírálni a futtatáshoz engedélyezett alapértelmezett maximális időt, ezt a paraméterrel teheti meg max_run_duration_seconds .If you want to override the default maximum time allowed for the run, you can do so via the max_run_duration_seconds parameter. A rendszer megkísérli automatikusan megszakítani a futtatást, ha ez az érték hosszabb időt vesz igénybe.The system will attempt to automatically cancel the run if it takes longer than this value.

Elosztott feladatok konfigurációjának meghatározásaSpecify a distributed job configuration

Ha elosztott betanítási feladatot szeretne futtatni, adja meg az elosztott feladatokhoz tartozó konfigurációt a distributed_job_config paraméterhez.If you want to run a distributed training job, provide the distributed job-specific config to the distributed_job_config parameter. A támogatott konfigurációs típusok a következők: MpiConfiguration, TensorflowConfigurationés PyTorchConfiguration.Supported config types include MpiConfiguration, TensorflowConfiguration, and PyTorchConfiguration.

További információ és példák az elosztott Horovod, a TensorFlow és a PyTorch feladatok futtatásáról:For more information and examples on running distributed Horovod, TensorFlow and PyTorch jobs, see:

A kísérlet elküldéseSubmit the experiment

run = experiment.submit(config=src)
run.wait_for_completion(show_output=True)

Fontos

A betanítási Futtatás elküldésekor létrejön a betanítási parancsfájlokat tartalmazó könyvtár pillanatképe, amelyet a rendszer elküld a számítási célra.When you submit the training run, a snapshot of the directory that contains your training scripts is created and sent to the compute target. A munkaterületen található kísérlet részeként is tárolja.It is also stored as part of the experiment in your workspace. Ha módosítja a fájlokat, és újra elküldi a futtatást, csak a módosított fájlok lesznek feltöltve.If you change files and submit the run again, only the changed files will be uploaded.

Ha meg szeretné akadályozni, hogy a felesleges fájlok szerepeljenek a pillanatképben, ne hagyja figyelmen kívül a fájlt ( .gitignore vagy .amlignore ) a címtárban.To prevent unnecessary files from being included in the snapshot, make an ignore file (.gitignore or .amlignore) in the directory. Adja hozzá a fájlhoz kizárandó fájlokat és könyvtárakat.Add the files and directories to exclude to this file. A fájlban található szintaxissal kapcsolatos további információkért lásd: a szintaxis és a mintázatok .gitignore .For more information on the syntax to use inside this file, see syntax and patterns for .gitignore. A .amlignore fájl ugyanazt a szintaxist használja.The .amlignore file uses the same syntax. Ha mindkét fájl létezik, a .amlignore fájl elsőbbséget élvez.If both files exist, the .amlignore file takes precedence.

További információ a pillanatképekről: Pillanatképek.For more information about snapshots, see Snapshots.

Fontos

Speciális mappák Két mappa, kimenet és napló, a Azure Machine learning speciális kezelést kap.Special Folders Two folders, outputs and logs, receive special treatment by Azure Machine Learning. Ha a betanítás során a rendszer a gyökérkönyvtárhoz viszonyított kimeneteket és naplókat tartalmazó mappákba ír fájlokat ./outputs , ./logs a fájlok automatikusan feltöltve lesznek a futtatási előzményekbe, hogy a Futtatás befejezése után hozzáférhessenek hozzájuk.During training, when you write files to folders named outputs and logs that are relative to the root directory (./outputs and ./logs, respectively), the files will automatically upload to your run history so that you have access to them once your run is finished.

Az összetevőknek a betanítás során történő létrehozásához (például a Model Files, az ellenőrzőpontok, az adatfájlok vagy a képek kirajzolása) írja ezeket a ./outputs mappába.To create artifacts during training (such as model files, checkpoints, data files, or plotted images) write these to the ./outputs folder.

Hasonlóképpen bármilyen naplót írhat a betanításból a ./logs mappába.Similarly, you can write any logs from your training run to the ./logs folder. Azure Machine Learning TensorBoard-integrációjának kihasználása érdekében ügyeljen arra, hogy a TensorBoard-naplókat a mappába írja.To utilize Azure Machine Learning's TensorBoard integration make sure you write your TensorBoard logs to this folder. Amíg a Futtatás folyamatban van, el tudja indítani a TensorBoard, és továbbíthatja ezeket a naplókat.While your run is in progress, you will be able to launch TensorBoard and stream these logs. Később is visszaállíthatja a naplókat az előző futtatások bármelyikéről.Later, you will also be able to restore the logs from any of your previous runs.

Ha például le szeretné tölteni a kimenet mappába a helyi gépre írt fájlt a távoli képzés futtatása után: run.download_file(name='outputs/my_output_file', output_file_path='my_destination_path')For example, to download a file written to the outputs folder to your local machine after your remote training run: run.download_file(name='outputs/my_output_file', output_file_path='my_destination_path')

Git-követés és-integrációGit tracking and integration

Ha olyan képzést indít el, ahol a forrás könyvtára helyi git-tárház, a rendszer a tárház adatait a futtatási előzményekben tárolja.When you start a training run where the source directory is a local Git repository, information about the repository is stored in the run history. További információ: git- integráció Azure Machine Learninghoz.For more information, see Git integration for Azure Machine Learning.

Jegyzetfüzet-példákNotebook examples

Tekintse meg ezeket a jegyzetfüzeteket a futtatások konfigurálására példákat a különböző képzési forgatókönyvekhez:See these notebooks for examples of configuring runs for various training scenarios:

A szolgáltatás megismerése Jupyter-notebookok használatával cikk útmutatását követve megtanulhatja, hogyan futtathat notebookokat.Learn how to run notebooks by following the article Use Jupyter notebooks to explore this service.

HibaelhárításTroubleshooting

  • A Futtatás sikertelen jwt.exceptions.DecodeError a következővel: pontos hibaüzenet: jwt.exceptions.DecodeError: It is required that you pass in a value for the "algorithms" argument when calling decode() .Run fails with jwt.exceptions.DecodeError: Exact error message: jwt.exceptions.DecodeError: It is required that you pass in a value for the "algorithms" argument when calling decode().

    Érdemes lehet a azureml-Core legújabb verziójára frissíteni: pip install -U azureml-core .Consider upgrading to the latest version of azureml-core: pip install -U azureml-core.

    Ha a problémát helyi futtatások esetén is futtatja, ellenőrizze a környezetében telepített PyJWT verzióját, ahol a futtatást elindítja.If you are running into this issue for local runs, check the version of PyJWT installed in your environment where you are starting runs. A PyJWT támogatott verziói < 2.0.0.The supported versions of PyJWT are < 2.0.0. Távolítsa el a PyJWT a környezetből, ha a verzió >= 2.0.0.Uninstall PyJWT from the environment if the version is >= 2.0.0. A PyJWT verzióját a következőképpen tekintheti meg, távolíthatja el és telepítheti a megfelelő verziót:You may check the version of PyJWT, uninstall and install the right version as follows:

    1. Indítsa el a parancssort, aktiválja a Conda környezetet, ahol a azureml-Core telepítve van.Start a command shell, activate conda environment where azureml-core is installed.
    2. Adja meg pip freeze és keresse meg PyJWT , ha található, a felsorolt verziónak < 2.0.0 kell lennieEnter pip freeze and look for PyJWT, if found, the version listed should be < 2.0.0
    3. Ha a felsorolt verzió nem támogatott verziójú, a pip uninstall PyJWT parancs-rendszerhéjban írja be az y értéket a megerősítéshez.If the listed version is not a supported version, pip uninstall PyJWT in the command shell and enter y for confirmation.
    4. Végezze el a telepítést a pip install 'PyJWT<2.0.0' paranccsalInstall using pip install 'PyJWT<2.0.0'

    Ha a futtatásával felhasználó által létrehozott környezetet küld, érdemes lehet a azureml-Core legújabb verzióját használni ebben a környezetben.If you are submitting a user-created environment with your run, consider using the latest version of azureml-core in that environment. Verziók >= a azureml-Core 1.18.0 már PyJWT < 2.0.0.Versions >= 1.18.0 of azureml-core already pin PyJWT < 2.0.0. Ha a azureml-Core < 1.18.0 verzióját kell használnia a beküldött környezetben, ügyeljen arra, hogy a PyJWT < 2.0.0 a pip-függőségekben.If you need to use a version of azureml-core < 1.18.0 in the environment you submit, make sure to specify PyJWT < 2.0.0 in your pip dependencies.

  • ModuleErrors (nincs nevű modul): Ha a ModuleErrors-ben fut a kísérletek Azure ml-ben való elküldése közben, a betanítási szkript egy telepítendő csomagot vár, de nem adja hozzá.ModuleErrors (No module named): If you are running into ModuleErrors while submitting experiments in Azure ML, the training script is expecting a package to be installed but it isn't added. A csomag nevének megadása után az Azure ML telepíti a csomagot a betanítási futtatáshoz használt környezetben.Once you provide the package name, Azure ML installs the package in the environment used for your training run.

    Ha a becslések-t használja a kísérletek elküldéséhez, megadhatja a csomag nevét pip_packages conda_packages a kalkulátoron keresztül vagy paraméterrel, attól függően, hogy melyik forrásból szeretné telepíteni a csomagot.If you are using Estimators to submit experiments, you can specify a package name via pip_packages or conda_packages parameter in the estimator based on from which source you want to install the package. Egy YML-fájlt is megadhat az összes függőségének használatával, conda_dependencies_file vagy listázhatja az összes pip-követelményét egy txt-fájlban a pip_requirements_file paraméter használatával.You can also specify a yml file with all your dependencies using conda_dependencies_fileor list all your pip requirements in a txt file using pip_requirements_file parameter. Ha rendelkezik saját Azure ML-környezetbeli objektummal, amellyel felül szeretné bírálni a kalkulátor által használt alapértelmezett rendszerképet, megadhatja ezt a környezetet a environment kalkulátor konstruktorának paraméterén keresztül.If you have your own Azure ML Environment object that you want to override the default image used by the estimator, you can specify that environment via the environment parameter of the estimator constructor.

    Az Azure ML által karbantartott Docker-rendszerképek és azok tartalma AzureML-tárolókbanláthatók.Azure ML maintained docker images and their contents can be seen in AzureML Containers. A keretrendszer-specifikus függőségek a vonatkozó keretrendszer dokumentációjában találhatók:Framework-specific dependencies are listed in the respective framework documentation:

    Megjegyzés

    Ha úgy gondolja, hogy egy adott csomag elég gyakori ahhoz, hogy hozzá lehessen adni az Azure ML karbantartott lemezképekhez és környezetekhez, hozzon létre GitHub-problémát a AzureML-tárolókban.If you think a particular package is common enough to be added in Azure ML maintained images and environments please raise a GitHub issue in AzureML Containers.

  • NameError (név nincs meghatározva), AttributeError (objektum nem rendelkezik attribútummal): Ez a kivétel a betanítási szkriptből származik.NameError (Name not defined), AttributeError (Object has no attribute): This exception should come from your training scripts. A naplófájlokat a Azure Portalból tekintheti meg, ha további információt szeretne kapni a nem definiált névvel vagy az attribútum hibával kapcsolatban.You can look at the log files from Azure portal to get more information about the specific name not defined or attribute error. Az SDK segítségével run.get_details() megtekintheti a hibaüzenetet.From the SDK, you can use run.get_details() to look at the error message. Ekkor a rendszer a futtatáshoz létrehozott összes naplófájlt is felsorolja.This will also list all the log files generated for your run. Győződjön meg arról, hogy megtekinti a betanítási szkriptet, és javítsa ki a hibát, mielőtt elküldené a futtatást.Please make sure to take a look at your training script and fix the error before resubmitting your run.

  • A Run vagy a Experiment művelet törlése: a kísérletek a kísérlet. Archive metódussal vagy a Azure Machine learning Studio-ügyfél kísérlet lapjának az "Archive Experiment" gomb használatával is archiválható.Run or experiment deletion: Experiments can be archived by using the Experiment.archive method, or from the Experiment tab view in Azure Machine Learning studio client via the "Archive experiment" button. Ez a művelet elrejti a kísérletet a lekérdezések és nézetek listájában, de nem törli azt.This action hides the experiment from list queries and views, but does not delete it.

    Az egyes kísérletek vagy futtatások végleges törlése jelenleg nem támogatott.Permanent deletion of individual experiments or runs is not currently supported. További információ a munkaterület-eszközök törléséről: Machine learning szolgáltatás-munkaterület adatainak exportálása vagy törlése.For more information on deleting Workspace assets, see Export or delete your Machine Learning service workspace data.

  • A metrikai dokumentum túl nagy: a Azure Machine learning belső korláttal rendelkezik azon metrikai objektumok méretén, amelyek bejelentkezhetnek a betanítási futtatás során.Metric Document is too large: Azure Machine Learning has internal limits on the size of metric objects that can be logged at once from a training run. Ha „a metrikadokumentum túl nagy” hibát észlel egy értéklistát tartalmazó metrika naplózásakor, próbálja meg felosztani a listát kisebb tömbökre, például:If you encounter a "Metric Document is too large" error when logging a list-valued metric, try splitting the list into smaller chunks, for example:

    run.log_list("my metric name", my_metric[:N])
    run.log_list("my metric name", my_metric[N:])
    

    Az Azure ML belsőleg egy összefüggő listává fűzi össze az ugyanazzal a metrikanévvel rendelkező tömböket.Internally, Azure ML concatenates the blocks with the same metric name into a contiguous list.

  • A számítási cél elkezdése hosszú időt vesz igénybe: a számítási célokhoz tartozó Docker-rendszerképek betöltődik Azure Container Registryból (ACR).Compute target takes a long time to start: The Docker images for compute targets are loaded from Azure Container Registry (ACR). Alapértelmezés szerint a Azure Machine Learning létrehoz egy ACR-t, amely az alapszintű szolgáltatási szintet használja.By default, Azure Machine Learning creates an ACR that uses the basic service tier. A munkaterületre vonatkozó ACR a standard vagy a prémium szintre való módosítása csökkentheti a lemezképek létrehozásához és betöltéséhez szükséges időt.Changing the ACR for your workspace to standard or premium tier may reduce the time it takes to build and load images. További információ: Azure Container Registry szolgáltatási szintek.For more information, see Azure Container Registry service tiers.

További lépésekNext steps