Verteiltes Trainieren von Deep Learning-Modellen in Azure

Blob Storage
Container Registry
Machine Learning

Diese Referenzarchitektur zeigt, wie Sie ein verteiltes Training von Deep Learning-Modellen in mehreren Clustern mit GPU-fähigen virtuellen Computern durchführen.This reference architecture shows how to conduct distributed training of deep learning models across clusters of GPU-enabled VMs. Bei dem Szenario handelt es sich zwar um Bildklassifizierung, doch die Lösung kann auch auf andere Deep Learning-Szenarien (etwa für die Segmentierung oder Objekterkennung) verallgemeinert werden.The scenario is image classification, but the solution can be generalized to other deep learning scenarios such as segmentation or object detection.

Eine Referenzimplementierung für diese Architektur ist auf GitHub verfügbar.A reference implementation for this architecture is available on GitHub.

Architektur für verteiltes Deep Learning

Szenario: Die Klassifizierung von Bildern ist im Bereich des maschinellen Sehens eine weit verbreitete Technik und wird häufig durch Trainieren eines auf dem Faltungsprinzip basierenden neuronalen Netzes (Convolutional Neural Network, CNN) umgesetzt.Scenario: Classifying images is a widely applied technique in computer vision, often tackled by training a convolutional neural network (CNN). Bei besonders umfangreichen Modellen mit großen Datasets kann das Training mit einer einzelnen GPU Wochen oder Monate dauern.For particularly large models with large datasets, the training process can take weeks or months on a single GPU. Manchmal sind die Modelle sogar so groß, dass gar keine sinnvollen Batchgrößen für die GPU möglich sind.In some situations, the models are so large that it is not possible to fit reasonable batch sizes onto the GPU. In solchen Fällen lässt sich die Trainingsdauer mithilfe eines verteilten Trainings verkürzen.Using distributed training in these situations can shorten the training time.

In diesem spezifischen Szenario wird ein ResNet50-CNN-Modell unter Verwendung von Horovod mit dem ImageNet-Dataset sowie mit synthetischen Daten trainiert.In this specific scenario, a ResNet50 CNN model is trained using Horovod on the ImageNet dataset and on synthetic data. In der Referenzimplementierung können Sie sehen, wie diese Aufgabe mithilfe von TensorFlow ausgeführt werden kann.The reference implementation shows how to accomplish this task using TensorFlow.

Für das verteilte Trainieren von Deep Learning-Modellen gibt es verschiedene Möglichkeiten. Hierzu zählen unter anderem Ansätze mit parallelen Daten und parallelem Modell auf der Grundlage von synchronen oder asynchronen Aktualisierungen.There are several ways to train a deep learning model in a distributed fashion, including data-parallel and model-parallel approaches based on synchronous or asynchronous updates. Das gängigste Szenario ist derzeit das Training mit parallelen Daten und synchronen Aktualisierungen.Currently the most common scenario is data-parallel training with synchronous updates. Dieser Ansatz lässt sich am einfachsten implementieren und ist in den meisten Fällen ausreichend.This approach is the easiest to implement and is sufficient for most use cases.

Beim verteilten Trainieren mit parallelen Daten und synchronen Aktualisierungen wird das Modell auf n Hardwaregeräten repliziert.In data-parallel distributed training with synchronous updates, the model is replicated across n hardware devices. Ein Minibatch mit Trainingsbeispielen wird auf n Mikrobatches aufgeteilt.A mini-batch of training samples is divided into n micro-batches. Jedes Gerät führt die Vorwärts- und Rückwärtsvorgänge für einen Mikrobatch aus.Each device performs the forward and backward passes for a micro-batch. Nach Abschluss des Prozesses gibt das jeweilige Gerät die Aktualisierungen an die anderen Geräte weiter.When a device finishes the process, it shares the updates with the other devices. Die Werte werden verwendet, um die aktualisierten Gewichtungen des gesamten Minibatchs zu berechnen, und die Gewichtungen werden modellübergreifend synchronisiert.These values are used to calculate the updated weights of the entire mini-batch, and the weights are synchronized across the models. Dieses Szenario wird in dem zugehörigen GitHub-Repository behandelt.This scenario is covered in the associated GitHub repository.

