Zephyrnet-logo

Beheer AutoML-workflows met AWS Step Functions en AutoGluon op Amazon SageMaker

Datum:

Het uitvoeren van machine learning (ML)-experimenten in de cloud kan zich uitstrekken over veel services en componenten. De mogelijkheid om ML-experimenten te structureren, automatiseren en te volgen is essentieel om snelle ontwikkeling van ML-modellen mogelijk te maken. Met de nieuwste ontwikkelingen op het gebied van geautomatiseerde machine learning (AutoML), namelijk het gebied van ML dat zich toelegt op de automatisering van ML-processen, kunt u nauwkeurige besluitvormingsmodellen bouwen zonder dat u diepgaande ML-kennis nodig heeft. In dit bericht kijken we naar AutoGluon, een open-source AutoML-framework waarmee je nauwkeurige ML-modellen kunt bouwen met slechts een paar regels Python.

AWS biedt een breed scala aan services om ML-workflows te beheren en uit te voeren, zodat u een oplossing kunt selecteren op basis van uw vaardigheden en toepassing. Als u bijvoorbeeld al AWS Stap Functies om de componenten van gedistribueerde applicaties te orkestreren, kunt u dezelfde service gebruiken om uw ML-workflows te bouwen en te automatiseren. Andere MLOps-tools die door AWS worden aangeboden, zijn onder meer: Amazon SageMaker-pijpleidingen, waarmee u ML-modellen kunt bouwen in Amazon SageMaker Studio met MLOps-mogelijkheden (zoals CI/CD-compatibiliteit, modelbewaking en modelgoedkeuringen). Open source-tools, zoals: Apache-luchtstroom—beschikbaar op AWS via Door Amazon beheerde workflows voor Apache Airflow-en KubeFlow, evenals hybride oplossingen, worden ook ondersteund. U kunt bijvoorbeeld gegevensopname en -verwerking beheren met Step Functions terwijl u uw ML-modellen traint en implementeert met SageMaker Pipelines.

In dit bericht laten we zien hoe zelfs ontwikkelaars zonder ML-expertise eenvoudig ultramoderne ML-modellen kunnen bouwen en onderhouden met behulp van AutoGluon op Amazon Sage Maker en Step Functions om workflowcomponenten te orkestreren.

Na een overzicht van het AutoGluon-algoritme, presenteren we de workflowdefinities samen met voorbeelden en a code-tutorial die u kunt toepassen op uw eigen gegevens.

AutoGluon

AutoGluon is een open-source AutoML-framework dat de acceptatie van ML versnelt door nauwkeurige ML-modellen te trainen met slechts een paar regels Python-code. Hoewel dit bericht zich richt op tabelgegevens, kunt u met AutoGluon ook geavanceerde modellen trainen voor beeldclassificatie, objectdetectie en tekstclassificatie. AutoGluon-tabel creëert en combineert verschillende modellen om de optimale oplossing te vinden.

Het AutoGluon-team van AWS heeft een papier die de principes presenteert die de bibliotheek structureren:

  • Eenvoud – U kunt classificatie- en regressiemodellen rechtstreeks van onbewerkte gegevens maken zonder de gegevens te hoeven analyseren of feature-engineering uit te voeren
  • robuustheid – Het algehele trainingsproces moet slagen, zelfs als sommige van de individuele modellen falen
  • Voorspelbare timing – U kunt optimale resultaten behalen binnen de tijd die u voor training wilt investeren
  • Fout tolerantie – U kunt de training op elk moment stoppen en hervatten, wat de kosten optimaliseert als het proces op spotafbeeldingen in de cloud draait

Voor meer details over het algoritme, raadpleeg de papier vrijgegeven door het AutoGluon-team van AWS.

Nadat u de AutoGluon-pakket en zijn afhankelijkheden, is het trainen van een model net zo eenvoudig als het schrijven van drie regels code:

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)

Het AutoGluon-team bewees de kracht van het raamwerk door in meerdere Kaggle-competities de top 10 te bereiken.

Overzicht oplossingen

We gebruiken Step Functions om een ​​ML-workflow te implementeren die training, evaluatie en implementatie omvat. Het pijplijnontwerp maakt snelle en configureerbare experimenten mogelijk door de invoerparameters te wijzigen die u tijdens runtime in de pijplijn invoert.

U kunt de pijplijn configureren om verschillende workflows te implementeren, zoals de volgende:

  • Train een nieuw ML-model en sla het op in het SageMaker-modelregister, als er op dit moment geen implementatie nodig is
  • Implementeer een vooraf getraind ML-model, hetzij voor online (SageMaker-eindpunt) of offline (SageMaker batch-transformatie) gevolgtrekking
  • Voer een complete pijplijn uit om een ​​ML-model helemaal opnieuw te trainen, evalueren en implementeren

De oplossingen bestaan ​​uit een algemene staat machine (zie het volgende diagram) dat de reeks acties orkestreert die moeten worden uitgevoerd op basis van een reeks invoerparameters.

