Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel wordt beschreven hoe u het onderdeel PyTorch-model trainen in Azure Machine Learning-ontwerpfunctie gebruikt om PyTorch-modellen zoals DenseNet te trainen. Training vindt plaats nadat u een model hebt gedefinieerd en de bijbehorende parameters hebt ingesteld en gelabelde gegevens nodig hebt.
Momenteel ondersteunt het onderdeel Train PyTorch Model zowel één knooppunt als gedistribueerde training.
Train PyTorch Model gebruiken
Voeg een DenseNet-onderdeel of ResNet toe aan uw pijplijnconcept in de ontwerpfunctie.
Voeg het onderdeel Train PyTorch Model toe aan de pijplijn. U vindt dit onderdeel onder de categorie Modeltraining . Vouw Train uit en sleep vervolgens het onderdeel Train PyTorch Model naar uw pijplijn.
Notitie
Train PyTorch Model component is better run on GPU type compute for large dataset, anders mislukt uw pijplijn. U kunt berekeningen selecteren voor een specifiek onderdeel in het rechterdeelvenster van het onderdeel door het instellen van Ander rekendoel gebruiken.
Koppel aan de linkerkant een niet-getraind model. Koppel de trainingsgegevensset en validatiegegevensset aan de middelste en rechterinvoer van het Train PyTorch-model.
Voor niet-getraind model moet het een PyTorch-model zijn, zoals DenseNet; anders wordt er een 'InvalidModelDirectoryError' gegenereerd.
Voor de gegevensset moet de trainingsgegevensset een gelabelde afbeeldingsmap zijn. Raadpleeg Converteren naar afbeeldingsmap voor het ophalen van een gelabelde afbeeldingsmap. Als dit niet is gelabeld, wordt er een 'NotLabeledDatasetError' gegenereerd.
De trainingsgegevensset en validatiegegevensset hebben dezelfde labelcategorieën, anders wordt er een InvalidDatasetError gegenereerd.
Geef voor Epochs op hoeveel tijdvakken u wilt trainen. De hele gegevensset wordt in elk tijdvak opnieuw geïmplementeerd, standaard 5.
Geef voor batchgrootte op hoeveel exemplaren er in een batch moeten worden getraind, standaard 16.
Geef voor opwarmstapnummer op hoeveel tijdvakken u de training wilt opwarmen, voor het geval de eerste leersnelheid iets te groot is om standaard 0 te beginnen met samenvoegen.
Geef voor het leerpercentage een waarde op voor het leerpercentage en de standaardwaarde is 0,001. De leersnelheid bepaalt de grootte van de stap die wordt gebruikt in optimizer, zoals sgd telkens wanneer het model wordt getest en gecorrigeerd.
Door de snelheid kleiner in te stellen, test u het model vaker, met het risico dat u mogelijk vastloopt in een lokaal plateau. Door het hogere tarief in te stellen, kunt u sneller convergeren, met het risico dat de werkelijke minima wordt overschreden.
Notitie
Als het verlies van de trein tijdens de training wordt, wat kan worden veroorzaakt door te grote leersnelheid, kan het verminderen van het leerpercentage helpen. Bij gedistribueerde training, om gradiëntafname stabiel te houden, wordt de werkelijke leersnelheid berekend
lr * torch.distributed.get_world_size()omdat de batchgrootte van de procesgroep wereldgrootten is die van één proces. Polynomial learning rate verval wordt toegepast en kan leiden tot een beter presterend model.Voor willekeurige seed typt u desgewenst een geheel getal dat u als seed wilt gebruiken. Het gebruik van een seed wordt aanbevolen als u de reproduceerbaarheid van het experiment tussen taken wilt garanderen.
Geef voor Geduld op hoeveel tijdvakken u moet stoppen met trainen als validatieverlies niet opeenvolgend afneemt. standaard 3.
Geef voor de afdrukfrequentie de frequentie van het trainingslogboek op voor iteraties in elk tijdvak, standaard 10.
Verzend de pijplijn. Als uw gegevensset een grotere grootte heeft, duurt het even en wordt GPU-rekenkracht aanbevolen.
Gedistribueerde training
In gedistribueerde training wordt de workload voor het trainen van een model gesplitst en gedeeld tussen meerdere miniprocessors, werkknooppunten genoemd. Deze werkknooppunten werken parallel om modeltraining te versnellen. Momenteel biedt de ontwerper ondersteuning voor gedistribueerde training voor het onderdeel Train PyTorch Model .
Trainingstijd
Met gedistribueerde training kunt u in slechts enkele uren trainen op een grote gegevensset zoals ImageNet (1000 klassen, 1,2 miljoen afbeeldingen) door Het PyTorch-model trainen. In de volgende tabel ziet u de trainingstijd en prestaties tijdens het trainen van 50 perioden van Resnet50 op ImageNet helemaal zelf op basis van verschillende apparaten.
| Apparaten | Trainingstijd | Doorvoer van training | Top-1 Validatienauwkeurigheid | Top-5 validatienauwkeurigheid |
|---|---|---|---|---|
| 16 V100 GPU's | 6h22min | ~3200 afbeeldingen per seconde | 68.83% | 88.84% |
| 8 V100 GPU's | 12u21min | ~1670 afbeeldingen per seconde | 68.84% | 88.74% |
Klik op dit onderdeel op het tabblad Metrische gegevens en zie metrische grafieken voor training, zoals 'Afbeeldingen trainen per seconde' en 'Nauwkeurigheid van top 1'.
Gedistribueerde training inschakelen
Als u gedistribueerde training wilt inschakelen voor het onderdeel Train PyTorch Model , kunt u instellen in taakinstellingen in het rechterdeelvenster van het onderdeel. Alleen Azure Machine Learning Compute-cluster wordt ondersteund voor gedistribueerde training.
Notitie
Er zijn meerdere GPU's vereist om gedistribueerde training te activeren, omdat het NCCL-back-endonderdeel PyTorch-model cuda nodig heeft.
Selecteer het onderdeel en open het rechterdeelvenster. Vouw de sectie Taakinstellingen uit.
Zorg ervoor dat u Azure Machine Learning-berekening hebt geselecteerd voor het rekendoel.
In de sectie Resource-indeling moet u de volgende waarden instellen:
Aantal knooppunten: het aantal knooppunten in het rekendoel dat wordt gebruikt voor training. Dit moet kleiner zijn dan of gelijk zijn aan het maximum aantal knooppunten dat uw rekencluster heeft. Standaard is dit 1, wat betekent dat de taak met één knooppunt wordt uitgevoerd.
Aantal processen per knooppunt: het aantal processen dat per knooppunt wordt geactiveerd. Deze moet kleiner zijn dan of gelijk zijn aan de verwerkingseenheid van uw rekenproces. Standaard is dit 1, wat betekent dat één procestaak.
U kunt het maximum aantal knooppunten en de verwerkingseenheid van uw berekening controleren door op de naam van de berekening te klikken op de detailpagina van de berekening.
Hier vindt u meer informatie over gedistribueerde training in Azure Machine Learning.
Problemen met gedistribueerde training oplossen
Als u gedistribueerde training voor dit onderdeel inschakelt, worden er stuurprogrammalogboeken voor elk proces weergegeven.
70_driver_log_0 is bedoeld voor het hoofdproces. U kunt stuurprogrammalogboeken controleren op foutdetails van elk proces onder het tabblad Uitvoer+logboeken in het rechterdeelvenster.
Als het onderdeel gedistribueerde training mislukt zonder 70_driver logboeken, kunt u controleren op 70_mpi_log foutdetails.
In het volgende voorbeeld ziet u een veelvoorkomende fout. Dit is het aantal processen per knooppunt is groter dan de verwerkingseenheid van de rekenkracht .
Raadpleeg dit artikel voor meer informatie over het oplossen van problemen met onderdelen.
Resultaten
Nadat de pijplijntaak is voltooid, verbindt u het Train PyTorch-model met Score Image Model om waarden voor nieuwe invoervoorbeelden te voorspellen om het model te gebruiken voor scoren.
Technische notities
Verwachte invoer
| Naam | Typologie | Beschrijving |
|---|---|---|
| Ongetraind model | UntrainedModelDirectory | Niet-getraind model, PyTorch vereisen |
| Trainingsgegevensset | ImageDirectory | Trainingsgegevensset |
| Validatiegegevensset | ImageDirectory | Validatiegegevensset voor evaluatie elke periode |
Onderdeelparameters
| Naam | Bereik | Typologie | Verstek | Beschrijving |
|---|---|---|---|---|
| Tijdperken | >0 | Geheel getal | 5 | Selecteer de kolom met het label of de resultaatkolom |
| Batchgrootte | >0 | Geheel getal | 16 | Hoeveel exemplaren er in een batch moeten worden getraind |
| Opwarmstapnummer | >=0 | Geheel getal | 0 | Hoeveel tijdvakken om training op te warmen |
| Leersnelheid | >=dubbel. Epsilon | zweven | 0,1 | Het eerste leerpercentage voor de stochastische gradiëntafname-optimalisatie. |
| Willekeurig basis | Alle | Geheel getal | 1 | De seed voor de generator voor willekeurige getallen die door het model wordt gebruikt. |
| Geduld | >0 | Geheel getal | 3 | Hoeveel tijdvakken om de training vroeg te stoppen |
| Afdrukfrequentie | >0 | Geheel getal | 10 | Afdrukfrequentie van trainingslogboeken over iteraties in elk tijdvak |
Uitvoerwaarden
| Naam | Typologie | Beschrijving |
|---|---|---|
| Getraind model | ModelDirectory | Getraind model |
Volgende stappen
Bekijk de set onderdelen die beschikbaar zijn voor Azure Machine Learning.