Verteiltes Training mit parallelen Daten

Diese Architektur kann auch für den Ansatz mit parallelem Modell und asynchronen Aktualisierungen verwendet werden.This architecture can also be used for model-parallel and asynchronous updates. Beim verteilten Trainieren mit parallelem Modell wird das Modell auf n Hardwaregeräte aufgeteilt, wobei jedes Gerät über einen Teil des Modells verfügt.In model-parallel distributed training, the model is divided across n hardware devices, with each device holding a part of the model. In der einfachsten Implementierung kann jedes Gerät über eine Schicht des Netzwerks verfügen, und Informationen werden während der Vorwärts- und Rückwärtsphase zwischen Geräten ausgetauscht.In the simplest implementation, each device may hold a layer of the network, and information is passed between devices during the forward and backwards pass. Größere neuronale Netze können zwar auf diese Weise trainiert werden, dies geht jedoch zulasten der Leistung, da Geräte ständig darauf warten, dass andere Geräte entweder die Vorwärts- oder die Rückwärtsphase abschließen.Larger neural networks can be trained this way, but at the cost of performance, since devices are constantly waiting for each other to complete either the forward or backwards pass. Bei einigen erweiterten Techniken wird mithilfe synthetischer Gradienten versucht, dieses Problem zumindest teilweise zu entschärfen.Some advanced techniques try to partially alleviate this issue by using synthetic gradients.

Das Training umfasst folgende Schritte:The steps for training are:

  1. Erstellen von Skripts, die im Cluster ausgeführt werden und Ihr Modell trainieren.Create scripts that will run on the cluster and train your model.
  2. Schreiben von Trainingsdaten in Blob Storage.Write training data to Blob storage.
  3. Erstellen Sie einen Azure Machine Learning-Arbeitsbereich.Create an Azure Machine Learning workspace. Dadurch wird auch eine Azure Container Registry erstellt, um Ihre Docker-Images zu hosten.This will also create an Azure Container Registry to host your Docker images.
  4. Erstellen eines GPU-fähigen Azure Machine Learning-Clusters.Create an Azure Machine Learning GPU-enabled Cluster.
  5. Übermitteln von Trainingsaufträgen.Submit training jobs. Für jeden Auftrag mit eindeutigen Abhängigkeiten wird ein neues Docker-Image erstellt und an Ihre Containerregistrierung gepusht.For each job with unique dependencies, a new Docker image is built and pushed to your container registry. Während der Ausführung nutzt das entsprechende Docker-Image Ihr Skript und führt es aus.During execution, the appropriate Docker image runs and executes your script.
  6. Alle Ergebnisse und Protokolle werden in Blob Storage geschrieben.All the results and logs are written to Blob storage.

AufbauArchitecture

Diese Architektur umfasst die folgenden Komponenten:This architecture consists of the following components:

Azure Machine Learning Compute bildet das Herzstück dieser Architektur und sorgt für eine bedarfsgerechte Skalierung der Ressourcen.Azure Machine Learning Compute plays the central role in this architecture by scaling resources up and down according to need. Azure ML Compute ist ein Dienst, der Sie beim Bereitstellen und Verwalten von VM-Clustern unterstützt, beim Planen von Aufträgen, beim Erfassen der Ergebnisse, beim Skalieren der Ressourcen und beim Behandeln von Fehlern.Azure ML Compute is a service that helps provision and manage clusters of VMs, schedule jobs, gather results, scale resources, and handle failures. Er unterstützt GPU-fähige virtuelle Computer für Deep Learning-Workloads.It supports GPU-enabled VMs for deep learning workloads.

