A Pytorch mély tanulási modelljeinek betanítása Azure Machine LearningTrain Pytorch deep learning models at scale with Azure Machine Learning

a következőkre vonatkozik:  igen , alapszintű kiadás  , igen Enterprise Edition                               (frissítés az Enterprise Editionrendszerre) APPLIES TO: yesBasic edition yesEnterprise edition                    (Upgrade to Enterprise edition)

Ebből a cikkből megtudhatja, hogyan futtathatja nagyvállalati szintű PyTorch -betanítási parancsfájljait Azure Machine learning PyTorch kalkulátor -osztályának használatával.In this article, learn how to run your PyTorch training scripts at enterprise scale using Azure Machine Learning's PyTorch estimator class.

Az ebben a cikkben szereplő szkriptek a csirkék és a Törökország képeinek osztályozására szolgálnak, hogy a PyTorch az adatátviteli tanulási oktatóanyagaalapján mély tanulási neurális hálózatot hozzanak létre.The example scripts in this article are used to classify chicken and turkey images to build a deep learning neural network based on PyTorch's transfer learning tutorial.

Legyen szó akár egy mély tanulási PyTorch modellről az alapoktól, akár egy meglévő modellt hoz létre a felhőben, a Azure Machine Learning segítségével rugalmas Felhőbeli számítási erőforrásokkal bővítheti a nyílt forráskódú képzési feladatokat.Whether you're training a deep learning PyTorch model from the ground-up or you're bringing an existing model into the cloud, you can use Azure Machine Learning to scale out open-source training jobs using elastic cloud compute resources. A Azure Machine Learning használatával előkészítheti, üzembe helyezheti, telepítheti és figyelheti a termelési szintű modelleket.You can build, deploy, version, and monitor production-grade models with Azure Machine Learning.

További információ a Deep learning és a Machine learningszolgáltatásról.Learn more about deep learning vs machine learning.

ElőfeltételekPrerequisites

Futtassa ezt a kódot ezen környezetek bármelyikén:Run this code on either of these environments:

A kísérlet beállításaSet up the experiment

Ez a szakasz a betanítási kísérletet a szükséges Python-csomagok betöltésével, egy munkaterület inicializálásával, egy kísérlet létrehozásával, valamint a betanítási adat és a betanítási parancsfájlok feltöltésével állítja be.This section sets up the training experiment by loading the required python packages, initializing a workspace, creating an experiment, and uploading the training data and training scripts.

Csomagok importálásaImport packages

Először importálja a szükséges Python-kódtárakat.First, import the necessary Python libraries.

import os
import shutil

from azureml.core.workspace import Workspace
from azureml.core import Experiment

from azureml.core.compute import ComputeTarget, AmlCompute
from azureml.core.compute_target import ComputeTargetException
from azureml.train.dnn import PyTorch

Munkaterület inicializálásaInitialize a workspace

A Azure Machine learning munkaterület a szolgáltatás legfelső szintű erőforrása.The Azure Machine Learning workspace is the top-level resource for the service. Központi helyet biztosít az összes létrehozott összetevővel való együttműködéshez.It provides you with a centralized place to work with all the artifacts you create. A Python SDK-ban egy workspace objektum létrehozásával érheti el a munkaterület összetevőit.In the Python SDK, you can access the workspace artifacts by creating a workspace object.

Hozzon létre egy munkaterület- config.json objektumot az Előfeltételek szakaszbanlétrehozott fájlból.Create a workspace object from the config.json file created in the prerequisites section.

ws = Workspace.from_config()

Mélyreható tanulási kísérlet létrehozásaCreate a deep learning experiment

Hozzon létre egy kísérletet és egy mappát a betanítási szkriptek tárolásához.Create an experiment and a folder to hold your training scripts. Ebben a példában hozzon létre egy "pytorch-Birds" nevű kísérletet.In this example, create an experiment called "pytorch-birds".

project_folder = './pytorch-birds'
os.makedirs(project_folder, exist_ok=True)

experiment_name = 'pytorch-birds'
experiment = Experiment(ws, name=experiment_name)

Az adatok lekéréseGet the data

Az adatkészlet körülbelül 120 betanítási képet tartalmaz a pulykák és csirkék számára, az egyes osztályokhoz 100 érvényesítési lemezképekkel.The dataset consists of about 120 training images each for turkeys and chickens, with 100 validation images for each class. Az adathalmazt a betanítási szkript pytorch_train.pyrészeként fogjuk letölteni és kinyerni.We will download and extract the dataset as part of our training script pytorch_train.py. A képek a megnyitott lemezképek V5-adatkészletrészhalmazai.The images are a subset of the Open Images v5 Dataset.

Betanítási parancsfájlok előkészítésePrepare training scripts

Ebben az oktatóanyagban már meg van biztosítva a betanítási szkript pytorch_train.py.In this tutorial, the training script, pytorch_train.py, is already provided. A gyakorlatban bármilyen egyéni tanítási szkriptet igénybe vehet, és futtathatja a Azure Machine Learning használatával.In practice, you can take any custom training script, as is, and run it with Azure Machine Learning.

