Het succes van elke pijplijn voor machine learning (ML) hangt niet alleen af van de kwaliteit van het gebruikte model, maar ook van het vermogen om dit model te trainen en te herhalen. Een van de belangrijkste manieren om een ML-model te verbeteren, is door beter afstembare parameters te kiezen, ook wel bekend als hyperparameters. Dit staat bekend als hyperparameter optimalisatie (HPO). Dit handmatig afstemmen kan echter vaak omslachtig zijn vanwege de grootte van de zoekruimte, waarbij soms duizenden trainingsiteraties nodig zijn.
Dit bericht laat zien hoe Amazon Sage Maker stelt u in staat om niet alleen uw eigen modelalgoritme mee te nemen met behulp van de scriptmodus, maar ook om het ingebouwde HPO-algoritme te gebruiken. U leert hoe u eenvoudig de gewenste evaluatiemetriek kunt uitvoeren naar Amazon Cloud Watch, waaruit u deze statistiek kunt extraheren om het automatische HPO-algoritme te begeleiden. Vervolgens kunt u een HPO-afstemmingstaak maken die verschillende trainingstaken en bijbehorende rekenresources orkestreert. Na voltooiing kunt u de beste trainingstaak zien volgens de evaluatiestatistieken.
Overzicht oplossingen
We doorlopen de volgende stappen:
- Gebruik de scriptmodus van SageMaker om ons eigen model bovenop een door AWS beheerde container te plaatsen.
- Pas ons trainingsscript aan om onze evaluatiestatistiek af te drukken.
- Zoek de statistiek in CloudWatch Logs.
- Extraheer de statistiek uit CloudWatch.
- Gebruik HPO om het beste model te selecteren door af te stemmen op deze evaluatiestatistiek.
- Bewaak de HPO en vind de beste trainingsbaan.
Voorwaarden
Voor deze walkthrough moet u aan de volgende vereisten voldoen:
Gebruik aangepaste algoritmen op een door AWS beheerde container
Verwijzen naar Neem je eigen model mee met de scriptmodus van Amazon SageMaker voor een meer gedetailleerde kijk op het toevoegen van een aangepast model aan SageMaker met behulp van een door AWS beheerde container.
We maken gebruik van de MNIST-gegevensset voor dit voorbeeld. MNIST is een veelgebruikte dataset voor handgeschreven cijferclassificatie, bestaande uit 70,000 gelabelde grijswaardenafbeeldingen van 28 × 28 pixels van handgeschreven cijfers. De dataset is opgesplitst in 60,000 trainingsbeelden en 10,000 testbeelden, die 10 klassen bevatten (één voor elk cijfer).
- Open uw notebook-exemplaar en voer de volgende opdracht uit om het
mnist.py
file:Voordat we de gegevens ophalen en opslaan, maken we een SageMaker-sessie. We moeten ook de S3-bucket en het voorvoegsel specificeren om te gebruiken voor trainings- en modelgegevens. Dit moet binnen dezelfde regio vallen als de notebookinstantie, training en hosting. De volgende code gebruikt de standaard emmer als het al bestaat, of maakt een nieuwe aan als dat niet het geval is. We moeten ook de IAM-rol ARN opnemen om training en hosting toegang te geven tot uw gegevens. We gebruiken
get_execution_role()
om de IAM-rol op te halen die u voor uw notebookinstantie hebt gemaakt. - Maak een sessie aan met de volgende code:
- Laten we nu de gegevens ophalen, opslaan in onze lokale map
/data
, en upload het naar Amazon S3:We kunnen nu een schatter maken om de PyTorch-trainingstaak in te stellen. We concentreren ons hier niet op de eigenlijke trainingscode (
mnist.py
) tot in detail. Laten we eens kijken hoe we dit trainingsscript gemakkelijk kunnen aanroepen om een trainingstaak te initialiseren. - In de volgende code nemen we een ingangspuntscript op met de naam mnist.py dat onze aangepaste trainingscode bevat:
- Om ervoor te zorgen dat deze trainingstaak correct is geconfigureerd, met werkende trainingscode, kunnen we een trainingstaak starten door deze aan te passen aan de gegevens die we hebben geüpload naar Amazon S3. SageMaker zorgt ervoor dat onze gegevens beschikbaar zijn in het lokale bestandssysteem, zodat ons trainingsscript de gegevens gewoon van schijf kan lezen:
We creëren echter geen enkele opleidingsbaan. We gebruiken de automatische modelafstemming van SageMaker door middel van een hyperparameterafstemmingstaak. Modelafstemming is volledig agnostisch ten opzichte van het daadwerkelijke modelalgoritme. Raadpleeg voor meer informatie over alle hyperparameters die u kunt afstemmen Voer automatische modelafstemming uit met SageMaker.
Voor elke hyperparameter die we willen optimaliseren, moeten we het volgende definiëren:
- Een naam
- Een type (parameters kunnen een geheel getal, continu of categorisch zijn)
- Een reeks waarden om te verkennen
- Een schaaltype (lineair, logaritmisch, omgekeerd logaritmisch of automatisch); hiermee kunnen we bepalen hoe een specifiek parameterbereik wordt verkend
We moeten ook de statistiek definiëren waarvoor we optimaliseren. Het kan elke numerieke waarde zijn, zolang het maar zichtbaar is in het trainingslogboek en u een reguliere expressie kunt doorgeven om het te extraheren.
Als we naar regel 181 in mnist.py kijken, kunnen we zien hoe we naar de logger printen:
We kunnen deze uitvoer zelfs zien in de logboeken van de trainingstaak die we zojuist hebben uitgevoerd. Door de logboekgroep te openen /aws/sagemaker/TrainingJobs
op de CloudWatch-console zouden we een loggebeurtenis moeten hebben die begint met pytorch-training-
gevolgd door een tijdstempel en gegenereerde naam.
De volgende schermafbeelding markeert het logboek waarnaar we op zoek zijn.
Laten we nu beginnen met het bouwen van onze taak voor het afstemmen van hyperparameters.
- Zoals vermeld, moeten we eerst wat informatie over de hyperparameters definiëren, onder het object als volgt:
Hier hebben we onze twee hyperparameters gedefinieerd. De leersnelheid (lr) is een continue parameter (dus een continue waarde) in het bereik van 0.001 tot 0.1. De batchgrootte (batch-size) is een categorische parameter met de voorafgaande discrete waarden.
Vervolgens specificeren we de objectieve metriek die we willen afstemmen en de definitie ervan. Dit omvat de reguliere expressie (regex) die nodig is om die statistiek te extraheren uit de CloudWatch-logboeken van de trainingstaak die we eerder zagen. We specificeren ook een beschrijvende naam gemiddeld testverlies en het doeltype als Minimaliseren, dus de hyperparameterafstemming probeert de objectieve metriek te minimaliseren bij het zoeken naar de beste hyperparameterinstelling.
- Specificeer de metriek met de volgende code:
Nu zijn we klaar om onze te maken
HyperparameterTuner
object. Naast de naam, het type en de definitie van de doelstellingsmetriek, geven we dehyperparameter_ranges
object en de schatter die we eerder hebben gemaakt. We specificeren ook het aantal banen dat we in totaal willen uitvoeren, samen met het aantal dat parallel moet lopen. We hebben het maximale aantal banen gekozen als 9, maar u zou doorgaans kiezen voor een veel hoger aantal (zoals 50) voor optimale prestaties. - Maak de
HyperparameterTuner
object met de volgende code:
Voordat we met de afstemmingstaak beginnen, is het vermeldenswaard hoe de combinaties van hyperparameters worden bepaald. Om goede resultaten te krijgen, moet u de juiste reeksen kiezen om te verkennen. Standaard wordt de Bayesiaanse zoekstrategie gebruikt, verderop in beschreven Hoe Hyperparameter Tuning werkt.
Bij Bayesiaanse optimalisatie wordt hyperparameterafstemming behandeld als een regressie probleem. Om dit regressieprobleem op te lossen, raadt het welke hyperparametercombinaties de beste resultaten opleveren, en voert het trainingstaken uit om deze waarden te testen. Het gebruikt regressie om de volgende set hyperparameterwaarden te kiezen om te testen. Er is een duidelijke afweging tussen exploiteren en verkennen die de zoekstrategie hier maakt. Het kan hyperparameterwaarden kiezen die dicht bij de combinatie liggen die resulteerde in de beste eerdere trainingstaak om de prestaties stapsgewijs te verbeteren. Of het kan waarden kiezen die verder weg liggen, om te proberen een nieuw bereik van waarden te verkennen dat nog niet goed wordt begrepen.
U kunt echter andere zoekstrategieën specificeren. De volgende strategieën worden ondersteund in SageMaker:
- Raster zoeken – Probeert elke mogelijke combinatie uit het opgegeven bereik van hyperparameters.
- Willekeurig zoeken – Probeert willekeurige combinaties uit het opgegeven waardenbereik. Het is niet afhankelijk van de resultaten van eerdere trainingstaken, dus u kunt het maximale aantal gelijktijdige trainingstaken uitvoeren zonder de prestaties van de afstemming te beïnvloeden.
- Hyperband zoeken - Gebruikt zowel tussen- als eindresultaten van trainingstaken om tijdperken opnieuw toe te wijzen aan goed gebruikte hyperparameterconfiguraties, en stopt automatisch degenen die ondermaats presteren.
U kunt ook onderzoeken of u uw eigen algoritme kunt gebruiken, zoals uitgelegd in Breng uw eigen algoritme voor hyperparameteroptimalisatie op Amazon SageMaker.
- Vervolgens starten we training op het tunerobject zelf (niet de schatter), aanroepend
.fit()
en het S3-pad doorgeven aan onze trein- en testdataset:
We kunnen dan de voortgang van onze afstemmingstaak volgen op de SageMaker-console, op de Taken voor het afstemmen van hyperparameters bladzijde. De afstemmingstaak activeert de onderliggende rekenresources die nodig zijn door elke afzonderlijke trainingsrun en de bijbehorende rekenkracht te orkestreren.
Dan is het gemakkelijk om alle individuele trainingstaken te zien die zijn voltooid of bezig zijn, samen met de bijbehorende objectieve metrische waarde. In de volgende schermafbeelding kunnen we zien dat de eerste reeks trainingstaken is voltooid, die er volgens onze specificaties in totaal drie bevat max_parallel_jobs
waarde van 3. Na voltooiing kunnen we de beste trainingsbaan vinden - degene die het gemiddelde testverlies minimaliseert - op de Beste opleidingsbaan Tab.
Opruimen
Verwijder de resources die u hebt geïnitialiseerd om toekomstige kosten te voorkomen. Dit zijn de S3-bucket, de IAM-rol en de SageMaker-notebookinstantie.
Conclusie
In dit bericht hebben we besproken hoe we ons eigen model in SageMaker kunnen brengen en vervolgens geautomatiseerde hyperparameteroptimalisatie kunnen gebruiken om de beste trainingstaak te selecteren. We hebben de populaire MNIST-dataset gebruikt om te kijken hoe we een aangepaste objectieve metriek kunnen specificeren waarop de HPO-taak moet optimaliseren. Door deze objectieve metriek uit CloudWatch te extraheren en verschillende hyperparameterwaarden te specificeren, kunnen we de HPO-taak eenvoudig starten en monitoren.
Als u meer informatie nodig heeft of wilt zien hoe onze klanten HPO gebruiken, raadpleeg dan Amazon SageMaker automatische modelafstemming. Pas vandaag nog uw eigen model aan voor geautomatiseerde optimalisatie van hyperparameters in SageMaker.
Over de auteur
Sam prijs is een Professional Services Consultant gespecialiseerd in AI/ML en data-analyse bij Amazon Web Services. Hij werkt nauw samen met klanten in de publieke sector in de gezondheidszorg en life sciences om uitdagende problemen op te lossen. Als hij dit niet doet, speelt Sam graag gitaar en tennis en ziet hij zijn favoriete indiebands.
- AI
- ai kunst
- ai kunst generator
- je hebt een robot
- Amazon Sage Maker
- kunstmatige intelligentie
- certificering van kunstmatige intelligentie
- kunstmatige intelligentie in het bankwezen
- kunstmatige intelligentie robot
- kunstmatige intelligentie robots
- kunstmatige intelligentiesoftware
- AWS-machine learning
- blockchain
- blockchain conferentie ai
- vindingrijk
- conversatie kunstmatige intelligentie
- crypto conferentie ai
- van dall
- diepgaand leren
- google ai
- Intermediair (200)
- machine learning
- Plato
- plato ai
- Plato gegevensintelligentie
- Plato-spel
- PlatoData
- platogamen
- schaal ai
- syntaxis
- Technische instructies
- zephyrnet