Blob Storage Standard wird verwendet, um die Protokolle und Ergebnisse zu speichern.Standard Blob storage is used to store the logs and results. Blob Storage Premium wird zum Speichern der Trainingsdaten verwendet und mithilfe von blobfuse in den Knoten des Trainingsclusters eingebunden.Premium Blob storage is used to store the training data and is mounted in the nodes of the training cluster using blobfuse. Der Premium-Tarif von Blob Storage bietet eine bessere Leistung als der Standard-Tarif und wird für verteilte Trainingsszenarien empfohlen.The Premium tier of Blob storage offers better performance than the Standard tier and is recommended for distributed training scenarios. Nach der Einbindung mittels „blobfuse“ werden die Trainingsdaten während der ersten Epoche auf die lokalen Datenträger des Trainingsclusters heruntergeladen und zwischengespeichert.When mounted using blobfuse, during first the epoch, the training data is downloaded to the local disks of the training cluster and cached. Für jede nachfolgende Epoche werden die Daten von den lokalen Datenträgern gelesen, wobei es sich um die leistungsfähigste Option handelt.For every subsequent epoch, the data is read from the local disks, which is the most performant option.

Container Registry wird verwendet, um das Docker-Image zu speichern, mit dem Azure Machine Learning Compute das Training ausführt.Container Registry is used to store the Docker image that Azure Machine Learning Compute uses to run the training.

Überlegungen zum TrainingsclusterTraining cluster considerations

Azure bietet mehrere GPU-fähige VM-Typen, die zum Trainieren von Deep Learning-Modellen geeignet sind.Azure provides several GPU-enabled VM types suitable for training deep learning models. Im Anschluss finden Sie Informationen zu den verschiedenen Preisen und zur jeweiligen Geschwindigkeit (in aufsteigender Reihenfolge):They range in price and speed from low to high as follows:

Azure-VM-SerieAzure VM series NVIDIA-GPUNVIDIA GPU
NCNC K80K80
NDsNDs P40P40
NCsv2NCsv2 P100P100
NCsv3NCsv3 V100V100
NDv2NDv2 8x V100 (NVLink)8x V100 (NVLink)
ND A100 v4ND A100 v4 8x A100 (NVLink)8x A100 (NVLink)

Es empfiehlt sich, das Training zunächst zentral zu skalieren, bevor Sie eine horizontale Skalierung durchführen. Versuchen Sie es also beispielsweise erst mit einer einzelnen V100-Instanz, bevor Sie einen Cluster mit K80-Instanzen verwenden.We recommended scaling up your training before scaling out. For example, try a single V100 before trying a cluster of K80s. Ebenso sollten Sie die Verwendung eines einzelnen NDv2 anstelle von acht NCsv3 in Erwägung ziehen.Similarly, one should consider using a single NDv2 instead of eight NCsv3.

Das folgende Diagramm zeigt die Leistungsunterschiede für verschiedene GPU-Typen auf der Grundlage von Benchmarktests, die mit TensorFlow und Horovod durchgeführt wurden.The following graph shows the performance differences for different GPU types based on benchmarking tests carried out using TensorFlow and Horovod. Das Diagramm zeigt den Durchsatz von 32 GPU-Clustern für verschiedene Modelle mit unterschiedlichen GPU-Typen und MPI-Versionen.The graph shows throughput of 32 GPU clusters across various models, on different GPU types and MPI versions. Die Modelle wurden in TensorFlow 1.9 implementiert.Models were implemented in TensorFlow 1.9

Durchsatzergebnisse für TensorFlow-Modelle in GPU-Clustern

Jede VM-Serie aus der obigen Tabelle verfügt über eine Konfiguration mit InfiniBand.Each VM series shown in the previous table includes a configuration with InfiniBand. Verwenden Sie die InfiniBand-Konfigurationen beim Ausführen von verteilten Trainings, um die Kommunikation zwischen Knoten zu beschleunigen.Use the InfiniBand configurations when you run distributed training, for faster communication between nodes. InfiniBand erhöht außerdem die Skalierungseffizienz des Trainings für die Frameworks, die dafür geeignet sind.InfiniBand also increases the scaling efficiency of the training for the frameworks that can take advantage of it. Ausführliche Informationen finden Sie im Benchmarkvergleich für InfiniBand.For details, see the Infiniband benchmark comparison.