Töltse fel a Pytorch betanítási szkriptjét pytorch_train.py.Upload the Pytorch training script, pytorch_train.py.

shutil.copy('pytorch_train.py', project_folder)

Ha azonban Azure Machine Learning követési és mérőszám-képességeket szeretne használni, egy kis mennyiségű kódot kell hozzáadnia a betanítási parancsfájlban.However, if you would like to use Azure Machine Learning tracking and metrics capabilities, you will have to add a small amount code inside your training script. A metrikák nyomon követésének példái a pytorch_train.pykövetkező címen találhatók:.Examples of metrics tracking can be found in pytorch_train.py.

Számítási cél létrehozásaCreate a compute target

Hozzon létre egy számítási célt a PyTorch-feladatokhoz a futtatásához.Create a compute target for your PyTorch job to run on. Ebben a példában hozzon létre egy GPU-kompatibilis Azure Machine Learning számítási fürtöt.In this example, create a GPU-enabled Azure Machine Learning compute cluster.

cluster_name = "gpucluster"

try:
    compute_target = ComputeTarget(workspace=ws, name=cluster_name)
    print('Found existing compute target')
except ComputeTargetException:
    print('Creating a new compute target...')
    compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_NC6', 
                                                           max_nodes=4)

    compute_target = ComputeTarget.create(ws, cluster_name, compute_config)

    compute_target.wait_for_completion(show_output=True, min_node_count=None, timeout_in_minutes=20)

A számítási célokkal kapcsolatos további információkért tekintse meg a Mi az a számítási cél című cikket.For more information on compute targets, see the what is a compute target article.

PyTorch-kalkulátor létrehozásaCreate a PyTorch estimator

A PyTorch kalkulátor egyszerű módszert kínál a PyTorch-betanítási feladatok számítási célra való elindítására.The PyTorch estimator provides a simple way of launching a PyTorch training job on a compute target.

A PyTorch kalkulátor az általános estimator osztályon keresztül valósul meg, amely bármely keretrendszer támogatásához használható.The PyTorch estimator is implemented through the generic estimator class, which can be used to support any framework. További információ a képzési modellekről az általános kalkulátor használatával: modellek betanítása Azure Machine learning a kalkulátor használatávalFor more information about training models using the generic estimator, see train models with Azure Machine Learning using estimator

Ha a képzési szkriptnek további pip-vagy Conda-csomagokat kell futtatnia, akkor az eredményül kapott Docker-rendszerképre is telepítheti a csomagokat pip_packages , conda_packages ha a és az argumentumokat át szeretné adni a nevüknek.If your training script needs additional pip or conda packages to run, you can have the packages installed on the resulting docker image by passing their names through the pip_packages and conda_packages arguments.

script_params = {
    '--num_epochs': 30,
    '--output_dir': './outputs'
}

estimator = PyTorch(source_directory=project_folder, 
                    script_params=script_params,
                    compute_target=compute_target,
                    entry_script='pytorch_train.py',
                    use_gpu=True,
                    pip_packages=['pillow==5.4.1'])

A Python-környezet testreszabásával kapcsolatos további információkért lásd: környezetek létrehozása és kezelése képzéshez és üzembe helyezéshez.For more information on customizing your Python environment, see Create and manage environments for training and deployment.

Futtatás küldéseSubmit a run

A Run objektum biztosítja a felületet a futtatási előzményekhez, miközben a feladatot futtatja, és a művelet befejeződött.The Run object provides the interface to the run history while the job is running and after it has completed.

run = experiment.submit(estimator)
run.wait_for_completion(show_output=True)

A Futtatás végrehajtásakor a következő szakaszokon halad végig:As the Run is executed, it goes through the following stages:

  • Előkészítés: a Docker-rendszerkép létrehozása a PyTorch-kalkulátor alapján történik.Preparing: A docker image is created according to the PyTorch estimator. A rendszer feltölti a rendszerképet a munkaterület tároló-Hivatalához, és a gyorsítótárba helyezi a későbbi futtatásokhoz.The image is uploaded to the workspace's container registry and cached for later runs. A naplók a futtatási előzményekre is továbbítva lesznek, és a folyamat figyelésére is megtekinthetők.Logs are also streamed to the run history and can be viewed to monitor progress.

  • Skálázás: a fürt akkor kísérli meg a skálázást, ha a Batch AI fürthöz több csomópont szükséges a jelenleg elérhető futtatáshoz.Scaling: The cluster attempts to scale up if the Batch AI cluster requires more nodes to execute the run than are currently available.

  • Futtatás: a rendszer a parancsfájl mappájában lévő összes parancsfájlt feltölti a számítási célra, az adattárakat csatlakoztatja vagy másolja, és a entry_script végre lesz hajtva.Running: All scripts in the script folder are uploaded to the compute target, data stores are mounted or copied, and the entry_script is executed. Az stdout és a./Logs mappa kimeneteit a rendszer a futtatási előzményekre továbbítja, és a Futtatás figyelésére használható.Outputs from stdout and the ./logs folder are streamed to the run history and can be used to monitor the run.

  • Utómunka: a Futtatás./outputs mappáját a rendszer átmásolja a futtatási előzményekbe.Post-Processing: The ./outputs folder of the run is copied over to the run history.