De stappen van de toestandsmachine zijn als volgt:

  1. De eerste stap IsTraining bepaalt of we een vooraf getraind model gebruiken of een model helemaal opnieuw trainen. Als u een vooraf getraind model gebruikt, gaat de statusmachine naar stap 7.
  2. Wanneer een nieuw ML-model nodig is, TrainSteps activeert een tweede toestandsmachine die alle noodzakelijke acties uitvoert en het resultaat terugstuurt naar de huidige toestandsmachine. In de volgende sectie gaan we dieper in op de trainingsstatusmachine.
  3. Als de opleiding is afgelopen, PassModelName slaat de naam van de trainingstaak op een opgegeven locatie van de statusmachinecontext op om opnieuw te worden gebruikt in de volgende statussen.
  4. Als een evaluatiefase wordt gekozen, IsEvaluation stuurt de statusmachine om naar de evaluatietak. Anders gaat het naar stap 7.
  5. De evaluatiefase wordt vervolgens uitgevoerd met behulp van een AWS Lambda functie aangeroepen door de ModelValidation stap. De Lambda-functie haalt modelprestaties op een testset op en vergelijkt deze met een door de gebruiker configureerbare drempel die is opgegeven in de invoerparameters. De volgende code is een voorbeeld van evaluatieresultaten:
    "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. Als de modelevaluatie op EvaluationResults succesvol is, gaat de statusmachine verder met eventuele implementatiestappen. Als het model presteert onder een door de gebruiker gedefinieerd criterium, stopt de statusmachine en wordt de implementatie overgeslagen.
  7. Als implementatie is geselecteerd, IsDeploy start een derde-toestandsmachine door DeploySteps, die we verderop in dit bericht beschrijven. Als implementatie niet nodig is, stopt de statusmachine hier.

Een set invoerparametervoorbeelden is beschikbaar op de GitHub repo.

Staatsmachine trainen

De statusmachine voor het trainen van een nieuw ML-model met AutoGluon bestaat uit twee stappen, zoals geïllustreerd in het volgende diagram. De eerste stap is een SageMaker-trainingstaak die het model maakt. De tweede slaat de vermeldingen op in het SageMaker-modelregister.

U kunt deze stappen automatisch uitvoeren als onderdeel van de hoofdstatusmachine of als een zelfstandig proces.

Implementatiestatusmachine

Laten we nu kijken naar de statusmachine die is toegewezen aan de implementatiefase (zie het volgende diagram). Zoals eerder vermeld, ondersteunt de architectuur zowel online als offline implementatie. De eerste bestaat uit het implementeren van een SageMaker-eindpunt, terwijl de laatste een SageMaker-batchtransformatietaak uitvoert.

De implementatiestappen zijn als volgt:

  1. ChoiceDeploymentMode kijkt naar de invoerparameters om te bepalen welke implementatiemodus nodig is en stuurt de statusmachine naar de overeenkomstige tak.
  2. Als een eindpunt is gekozen, wordt de EndpointConfig stap definieert de configuratie, terwijl CreateEndpoint start het proces van het toewijzen van de benodigde computerbronnen. Deze toewijzing kan enkele minuten duren, dus de statusmachine pauzeert bij WaitForEndpoint en gebruikt een Lambda-functie om de eindpuntstatus te pollen.
  3. Terwijl het eindpunt wordt geconfigureerd, ChoiceEndpointStatus keert terug naar de WaitForEndpoint staat, anders blijft het ofwel DeploymentFailed or DeploymentSucceeded.
  4. Als offline-implementatie is geselecteerd, voert de statusmachine een SageMaker-batchtransformatietaak uit, waarna de statusmachine stopt.

Conclusie

Dit bericht presenteert een gebruiksvriendelijke pijplijn om AutoML-workflows te orkestreren en snelle experimenten in de cloud mogelijk te maken, waardoor nauwkeurige ML-oplossingen mogelijk zijn zonder dat geavanceerde ML-kennis vereist is.

We bieden een algemene pijplijn en twee modulaire pijplijnen waarmee u training en implementatie indien nodig afzonderlijk kunt uitvoeren. Bovendien is de oplossing volledig geïntegreerd met SageMaker en profiteert het van zijn functies en rekenkracht.

Ga nu hiermee aan de slag code-tutorial om de bronnen die in dit bericht worden gepresenteerd in uw AWS-account te implementeren en uw eerste AutoML-experimenten uit te voeren.


Over de auteurs

Federico Piccinini is een Deep Learning Architect voor het Amazon Machine Learning Solutions Lab. Hij is gepassioneerd door machine learning, verklaarbare AI en MLOps. Hij richt zich op het ontwerpen van ML-pipelines voor AWS-klanten. Buiten zijn werk houdt hij van sporten en pizza.

Paolo Irrera is een datawetenschapper bij het Amazon Machine Learning Solutions Lab, waar hij klanten helpt bij het oplossen van zakelijke problemen met ML- en cloudmogelijkheden. Hij heeft een PhD in Computer Vision van Telecom ParisTech, Parijs.

spot_img

Laatste intelligentie

spot_img