SpeicheraspektStorage considerations

Beim Trainieren von Deep Learning-Modellen wird oftmals der Speicherort der Trainingsdaten außer Acht gelassen.When training deep learning models, an often-overlooked aspect is where the training data is stored. Ist der Speicher den Anforderungen der GPUs nicht gewachsen, geht dies unter Umständen zulasten der Trainingsleistung.If the storage is too slow to keep up with the demands of the GPUs, training performance can degrade.

Azure Machine Learning Compute unterstützt viele Speicheroptionen.Azure Machine Learning Compute supports many storage options. Für eine optimale Leistung empfehlen wir, dass Sie die Daten lokal auf jeden Knoten herunterladen.For best performance it is advisable that you download the data locally to each node. Dies kann sich jedoch als umständlich erweisen, da alle Knoten die Daten aus Blob Storage herunterladen müssen, was bei dem ImageNet-Dataset mehrere Stunden dauern kann.However, this can be cumbersome, because all the nodes must download the data from Blob Storage, and with the ImageNet dataset, this can take a considerable amount of time. Standardmäßig bindet Azure ML Speicher so ein, dass die Daten lokal zwischengespeichert werden.By default Azure ML mounts storage such that it caches the data locally. Das bedeutet für die Praxis, dass die Daten nach der ersten Epoche aus dem lokalen Speicher gelesen werden.This means, in practice, that after the first epoch the data is read from local storage. Diese bietet in Kombination mit Blob Storage Premium einen guten Kompromiss zwischen einfacher Verwendung und hoher Leistung.This combined with Premium Blob Storage offers a good compromise between ease of use and performance.

Obwohl Azure Machine Learning Compute den Bob Storage Standard mithilfe des blobfuse-Adapters einbinden kann, empfiehlt es sich nicht, den Standard-Tarif für verteiltes Training zu verwenden, da die Leistung in der Regel nicht ausreichend ist, um den erforderlichen Durchsatz zu verarbeiten.Although Azure Machine Learning Compute can mount Standard tier Blob storage using the blobfuse adapter, we do not recommend using the Standard tier for distributed training as the performance typically is not good enough to handle the necessary throughput. Verwenden Sie den Premium-Tarif als Speicher für Trainingsdaten, wie im obigen Architekturdiagramm gezeigt.Use Premium tier as storage for training data as shown in the architecture diagram above. Sie können auch den folgenden Blogbeitrag heranziehen, in dem Sie einen Vergleich von Durchsatz und Wartezeiten zwischen den beiden Tarifen finden.You may also refer to the following blog post for throughput and latency comparison between the two tiers.

Überlegungen zur ContainerregistrierungContainer registry considerations

Immer wenn ein Azure Machine Learning-Arbeitsbereich bereitgestellt wird, wird ebenfalls ein Satz abhängiger Ressourcen (Blob Storage, Key Vault, Container Registry und Application Insights) bereitgestellt.Whenever an Azure Machine Learning workspace is provisioned, a set of dependent resources - Blob storage, Key Vault, Container Registry, and Application Insights - is also provisioned. Alternativ dazu können Sie auch vorhandene Azure-Ressourcen verwenden und diese dem neuen Azure Machine Learning-Arbeitsbereich während seiner Erstellung zuordnen.Alternatively, one may use existing Azure resources and associate them with the new Azure Machine learning workspace during its creation. Weitere Informationen zum Anpassen Ihres Azure Machine Learning-Arbeitsbereichs finden Sie in der folgenden ARM-Vorlage.Please refer to the following ARM template for customization of your Azure Machine Learning workspace.

