Den innebygde Amazon SageMaker XGBoost-algoritmen gir en administrert beholder for å kjøre den populære Xgboost rammeverk for maskinlæring (ML), med ekstra bekvemmelighet for å støtte avansert opplæring eller slutningsfunksjoner som distribuert opplæring, datasettdeling for store datasett, A/B modelltestingeller multi-modell slutning endepunkter. Du kan også utvide denne kraftige algoritmen for å imøtekomme ulike krav.
Å pakke koden og avhengighetene i en enkelt beholder er en praktisk og robust tilnærming for langsiktig kodevedlikehold, reproduserbarhet og revisjonsformål. Modifisering av beholderen følger bunnbeholderen direkte og unngår duplisering av eksisterende funksjoner som allerede støttes av basisbeholderen. I dette innlegget gjennomgår vi den indre funksjonen til SageMaker XGBoost-algoritmebeholderen og gir pragmatiske skript for å tilpasse beholderen direkte.
SageMaker XGBoost beholderstruktur
SageMaker innebygde XGBoost-algoritme er pakket som en frittstående beholder, tilgjengelig på GitHub, og kan utvides under den utviklervennlige Apache 2.0 åpen kildekode-lisens. Beholderen pakker åpen kildekode XGBoost-algoritme og tilleggsverktøy for å kjøre algoritmen i SageMaker-miljøet integrert med andre AWS Cloud-tjenester. Dette lar deg trene XGBoost-modeller på en rekke datakilder, gjøre batch spådommer på offline data, eller vert for en sluttpunkt i sanntid rørledning.
Containeren støtter opplæring og slutningsoperasjoner med forskjellige inngangspunkter. For inferensmodus kan oppføringen finnes i hovedfunksjonen i servering.py-skript. For sanntidsslutningsvisning kjører beholderen en Kolbe-Basert webserveren det når påkalt, mottar en HTTP-kodet forespørsel som inneholder dataene, dekoder dataene til XGBoosts DMatrix format, laster modellen, og returnerer en HTTP-kodet svar tilbake. Disse metodene er innkapslet under ScoringService klasse, som også kan tilpasses gjennom skriptmodusen i stor grad (se vedlegget nedenfor).
Inngangspunktet for treningsmodus (algoritmemodus) er hovedfunksjonen i training.py. Hovedfunksjonen setter opp treningsmiljøet og kaller treningsjobbfunksjonen. Den er fleksibel nok til å tillate distribuert trening eller opplæring med én node, eller verktøy som kryssvalidering. Hjertet av treningsprosessen finner du i train_job funksjon.
Docker-filer som pakker beholderen kan bli funnet i GitHub repo. Merk at beholderen er bygget i to trinn: a basen container bygges først, etterfulgt av slutt~~POS=TRUNC beholder på toppen.
Løsningsoversikt
Du kan endre og gjenoppbygge beholderen gjennom kildekoden. Dette innebærer imidlertid å samle inn og gjenoppbygge alle avhengigheter og pakker fra bunnen av. I dette innlegget diskuterer vi en mer enkel tilnærming som modifiserer beholderen på toppen av det allerede bygde og offentlig tilgjengelige SageMaker XGBoost-algoritmebeholderbildet direkte.
I denne tilnærmingen har vi trekke en kopi av det offentlige SageMaker XGBoost-bildet, modifiser skriptene eller legg til pakker, og gjenoppbygg beholderen på toppen. Den modifiserte beholderen kan lagres i et privat depot. På denne måten unngår vi å gjenoppbygge mellomliggende avhengigheter og bygger i stedet direkte på toppen av de allerede bygde bibliotekene pakket i den offisielle beholderen.
Følgende figur viser en oversikt over skriptet som brukes til å trekke det offentlige basisbildet, endre og gjenoppbygge bildet og laste det opp til en privat Amazon Elastic Container Registry (Amazon ECR) depot. De bash-skript i den medfølgende koden til dette innlegget utfører alle arbeidsflyttrinnene vist i diagrammet. Den medfølgende bærbare viser et eksempel hvor URI-en til en spesifikk versjon av SageMaker XGBoost-algoritmen først hentes og sendes til bash-skript, som erstatter to av Python-skriptene i bildet, bygger det på nytt og skyver det modifiserte bildet til et privat Amazon ECR-lager. Du kan endre den medfølgende koden for å passe dine behov.
Forutsetninger
De GitHub repository inneholder koden som følger med dette innlegget. Du kan kjøre prøve notatbok i AWS-kontoen din, eller bruk den oppgitte AWS skyformasjon stable for å distribuere notatboken ved hjelp av en SageMaker-notatbok. Du trenger følgende forutsetninger:
- En AWS-konto.
- Nødvendige tillatelser for å kjøre SageMaker batch-transformasjons- og opplæringsjobber, og Amazon ECR-privilegier. CloudFormation-malen lager eksempel AWS identitets- og tilgangsadministrasjon (IAM) roller.
Distribuere løsningen
For å opprette løsningsressursene dine ved hjelp av AWS CloudFormation, velg Start Stack:
Stabelen distribuerer en SageMaker-notatbok som er forhåndskonfigurert til å klone GitHub-depotet. Gjennomgangen bærbare inkluderer trinnene for å trekke det offentlige SageMaker XGBoost-bildet for en gitt versjon, endre det og skyve den tilpassede beholderen til et privat Amazon ECR-lager. Notatboken bruker publikum Abalone datasett som et eksempel, trener en modell ved hjelp av SageMaker XGBoost innebygd treningsmodus, og gjenbruker denne modellen i det tilpassede bildet for å utføre batch-transformeringsjobber som produserer slutninger sammen med SHAP-verdier.
konklusjonen
SageMaker innebygde algoritmer gir en rekke funksjoner og funksjoner, og kan utvides ytterligere under Apache 2.0 åpen kildekode-lisens. I dette innlegget gjennomgikk vi hvordan vi utvider den innebygde produksjonsbeholderen for SageMaker XGBoost-algoritmen for å møte produksjonskrav som bakoverkode og API-kompatibilitet.
Eksempel på notatbok og hjelper skript gi et praktisk utgangspunkt for å tilpasse SageMaker XGBoost-beholderbildet slik du vil ha det. Gi det et forsøk!
Vedlegg: Skriptmodus
Skriptmodus gir en måte å modifisere mange SageMaker innebygde algoritmer ved å tilby et grensesnitt for å erstatte funksjonene som er ansvarlige for å transformere inngangene og laste inn modellen. Skriptmodus er ikke så fleksibel som å direkte modifisere beholderen, men den gir en fullstendig Python-basert rute for å tilpasse den innebygde algoritmen uten å måtte jobbe direkte med Docker.
I skriptmodus, en user-module
er gitt for å tilpasse datadekoding, lasting av modellen og lage spådommer. Brukermodulen kan definere en transformer_fn
som håndterer alle aspekter ved behandling av forespørselen til å forberede svaret. Eller i stedet for å definere transformer_fn
, kan du tilby tilpassede metoder model_fn
, input_fn
, predict_fn
og output_fn
individuelt for å tilpasse lasting av modellen og dekoding og klargjøring av input for prediksjon. For en mer grundig oversikt over skriptmodus, se Ta med din egen modell med SageMaker Script Mode.
Om forfatterne
Peyman Razaghi er dataforsker ved AWS. Han har en doktorgrad i informasjonsteori fra University of Toronto og var en post-doktor forsker ved University of Southern California (USC), Los Angeles. Før han begynte i AWS, var Peyman en stabsingeniør hos Qualcomm og bidro til en rekke bemerkelsesverdige internasjonale telekommunikasjonsstandarder. Han har skrevet flere vitenskapelige forskningsartikler fagfellevurderte innen statistikk og systemteknikk, og liker foreldreskap og landeveissykling utenfor jobb.
- "
- 100
- adgang
- imøtekomme
- Logg inn
- avansert
- algoritme
- algoritmer
- Alle
- allerede
- Amazon
- api
- tilnærming
- AREA
- artikler
- AWS
- bygge
- innebygd
- california
- Velg
- klasse
- Cloud
- skytjenester
- kode
- Samle
- helt
- Container
- inneholder
- bekvemmelighet
- Praktisk
- skaper
- skikk
- dato
- dataforsker
- utplassere
- Distribueres
- forskjellig
- direkte
- diskutere
- distribueres
- Docker
- ingeniør
- Miljø
- eksempel
- utvide
- Egenskaper
- Figur
- Først
- fleksibel
- etter
- format
- funnet
- Rammeverk
- funksjon
- videre
- GitHub
- flott
- holder
- Hvordan
- Hvordan
- HTTPS
- Identitet
- bilde
- informasjon
- inngang
- integrert
- Interface
- internasjonalt
- IT
- Jobb
- Jobb
- læring
- Tillatelse
- langsiktig
- Los Angeles
- maskin
- maskinlæring
- GJØR AT
- Making
- fikk til
- ML
- modell
- modeller
- mer
- bærbare
- Antall
- offisiell
- offline
- Drift
- Annen
- egen
- Point
- Populær
- kraftig
- prediksjon
- Spådommer
- privat
- prosess
- produsere
- Produksjon
- gi
- gir
- gi
- offentlig
- formål
- sanntids
- Repository
- anmode
- Krav
- forskning
- Ressurser
- svar
- ansvarlig
- avkastning
- anmeldelse
- Rute
- Kjør
- Forsker
- Tjenester
- servering
- skjæring
- Software
- løsning
- kildekoden
- Southern
- stable
- standarder
- statistikk
- Støttes
- Støtte
- Støtter
- Systemer
- Kilden
- Gjennom
- sammen
- verktøy
- topp
- toronto
- Kurs
- Togene
- Transform
- transformere
- universitet
- bruke
- variasjon
- Wikipedia
- Arbeid
- ville