Zephyrnet-logotyp

Hantera AutoML-arbetsflöden med AWS Step Functions och AutoGluon på Amazon SageMaker

Datum:

Att köra experiment med maskininlärning (ML) i molnet kan sträcka sig över många tjänster och komponenter. Förmågan att strukturera, automatisera och spåra ML-experiment är avgörande för att möjliggöra snabb utveckling av ML-modeller. Med de senaste framstegen inom området för automatiserad maskininlärning (AutoML), nämligen området för ML som är dedikerat till automatisering av ML-processer, kan du bygga exakta beslutsfattande modeller utan att behöva djup ML-kunskap. I det här inlägget tittar vi på AutoGluon, ett AutoML-ramverk med öppen källkod som låter dig bygga exakta ML-modeller med bara några rader Python.

AWS erbjuder ett brett utbud av tjänster för att hantera och köra ML-arbetsflöden, så att du kan välja en lösning baserat på dina kunskaper och applikationer. Till exempel om du redan använder AWS stegfunktioner för att orkestrera komponenterna i distribuerade applikationer kan du använda samma tjänst för att bygga och automatisera dina ML-arbetsflöden. Andra MLOps-verktyg som erbjuds av AWS inkluderar Amazon SageMaker-rörledningar, som gör att du kan bygga in ML-modeller Amazon SageMaker Studio med MLOps-funktioner (som CI/CD-kompatibilitet, modellövervakning och modellgodkännanden). Verktyg med öppen källkod, som t.ex Apache luftflöde—tillgänglig på AWS genom Amazon Managed Workflows för Apache Airflow-och KubeFlow, såväl som hybridlösningar, stöds också. Till exempel kan du hantera dataintag och bearbetning med Step Functions medan du tränar och distribuerar dina ML-modeller med SageMaker Pipelines.

I det här inlägget visar vi hur även utvecklare utan ML-expertis enkelt kan bygga och underhålla toppmoderna ML-modeller med AutoGluon på Amazon SageMaker och stegfunktioner för att orkestrera arbetsflödeskomponenter.

Efter en översikt över AutoGluon-algoritmen presenterar vi arbetsflödesdefinitionerna tillsammans med exempel och en kod handledning som du kan tillämpa på dina egna uppgifter.

AutoGluon

AutoGluon är ett AutoML-ramverk med öppen källkod som påskyndar införandet av ML genom att träna korrekta ML-modeller med bara några rader Python-kod. Även om det här inlägget fokuserar på tabelldata låter AutoGluon dig också träna toppmoderna modeller för bildklassificering, objektdetektering och textklassificering. AutoGluon tabular skapar och kombinerar olika modeller för att hitta den optimala lösningen.

AutoGluon-teamet på AWS släppte en papper som presenterar principerna som strukturerar biblioteket:

  • Enkelhet – Du kan skapa klassificerings- och regressionsmodeller direkt från rådata utan att behöva analysera data eller utföra funktionsteknik
  • Robusthet – Den övergripande utbildningsprocessen ska lyckas även om några av de enskilda modellerna misslyckas
  • Förutsägbar timing – Du kan få optimala resultat inom den tid du vill investera för träning
  • Feltolerans – Du kan stoppa träningen och återuppta den när som helst, vilket optimerar kostnaderna om processen körs på punktbilder i molnet

För mer information om algoritmen, se papper släppt av AutoGluon-teamet på AWS.

När du har installerat AutoGluon-paket och dess beroenden är det lika enkelt att träna en modell som att skriva tre rader kod:

from autogluon.tabular import TabularDataset, TabularPredictor

train_data = TabularDataset('s3://my-bucket/datasets/my-csv.csv')
predictor = TabularPredictor(label="my-label", path="my-output-folder").fit(train_data)

AutoGluon-teamet bevisade styrkan i ramverket genom att nå topp 10 topplistor i flera Kaggle-tävlingar.

Lösningsöversikt

Vi använder Step Functions för att implementera ett ML-arbetsflöde som täcker utbildning, utvärdering och implementering. Pipelinedesignen möjliggör snabba och konfigurerbara experiment genom att modifiera indataparametrarna som du matar in i pipelinen vid körning.

Du kan konfigurera pipeline för att implementera olika arbetsflöden, till exempel följande:

  • Träna en ny ML-modell och lagra den i SageMaker-modellregistret, om ingen distribution behövs vid denna tidpunkt
  • Implementera en förutbildad ML-modell, antingen för online (SageMaker slutpunkt) eller offline (SageMaker batch-transformation) slutledning
  • Kör en komplett pipeline för att träna, utvärdera och distribuera en ML-modell från grunden

Lösningarna består av en generell statsmaskin (se följande diagram) som orkestrerar uppsättningen av åtgärder som ska köras baserat på en uppsättning indataparametrar.