Standardmäßig wird die Azure Container Registry im Basic-Tarif bereitgestellt.By default, Basic tier Azure Container Registry is provisioned. Für Deep Learning im großen Maßstab empfiehlt es sich, dass Sie Ihren Arbeitsbereich für die Verwendung der Container Registry im Premium-Tarif anpassen, da dieser eine wesentlich höhere Bandbreite bietet, mit der Sie Docker-Images schneller per Pull über Knoten Ihres Trainingsclusters hinweg abrufen können.For large-scale deep learning, we recommend that you customize your workspace to use Premium tier Container registry as it offers significantly higher bandwidth that will allow you to quicker pull Docker images across nodes of your training cluster.

Überlegungen zur SkalierbarkeitScalability considerations

Bei der Skalierungseffizienz des verteilten Trainings werden aufgrund des Zusatzaufwands für das Netzwerk niemals 100 Prozent erreicht: Die Synchronisierung des gesamten Modells zwischen Geräten wird zu einem Engpass.The scaling efficiency of distributed training is always less than 100 percent due to network overhead — syncing the entire model between devices becomes a bottleneck. Somit eignen sich verteilte Trainings am besten für umfangreiche Modelle, die nicht mit einer sinnvollen Batchgröße auf einer einzelnen GPU trainiert werden können, oder für Probleme, die sich nicht durch eine einfache, parallele Verteilung des Modells lösen lassen.Therefore, distributed training is most suited for large models that cannot be trained using a reasonable batch size on a single GPU, or for problems that cannot be addressed by distributing the model in a simple, parallel way.

Verteilte Trainings sollten nicht für Hyperparameter-Suchvorgänge verwendet werden.Distributed training is not recommended for running hyperparameter searches. Die Skalierungseffizienz wirkt sich auf die Leistung aus und macht einen verteilten Ansatz weniger effizient als das separate Trainieren mehrerer Modellkonfigurationen.The scaling efficiency affects performance and makes a distributed approach less efficient than training multiple model configurations separately.

Eine Möglichkeit zur Steigerung der Skalierungseffizienz ist die Erhöhung der Batchgröße.One way to increase scaling efficiency is to increase the batch size. Dabei ist jedoch Vorsicht geboten, da die Erhöhung der Batchgröße ohne Anpassung der anderen Parameter letztendlich die Leistung des Modells beeinträchtigen kann.That must be done carefully, however, because increasing the batch size without adjusting the other parameters can hurt the model's final performance.

Überlegungen zum DatenformatData format considerations

Für große Datasets empfiehlt es sich oft, Datenformate wie TFRecords und Petastorm zu verwenden, die gegenüber mehreren kleinen Imagedateien eine bessere E/A-Leistung bieten.With large datasets it is often advisable to use data formats such as TFRecords or Petastorm that provide better I/O performance than multiple small image files.

SicherheitsüberlegungenSecurity considerations

Verwenden eines HBI-fähigen Arbeitsbereichs (High Business Impact, mit hoher geschäftlicher Auswirkung)Use High Business Impact-enabled workspace

In Szenarien, in denen vertrauliche Daten verwendet werden, sollten Sie erwägen, einen Azure Machine Learning-Arbeitsbereich als Arbeitsbereich mit hohen geschäftlichen Auswirkungen (HBI) zu bestimmen, indem Sie bei dessen Erstellung das hbi_workspace-Flag auf „true“ festlegen.In scenarios that use sensitive data, you should consider designating an Azure Machine Learning workspace as High Business Impact (HBI) by setting an hbi_workspace flag to true when creating it. In einem HBI-fähigen Arbeitsbereich werden u. a. lokale Ablagedatenträger (scratch) von Computeclustern verschlüsselt, IP-Filterung wird ermöglicht, und die Menge der von Microsoft gesammelten Diagnosedaten wird reduziert.An HBI-enabled workspace, among others, encrypts local scratch disks of compute clusters, enables IP filtering, and reduces the amount of diagnostic data Microsoft collects. Weitere Informationen finden Sie unter Datenverschlüsselung mit Azure Machine Learning.For more information, see Data encryption with Azure Machine Learning.