Modell regisztrálása vagy letöltéseRegister or download a model

A modell kiképzése után regisztrálhatja azt a munkaterületre.Once you've trained the model, you can register it to your workspace. A modell regisztrálása lehetővé teszi a modellek tárolását és verzióját a munkaterületen a modell kezelésének és üzembe helyezésénekegyszerűsítése érdekében.Model registration lets you store and version your models in your workspace to simplify model management and deployment.

model = run.register_model(model_name='pt-dnn', model_path='outputs/')

Tipp

A korábban regisztrált modell pontosan ugyanúgy van telepítve, mint bármely más regisztrált modell Azure Machine Learningban, függetlenül attól, hogy milyen kalkulátort használtak a képzéshez.The model you just registered is deployed the exact same way as any other registered model in Azure Machine Learning, regardless of which estimator you used for training. Az üzembe helyezési útmutató egy szakaszt tartalmaz a modellek regisztrálásához, de közvetlenül kihagyhatja a központi telepítéshez szükséges számítási cél létrehozását , mivel már rendelkezik regisztrált modellel.The deployment how-to contains a section on registering models, but you can skip directly to creating a compute target for deployment, since you already have a registered model.

A modell helyi másolatát a Run objektum használatával is letöltheti.You can also download a local copy of the model by using the Run object. A betanítási pytorch_train.pyparancsfájlban a PyTorch mentése objektum megőrzi a modellt egy helyi mappába (helyi a számítási célra).In the training script pytorch_train.py, a PyTorch save object persists the model to a local folder (local to the compute target). A Futtatás objektum használatával letöltheti a másolatokat.You can use the Run object to download a copy.

# Create a model folder in the current directory
os.makedirs('./model', exist_ok=True)

for f in run.get_file_names():
    if f.startswith('outputs/model'):
        output_file_path = os.path.join('./model', f.split('/')[-1])
        print('Downloading from {} to {} ...'.format(f, output_file_path))
        run.download_file(name=f, output_file_path=output_file_path)

Elosztott betanításDistributed training

A PyTorch kalkulátor a CPU-és a GPU-fürtökön egyaránt támogatja az elosztott képzést.The PyTorch estimator also supports distributed training across CPU and GPU clusters. Könnyedén futtathatja az elosztott PyTorch-feladatokat, és Azure Machine Learning felügyeli az Ön számára.You can easily run distributed PyTorch jobs and Azure Machine Learning will manage the orchestration for you.

HorovodHorovod

A Horovod egy nyílt forráskódú, amely az Über által fejlesztett elosztott képzések összes csökkentési keretrendszerét csökkenti.Horovod is an open-source, all reduce framework for distributed training developed by Uber. Az elosztott GPU PyTorch feladatok egyszerű elérési útját kínálja.It offers an easy path to distributed GPU PyTorch jobs.

A Horovod használatához meg kell adnia MpiConfiguration egy objektumot a distributed_training paraméterhez a PyTorch konstruktorban.To use Horovod, specify an MpiConfiguration object for the distributed_training parameter in the PyTorch constructor. Ez a paraméter biztosítja, hogy a Horovod-függvénytár telepítve legyen a betanítási parancsfájlban.This parameter ensures that Horovod library is installed for you to use in your training script.

from azureml.train.dnn import PyTorch

estimator= PyTorch(source_directory=project_folder,
                      compute_target=compute_target,
                      script_params=script_params,
                      entry_script='script.py',
                      node_count=2,
                      process_count_per_node=1,
                      distributed_training=MpiConfiguration(),
                      framework_version='1.13',
                      use_gpu=True)

A Horovod és a hozzá tartozó függőségek telepítve lesznek, így a következő módon importálhatja azt a train.py betanítási parancsfájlba:Horovod and its dependencies will be installed for you, so you can import it in your training script train.py as follows:

import torch
import horovod

Exportálás ONNXExport to ONNX

Ha optimalizálni szeretné a következtetést a ONNX futtatókörnyezettel, alakítsa át a betanított PyTorch modelljét a ONNX formátumba.To optimize inference with the ONNX Runtime, convert your trained PyTorch model to the ONNX format. A következtetés vagy a modell pontozása az a fázis, ahol az üzembe helyezett modellt az előrejelzéshez használják, leggyakrabban a termelési adatforgalomban.Inference, or model scoring, is the phase where the deployed model is used for prediction, most commonly on production data. Példaként tekintse meg az oktatóanyagot .See the tutorial for an example.

További lépésekNext steps

Ebben a cikkben a PyTorch-on Azure Machine Learning-on keresztül tanult és regisztrált egy mély tanulási és neurális hálózatot.In this article, you trained and registered a deep learning, neural network using PyTorch on Azure Machine Learning. A modellek üzembe helyezésének megismeréséhez folytassa a modell üzembe helyezésével kapcsolatos cikket.To learn how to deploy a model, continue on to our model deployment article.