Stegen för tillståndsmaskinen är som följer:

  1. Det första steget IsTraining avgör om vi använder en förtränad modell eller tränar en modell från grunden. Om du använder en förtränad modell hoppar tillståndsmaskinen till steg 7.
  2. När en ny ML-modell krävs, TrainSteps triggar en andra tillståndsmaskin som utför alla nödvändiga åtgärder och returnerar resultatet till den aktuella tillståndsmaskinen. Vi går in mer i detalj på träningstillståndsmaskinen i nästa avsnitt.
  3. När träningen är klar, PassModelName lagrar utbildningsjobbnamnet på en specificerad plats i tillståndsmaskinkontexten för att återanvändas i följande tillstånd.
  4. Om en utvärderingsfas väljs, IsEvaluation omdirigerar tillståndsmaskinen mot utvärderingsgrenen. Annars hoppar den till steg 7.
  5. Utvärderingsfasen implementeras sedan med hjälp av en AWS Lambda funktion som anropas av ModelValidation steg. Lambdafunktionen hämtar modellprestanda på en testset och jämför den med en användarkonfigurerbar tröskel som anges i ingångsparametrarna. Följande kod är ett exempel på utvärderingsresultat:
    "Payload":{
       "IsValid":true,
       "Scores":{
          "accuracy":0.9187,
          "balanced_accuracy":0.7272,
          "mcc":0.5403,
          "roc_auc":0.9489,
          "f1":0.5714,
          "precision":0.706,
          "recall":0.4799
       }
    }

  6. Om modellutvärderingen kl EvaluationResults är framgångsrik, fortsätter tillståndsmaskinen med eventuella implementeringssteg. Om modellen presterar under ett användardefinierat kriterium, stannar tillståndsmaskinen och distributionen hoppas över.
  7. Om distribution väljs, IsDeploy startar en tredje tillståndsmaskin igenom DeploySteps, som vi beskriver senare i detta inlägg. Om driftsättning inte behövs stannar tillståndsmaskinen här.

En uppsättning ingångsparametersampler finns tillgängliga på GitHub repo.

Träningstillståndsmaskin

Tillståndsmaskinen för att träna en ny ML-modell med AutoGluon består av två steg, som illustreras i följande diagram. Det första steget är ett SageMaker-utbildningsjobb som skapar modellen. Den andra sparar posterna i SageMaker-modellregistret.

Du kan köra dessa steg antingen automatiskt som en del av huvudtillståndsmaskinen eller som en fristående process.

Driftstillståndsmaskin

Låt oss nu titta på tillståndsmaskinen dedikerad till distributionsfasen (se följande diagram). Som nämnts tidigare stöder arkitekturen både online- och offlinedistribution. Den förra består av att distribuera en SageMaker-slutpunkt, medan den senare kör ett SageMaker-batchtransformeringsjobb.

Implementeringsstegen är följande:

  1. ChoiceDeploymentMode undersöker ingångsparametrarna för att definiera vilket distributionsläge som behövs och dirigerar tillståndsmaskinen mot motsvarande gren.
  2. Om en slutpunkt väljs, EndpointConfig steg definierar dess konfiguration, medan CreateEndpoint startar processen med att allokera de nödvändiga datorresurserna. Denna tilldelning kan ta flera minuter, så tillståndsmaskinen pausar kl WaitForEndpoint och använder en lambdafunktion för att polla slutpunktens status.
  3. Medan slutpunkten konfigureras, ChoiceEndpointStatus återgår till WaitForEndpoint stat, annars fortsätter det att antingen DeploymentFailed or DeploymentSucceeded.
  4. Om offline-distribution väljs kör tillståndsmaskinen ett SageMaker batchtransformeringsjobb, varefter tillståndsmaskinen stoppar.

Slutsats

Det här inlägget presenterar en lättanvänd pipeline för att orkestrera AutoML-arbetsflöden och möjliggöra snabba experiment i molnet, vilket möjliggör korrekta ML-lösningar utan att kräva avancerad ML-kunskap.

Vi tillhandahåller en allmän pipeline samt två modulära sådana som gör att du kan utföra utbildning och driftsättning separat om det behövs. Dessutom är lösningen helt integrerad med SageMaker och drar nytta av dess funktioner och beräkningsresurser.

Kom igång med detta nu kod handledning för att distribuera resurserna som presenteras i det här inlägget i ditt AWS-konto och köra dina första AutoML-experiment.


Om författarna

Federico Piccinini är en Deep Learning Architect för Amazon Machine Learning Solutions Lab. Han brinner för maskininlärning, förklarlig AI och MLOps. Han fokuserar på att designa ML-pipelines för AWS-kunder. Utanför jobbet gillar han sport och pizza.

Paolo Irrera är en dataforskare vid Amazon Machine Learning Solutions Lab, där han hjälper kunder att ta itu med affärsproblem med ML och molnfunktioner. Han har en doktorsexamen i datorseende från Telecom ParisTech, Paris.

plats_img

Senaste intelligens

plats_img

Chatta med oss

Hallå där! Hur kan jag hjälpa dig?