Verschlüsseln von ruhenden und übertragenen DatenEncrypt data at rest and in motion

Verschlüsseln Sie vertrauliche ruhende Daten, d. h. im Blob Storage.Encrypt sensitive data at rest — that is, in the Blob storage. Verwenden Sie bei jedem Verschieben von Daten zwischen Speicherorten SSL, um die Datenübertragung zu schützen.Each time data moves from one location to the other, use SSL to secure the data transfer. Weitere Informationen finden Sie im Azure Storage-Sicherheitsleitfaden.For more information, see the Azure Storage security guide.

Schützen von Daten in einem virtuellen NetzwerkSecure data in a virtual network

Bei Produktionsbereitstellungen empfiehlt es sich ggf., den Azure Machine Learning-Cluster in einem Subnetz eines von Ihnen angegebenen virtuellen Netzwerks bereitzustellen.For production deployments, consider deploying the Azure Machine Learning cluster into a subnet of a virtual network that you specify. Dadurch können die Computeknoten im Cluster sicher mit anderen virtuellen Computern oder mit einem lokalen Netzwerk kommunizieren.This allows the compute nodes in the cluster to communicate securely with other virtual machines or with an on-premises network. Sie können auch Dienst- oder private Endpunkte für alle zugeordneten Ressourcen verwenden, um den Zugriff aus einem virtuellen Netzwerk zu gewähren.You can also use service or private endpoints for all associated resources to grant access from a virtual network.

Aspekte der ÜberwachungMonitoring considerations

Beim Ausführen Ihres Auftrags ist es wichtig, den Fortschritt zu überwachen und zu überprüfen, ob alles wie erwartet funktioniert.While running your job, it is important to monitor the progress and make sure that things are working as expected. Es kann jedoch eine Herausforderung sein, über einen Cluster von aktiven Knoten hinweg zu überwachen.However, it can be a challenge to monitor across a cluster of active nodes.

Im Rahmen von Azure Machine Learning stehen viele Möglichkeiten zur Verfügung, Ihre Experimente zu instrumentieren.Azure Machine Learning offers many ways to instrument your experiments. Die beiden Standarddatenströme „stdout/stderr“ aus Ihren Skripts werden automatisch protokolliert.The stdout/stderr from your scripts are automatically logged. Diese Protokolle werden automatisch mit ihrem Arbeitsbereichsblobspeicher synchronisiert.These logs are automatically synced to your workspace Blob storage. Sie können sich diese Dateien entweder über das Azure-Portal ansehen, oder sie mithilfe des Python SDK oder der Azure Machine Learning-CLI herunterladen oder streamen.You can either view these files through the Azure portal, or download or stream them using the Python SDK or Azure Machine Learning CLI. Wenn Sie Ihre Experimente mithilfe von Tensorboard protokollieren lassen, werden diese Protokolle automatisch synchronisiert, und Sie können direkt auf sie zugreifen oder das Azure Machine Learning SDK verwenden, um sie in eine Tensorboard-Sitzung zu streamen.If you log your experiments using Tensorboard, these logs are automatically synced and you can access them directly or use the Azure Machine Learning SDK to stream them to a Tensorboard session.

KostenbetrachtungCost considerations

Verwenden Sie den Azure-Preisrechner, um die Kosten für die Ausführung ihrer Deep Learning-Workload abzuschätzen.Use the Azure pricing calculator to estimate costs of running your deep learning workload. Hier finden Sie Azure ML-spezifische Überlegungen zur Kostenplanung und Verwaltung.Here are cost planning and management considerations specific to Azure ML. Weitere Informationen finden Sie im Microsoft Azure Well-Architected Framework unter Grundsätze der Kostenoptimierung.For more information, see the Cost section in Microsoft Azure Well-Architected Framework.

Blob Storage PremiumPremium Blob Storage

