Amazon SageMaker Autopilot gør det muligt for organisationer hurtigt at bygge og implementere en end-to-end machine learning (ML) model og inferens pipeline med blot nogle få linjer kode eller endda uden nogen kode overhovedet med Amazon SageMaker Studio. Autopilot aflaster det tunge løft af konfiguration af infrastruktur og den tid, det tager at bygge en hel pipeline, inklusive funktionsteknik, modelvalg og hyperparameterjustering.
I dette indlæg viser vi, hvordan man går fra rådata til en robust og fuldt implementeret inferenspipeline med Autopilot.
Løsningsoversigt
Vi anvender Lyfts offentlige datasæt om cykeldeling for denne simulering at forudsige, om en bruger deltager i Bike Share for All-program. Dette er et simpelt binært klassifikationsproblem.
Vi ønsker at vise, hvor nemt det er at bygge en automatiseret og realtids-inferenspipeline for at klassificere brugere baseret på deres deltagelse i Bike Share for All-programmet. Til dette formål simulerer vi en end-to-end dataindtagelse og inferenspipeline for et imaginært bikeshare-selskab, der opererer i San Francisco Bay Area.
Arkitekturen er opdelt i to dele: indtagelsespipeline og inferenspipeline.
Vi fokuserer primært på ML-pipelinen i første afsnit af dette indlæg, og gennemgår dataindtagelsespipelinen i anden del.
Forudsætninger
For at følge dette eksempel skal du udfylde følgende forudsætninger:
- Opret en ny SageMaker notebook-instans.
- Opret en Amazon Kinesis Data Firehose leveringsstrøm med en AWS Lambda transformationsfunktion. For instruktioner, se Amazon Kinesis Firehose Data Transformation med AWS Lambda. Dette trin er valgfrit og kun nødvendigt for at simulere datastreaming.
Data efterforskning
Lad os downloade og visualisere datasættet, som er placeret i en offentlig Amazon Simple Storage Service (Amazon S3) spand og statisk websted:
Følgende skærmbillede viser en delmængde af dataene før transformation.
Den sidste kolonne af dataene indeholder det mål, vi ønsker at forudsige, som er en binær variabel, der tager enten en Ja- eller Nej-værdi, der angiver, om brugeren deltager i Bike Share for All-programmet.
Lad os tage et kig på fordelingen af vores målvariabel for enhver dataubalance.
Som vist i grafen ovenfor, er dataene ubalancerede, idet færre personer deltager i programmet.
Vi er nødt til at balancere dataene for at forhindre en overrepræsentationsbias. Dette trin er valgfrit, fordi Autopilot også tilbyder en intern tilgang til automatisk at håndtere klasseubalance, som som standard er en F1-scorevalideringsmetrik. Vælger du derudover selv at balancere dataene, kan du bruge mere avancerede teknikker til at håndtere klasseubalance, som f.eks. SMOTE or GAN.
Til dette indlæg nedsampler vi majoritetsklassen (Nej) som en databalanceringsteknik:
Følgende kode beriger dataene og undersampler den overrepræsenterede klasse:
Vi efterlod bevidst vores kategoriske funktioner ikke kodet, inklusive vores binære målværdi. Dette skyldes, at Autopilot sørger for at indkode og afkode dataene for os som en del af den automatiske funktionsudvikling og pipeline-implementering, som vi ser i næste afsnit.
Følgende skærmbillede viser et eksempel på vores data.
Dataene i de følgende grafer ser ellers normale ud, med en bimodal fordeling, der repræsenterer de to toppe for morgentimerne og eftermiddagsmyldretiderne, som du ville forvente. Vi observerer også lave aktiviteter i weekender og om natten.
I næste afsnit feeder vi dataene til Autopilot, så den kan køre et eksperiment for os.
Byg en binær klassifikationsmodel
Autopilot kræver, at vi specificerer input- og outputdestinationsbøtter. Den bruger input-bøtten til at indlæse dataene og output-bøtten til at gemme artefakterne, såsom feature engineering og de genererede Jupyter-notebooks. Vi beholder 5 % af datasættet for at evaluere og validere modellens ydeevne, efter at træningen er afsluttet, og uploader 95 % af datasættet til S3 input-bøtten. Se følgende kode:
Når vi har uploadet dataene til inputdestinationen, er det tid til at starte Autopilot:
Det eneste, vi behøver for at begynde at eksperimentere, er at kalde fit()-metoden. Autopiloten har brug for input og output S3-placeringen og målattributkolonnen som de nødvendige parametre. Efter funktionsbehandling ringer Autopilot SageMaker automatisk model tuning at finde den bedste version af en model ved at køre mange træningsjob på dit datasæt. Vi tilføjede den valgfrie max_candidates parameter for at begrænse antallet af kandidater til 30, hvilket er antallet af træningsjob, som Autopilot lancerer med forskellige kombinationer af algoritmer og hyperparametre for at finde den bedste model. Hvis du ikke angiver denne parameter, er den som standard 250.
Vi kan observere autopilotens fremskridt med følgende kode:
Uddannelsen tager noget tid at gennemføre. Mens den kører, lad os se på autopilotens arbejdsgang.
For at finde den bedste kandidat, brug følgende kode:
Følgende skærmbillede viser vores output.
Vores model opnåede en valideringsnøjagtighed på 96 %, så vi vil implementere den. Vi kunne tilføje en betingelse, således at vi kun bruger modellen, hvis nøjagtigheden er over et vist niveau.
Inferens pipeline
Før vi implementerer vores model, lad os undersøge vores bedste kandidat, og hvad der sker i vores pipeline. Se følgende kode:
Følgende diagram viser vores output.
Autopilot har bygget modellen og har pakket den i tre forskellige beholdere, der hver sekventielt kører en bestemt opgave: transformere, forudsige og omvendt transformere. Denne multi-trin inferens er mulig med en SageMaker inferens pipeline.
En multi-trin inferens kan også kæde flere inferensmodeller. For eksempel kan en container udføre hovedkomponentanalyse før du sender dataene til XGBoost-beholderen.
Implementer slutningspipelinen til et slutpunkt
Implementeringsprocessen involverer kun et par linjer kode:
Lad os konfigurere vores endepunkt til forudsigelse med en forudsigelse:
Nu hvor vi har vores endepunkt og prædiktor klar, er det tid til at bruge de testdata, vi sætter til side, og teste nøjagtigheden af vores model. Vi starter med at definere en hjælpefunktion, der sender dataene en linje ad gangen til vores inferensendepunkt og får en forudsigelse til gengæld. Fordi vi har en XGBoost model, dropper vi målvariablen, før vi sender CSV-linjen til slutpunktet. Derudover fjernede vi headeren fra test-CSV'en, før vi gik gennem filen, hvilket også er et andet krav til XGBoost på SageMaker. Se følgende kode:
Følgende skærmbillede viser vores output.
Lad os nu beregne nøjagtigheden af vores model.
Se følgende kode:
Vi får en nøjagtighed på 92%. Dette er lidt lavere end de 96 %, der blev opnået under valideringstrinnet, men det er stadig højt nok. Vi forventer ikke, at nøjagtigheden er helt den samme, fordi testen udføres med et nyt datasæt.
Dataindtagelse
Vi downloadede dataene direkte og konfigurerede dem til træning. I det virkelige liv skal du muligvis sende dataene direkte fra edge-enheden ind i datasøen og få SageMaker til at indlæse dem direkte fra datasøen ind i notesbogen.
Kinesis Data Firehose er en god mulighed og den mest ligetil måde at pålideligt indlæse streamingdata i datasøer, datalagre og analyseværktøjer. Det kan fange, transformere og indlæse streamingdata til Amazon S3 og andre AWS-datalagre.
Til vores brug opretter vi en Kinesis Data Firehose-leveringsstrøm med en Lambda-transformationsfunktion for at udføre en let datarensning, når den krydser strømmen. Se følgende kode:
Denne Lambda-funktion udfører lystransformation af de data, der streames fra enhederne til datasøen. Den forventer en CSV-formateret datafil.
Til indtagelsestrinnet downloader vi dataene og simulerer en datastrøm til Kinesis Data Firehose med en Lambda-transformationsfunktion og ind i vores S3-datasø.
Lad os simulere streaming af et par linjer:
Ryd op
Det er vigtigt at slette alle de ressourcer, der bruges i denne øvelse for at minimere omkostningerne. Følgende kode sletter det SageMaker-slutpunkt, vi oprettede, samt de trænings- og testdata, vi uploadede:
Konklusion
ML-ingeniører, dataforskere og softwareudviklere kan bruge Autopilot til at bygge og implementere en inferenspipeline med lidt eller ingen erfaring med ML-programmering. Autopilot sparer tid og ressourcer ved at bruge datavidenskab og bedste praksis for ML. Store organisationer kan nu flytte ingeniørressourcer væk fra infrastrukturkonfiguration til at forbedre modeller og løse business use cases. Startups og mindre organisationer kan komme i gang med maskinlæring med ringe eller ingen ML-ekspertise.
For at komme i gang med SageMaker Autopilot, se Produkt side eller få adgang til SageMaker Autopilot i SageMaker Studio.
Vi anbefaler også at lære mere om andre vigtige funktioner SageMaker har at tilbyde, såsom Amazon SageMaker Feature Store, som integreres med Amazon SageMaker Pipelines at oprette, tilføje funktionssøgning og -opdagelse og genbruge automatiserede ML-arbejdsgange. Du kan køre flere autopilot-simuleringer med forskellige funktions- eller målvarianter i dit datasæt. Du kan også gribe dette an som et dynamisk køretøjsallokeringsproblem, hvor din model forsøger at forudsige køretøjsefterspørgsel baseret på tid (såsom tidspunkt på dagen eller ugedag) eller placering eller en kombination af begge.
Om forfatterne
Doug Mbaya er senior løsningsarkitekt med fokus på data og analyse. Doug arbejder tæt sammen med AWS-partnere og hjælper dem med at integrere data- og analyseløsninger i skyen. Dougs tidligere erfaring omfatter support af AWS-kunder inden for kørselsdeling og levering af mad.
Valerio Perrone er en Applied Science Manager, der arbejder på Amazon SageMaker Automatic Model Tuning og Autopilot.
- Coinsmart. Europas bedste Bitcoin og Crypto Exchange.
- Platoblokkæde. Web3 Metaverse Intelligence. Viden forstærket. FRI ADGANG.
- CryptoHawk. Altcoin radar. Gratis prøveversion.
- Kilde: https://aws.amazon.com/blogs/machine-learning/automate-a-shared-bikes-and-scooters-classification-model-with-amazon-sagemaker-autopilot/
- '
- "
- &
- 100
- Om
- adgang
- opnået
- aktiviteter
- fremskreden
- algoritmer
- Alle
- allokering
- Amazon
- analytics
- En anden
- api
- tilgang
- arkitektur
- OMRÅDE
- argumenter
- Automatiseret
- AWS
- Bugt
- BEDSTE
- bedste praksis
- bygge
- virksomhed
- ringe
- Kan få
- hvilken
- tilfælde
- lave om
- valg
- klassificering
- Rengøring
- Cloud
- kode
- Kolonne
- kombination
- kombinationer
- selskab
- komponent
- betingelse
- Konfiguration
- Container
- Beholdere
- indeholder
- kunne
- Kunder
- data
- databehandling
- datalogi
- dag
- levering
- Efterspørgsel
- indsætte
- implementering
- udviklere
- enhed
- Enheder
- forskellige
- opdagelse
- Skærm
- fordeling
- ned
- Drop
- dynamisk
- Edge
- kryptering
- Endpoint
- Engineering
- Ingeniører
- begivenhed
- eksempel
- Undtagen
- Dyrke motion
- forventer
- erfaring
- eksperiment
- ekspertise
- Feature
- Funktionalitet
- Fornavn
- Fokus
- følger
- efter
- mad
- Francisco
- funktion
- få
- gå
- godt
- Håndtering
- link.
- Høj
- Hvordan
- How To
- HTTPS
- vigtigt
- Herunder
- Infrastruktur
- integrere
- IT
- Job
- Karriere
- stor
- lanceringer
- læring
- Niveau
- Bibliotek
- lys
- letvægt
- Line (linje)
- lidt
- belastning
- lokalt
- placering
- maskine
- machine learning
- Flertal
- Making
- leder
- ML
- model
- modeller
- mest
- notesbog
- tilbyde
- Tilbud
- drift
- Option
- ordrer
- organisationer
- Andet
- Ellers
- deltagelse
- partnere
- Mennesker
- ydeevne
- mulig
- forudsigelse
- Problem
- behandle
- Program
- Programmering
- give
- offentlige
- hurtigt
- Raw
- realtid
- anbefaler
- optage
- optegnelser
- påkrævet
- Ressourcer
- afkast
- gennemgå
- regler
- Kør
- kører
- haste
- San
- San Francisco
- besparelse
- Videnskab
- forskere
- Søg
- valgt
- Series
- sæt
- Del
- delt
- skifte
- Simpelt
- simulation
- Størrelse
- søvn
- So
- Software
- delt
- starte
- påbegyndt
- Nystartede
- opbevaring
- forhandler
- strøm
- streamet
- streaming
- Studio
- mål
- teknikker
- prøve
- Test
- Gennem
- tid
- i dag
- værktøjer
- Kurser
- Transform
- Transformation
- us
- brug
- brugere
- nytte
- værdi
- køretøj
- Hjemmeside
- uge
- hvorvidt
- Wikipedia
- inden for
- arbejder
- virker