Bei Blob Storage Premium fallen zwar höhere Datenspeicherkosten an, dafür sind die Transaktionskosten niedriger als bei Daten, die auf der heißen Ebene von Blob Storage Standard gespeichert sind.Premium Blob Storage has higher data storage cost, however the transaction cost is lower compared to data stored in the Hot tier of Standard Blob Storage. Für Workloads mit hohen Transaktionsraten kann Blob Storage Premium daher günstiger sein.So, Premium Blob Storage can be less expensive for workloads with high transaction rates. Weitere Informationen finden Sie auf der Seite mit der Preisübersicht.For more information, see pricing page.

Azure Container RegistryAzure Container Registry

Azure Container Registry ist als „Basic“, „Standard“ und „Premium“ erhältlich.Azure Container Registry offers Basic, Standard and Premium. Orientieren Sie sich bei der Wahl des Tarifs an Ihren Speicheranforderungen.Choose a tier depending on the storage you need. Wählen Sie Premium aus, wenn Sie Georeplikation oder einen erhöhten Durchsatz für Docker-Pullvorgänge über parallele Knoten hinweg benötigen.Choose Premium if you need geo replication or enhanced throughput for docker pulls across concurrent nodes. Zusätzlich fallen die üblichen Netzwerkgebühren an.In addition, standard networking charges apply. Weitere Informationen finden Sie unter Azure Container Registry – Preise.For more information, see Azure Container Registry pricing.

Azure Machine Learning ComputeAzure Machine Learning Compute

In dieser Architektur ist Azure ML Compute wahrscheinlich der Hauptkostentreiber.In this architecture, Azure ML Compute is likely the main cost driver. Die Implementierung benötigt einen Cluster mit GPU-Computeknoten, dessen Preis von deren Anzahl und der ausgewählten VM-Größe bestimmt wird.The implementation needs a cluster of GPU compute nodes price of which is determined by their number and the selected VM size. Weitere Informationen zu den VM-Größen mit GPUs finden Sie unter Für GPU optimierte VM-Größen sowie in den Preisdetails für virtuelle Computer in Azure.For more information on the VM sizes that include GPUs, see GPU-optimized virtual machine sizes and Azure Virtual Machines Pricing.

Normalerweise wird bei Deep Learning-Workloads alle paar Epochen ein Prüfpunkt erstellt, um die Auswirkungen unerwarteter Unterbrechungen auf das Training zu begrenzen.Typically, deep learning workloads checkpoint progress after every (few) epoch(s) to limit the impact of unexpected interruptions to the training. Dies lässt sich gut mit der Möglichkeit kombinieren, VMs mit niedriger Priorität für Azure Machine Learning Compute-Cluster zu nutzen.This can be nicely paired with the ability to leverage low-priority VMs for Azure Machine Learning compute clusters. VMs mit niedriger Priorität verwenden die überschüssige Kapazität von Azure zu erheblich reduzierten Preisen. Sie können aber auch vorzeitig entfernt werden, wenn die Kapazitätsanforderungen steigen.Low-priority VMs use Azure's excess capacity at significantly reduced rates, however, they can be preempted if capacity demands increase.

BereitstellungDeployment

Die Referenzimplementierung dieser Architektur ist auf GitHub verfügbar.The reference implementation of this architecture is available on GitHub. Führen Sie die dort beschriebenen Schritte aus, um ein verteiltes Training von Deep Learning-Modellen in mehreren Clustern mit GPU-fähigen virtuellen Computern durchzuführen.Follow the steps described there to conduct distributed training of deep learning models across clusters of GPU-enabled VMs.

Nächste SchritteNext steps

Diese Architektur gibt ein trainiertes, in Blob Storage gespeichertes Modell aus.The output from this architecture is a trained model that is saved to a Blob storage. Dieses Modell kann für Echtzeitbewertungen oder für Batchbewertungen operationalisiert werden.You can operationalize this model for either real-time scoring or batch scoring. Weitere Informationen finden Sie in den folgenden Referenzarchitekturen:For more information, see the following reference architectures:

Folgende Ressourcen sind unter Umständen ebenfalls hilfreich:You may also find the following resources useful: