Den indbyggede Amazon SageMaker XGBoost-algoritmen giver en administreret container til at køre den populære XGBoost maskinlæringsramme (ML) med ekstra bekvemmelighed ved at understøtte avanceret træning eller inferensfunktioner som distribueret træning, datasætskæring til store datasæt, A/B model test eller multi-model slutning endepunkter. Du kan også udvide denne kraftfulde algoritme til at imødekomme forskellige krav.
At pakke koden og afhængighederne i en enkelt beholder er en praktisk og robust tilgang til langsigtet kodevedligeholdelse, reproducerbarhed og revisionsformål. Ændring af beholderen følger bundbeholderen direkte og undgår at duplikere eksisterende funktioner, der allerede understøttes af basisbeholderen. I dette indlæg gennemgår vi den indre funktion af SageMaker XGBoost-algoritmecontaineren og giver pragmatiske scripts til direkte at tilpasse containeren.
SageMaker XGBoost containerstruktur
SageMaker indbyggede XGBoost-algoritme er pakket som en selvstændig beholder, tilgængelig på GitHub, og kan udvides under den udviklervenlige Apache 2.0 open source-licens. Beholderen pakker open source XGBoost-algoritme og tilhørende værktøjer til at køre algoritmen i SageMaker-miljøet integreret med andre AWS Cloud-tjenester. Dette giver dig mulighed for at træne XGBoost-modeller på en række forskellige data kilder, gør batch forudsigelser på offline data, eller vært for en slutningsendepunkt i realtid pipeline.
Containeren understøtter trænings- og inferensoperationer med forskellige indgangspunkter. For inferenstilstand kan posten findes i hovedfunktionen i servering.py script. Til realtidsslutningsvisning kører containeren en Flask-baseret Webserver det når påberåbes, modtager en HTTP-kodet anmodning, der indeholder dataene, afkoder dataene til XGBoost'en DMatrix format, indlæser modellen, og returnerer en HTTP-kodet svar tilbage. Disse metoder er indkapslet under ScoringService klasse, som også i høj grad kan tilpasses gennem script-tilstanden (se appendiks nedenfor).
Indgangspunktet for træningstilstand (algoritmetilstand) er hovedfunktionen i training.py. Hovedfunktionen sætter træningsmiljøet op og kalder træningsjobfunktionen. Det er fleksibelt nok til at give mulighed for distribueret eller single-node træning eller hjælpeprogrammer som krydsvalidering. Hjertet i træningsprocessen kan findes i tog_job funktion.
Docker-filer, der pakker containeren, kan findes i GitHub repo. Bemærk, at beholderen er bygget i to trin: a bund container bygges først, efterfulgt af endelige beholder på toppen.
Løsningsoversigt
Du kan ændre og genopbygge containeren gennem kildekoden. Dette involverer dog indsamling og genopbygning af alle afhængigheder og pakker fra bunden. I dette indlæg diskuterer vi en mere ligetil tilgang, der ændrer containeren oven på det allerede byggede og offentligt tilgængelige SageMaker XGBoost-algoritme containerbillede direkte.
I denne tilgang har vi Træk en kopi af det offentlige SageMaker XGBoost-billede, modificer scripts eller tilføj pakker, og genopbyg beholderen ovenpå. Den ændrede beholder kan opbevares i et privat depot. På denne måde undgår vi at genopbygge mellemliggende afhængigheder og bygger i stedet direkte oven på de allerede byggede biblioteker pakket i den officielle container.
Følgende figur viser en oversigt over det script, der bruges til at trække det offentlige basisbillede, ændre og genopbygge billedet og uploade det til en privat Amazon Elastic Container Registry (Amazon ECR) repository. Det bash script i den medfølgende kode i dette indlæg udfører alle de workflow-trin, der er vist i diagrammet. Den medfølgende notesbog viser et eksempel, hvor URI'en for en specifik version af SageMaker XGBoost-algoritmen først hentes og videregives til bash script, som erstatter to af Python-scripts i billedet, genopbygger det og skubber det ændrede billede til et privat Amazon ECR-lager. Du kan ændre den medfølgende kode, så den passer til dine behov.
Forudsætninger
GitHub repository indeholder koden, der følger med dette indlæg. Du kan køre eksempel notesbog på din AWS-konto, eller brug den medfølgende AWS CloudFormation stak for at implementere notesbogen ved hjælp af en SageMaker notesbog. Du har brug for følgende forudsætninger:
- En AWS-konto.
- Nødvendige tilladelser til at køre SageMaker batch-transformations- og træningsjob og Amazon ECR-privilegier. CloudFormation-skabelonen opretter et eksempel AWS identitets- og adgangsstyring (IAM) roller.
Implementer løsningen
For at oprette dine løsningsressourcer ved hjælp af AWS CloudFormation skal du vælge Start Stack:
Stakken implementerer en SageMaker notesbog, der er forudkonfigureret til at klone GitHub-lageret. Gennemgangen notesbog inkluderer trinene til at trække det offentlige SageMaker XGBoost-billede for en given version, ændre det og skubbe den tilpassede container til et privat Amazon ECR-lager. Notesbogen bruger offentligheden Abalone-datasæt som et eksempel, træner en model ved hjælp af SageMaker XGBoost indbyggede træningstilstand og genbruger denne model i det brugerdefinerede billede til at udføre batch-transformationsjob, der producerer inferens sammen med SHAP-værdier.
Konklusion
SageMaker indbyggede algoritmer giver en række funktioner og funktionaliteter og kan udvides yderligere under Apache 2.0 open source-licensen. I dette indlæg gennemgik vi, hvordan man udvider den indbyggede produktionsbeholder til SageMaker XGBoost-algoritmen for at opfylde produktionskrav som bagudkode og API-kompatibilitet.
Eksemplet på notesbogen og hjælperen scripts give et praktisk udgangspunkt for at tilpasse SageMaker XGBoost containerbillede, som du gerne vil have det. Giv det en chance!
Appendiks: Script-tilstand
Script-tilstand giver en måde at ændre mange SageMaker indbyggede algoritmer ved at levere en grænseflade til at erstatte de funktioner, der er ansvarlige for at transformere input og indlæse modellen. Script-tilstand er ikke så fleksibel som at ændre containeren direkte, men den giver en fuldstændig Python-baseret rute til at tilpasse den indbyggede algoritme uden behov for at arbejde direkte med Docker.
I script-tilstand, en user-module
leveres til at tilpasse dataafkodning, indlæsning af modellen og lave forudsigelser. Brugermodulet kan definere en transformer_fn
der håndterer alle aspekter af behandlingen af anmodningen til forberedelse af svaret. Eller i stedet for at definere transformer_fn
, kan du give brugerdefinerede metoder model_fn
, input_fn
, predict_fn
og output_fn
individuelt for at tilpasse indlæsning af modellen og afkodning og forberede input til forudsigelse. For et mere grundigt overblik over script-tilstand, se Medbring din egen model med SageMaker Script Mode.
Om forfatterne
Peyman Razaghi er Data Scientist hos AWS. Han har en ph.d. i informationsteori fra University of Toronto og var en post-doc forsker ved University of Southern California (USC), Los Angeles. Før han kom til AWS, var Peyman systemingeniør hos Qualcomm, der bidrog til en række bemærkelsesværdige internationale telekommunikationsstandarder. Han har forfattet adskillige videnskabelige forskningsartikler, der er peer-reviewed inden for statistik og systemteknik, og han nyder forældreskab og landevejscykling udenfor arbejdet.
- "
- 100
- adgang
- imødekomme
- Konto
- fremskreden
- algoritme
- algoritmer
- Alle
- allerede
- Amazon
- api
- tilgang
- OMRÅDE
- artikler
- AWS
- bygge
- indbygget
- california
- Vælg
- klasse
- Cloud
- cloud-tjenester
- kode
- Indsamling
- fuldstændig
- Container
- indeholder
- bekvemmelighed
- Praktisk
- skaber
- skik
- data
- dataforsker
- indsætte
- udruller
- forskellige
- direkte
- diskutere
- distribueret
- Docker
- ingeniør
- Miljø
- eksempel
- udvide
- Funktionalitet
- Figur
- Fornavn
- fleksibel
- efter
- format
- fundet
- Framework
- funktion
- yderligere
- GitHub
- stor
- besidder
- Hvordan
- How To
- HTTPS
- Identity
- billede
- oplysninger
- indgang
- integreret
- grænseflade
- internationalt
- IT
- Job
- Karriere
- læring
- Licens
- langsigtet
- Los Angeles
- maskine
- machine learning
- maerker
- Making
- lykkedes
- ML
- model
- modeller
- mere
- notesbog
- nummer
- officiel
- offline
- Produktion
- Andet
- egen
- Punkt
- Populær
- vigtigste
- forudsigelse
- Forudsigelser
- private
- behandle
- producere
- produktion
- give
- giver
- leverer
- offentlige
- formål
- realtid
- Repository
- anmode
- Krav
- forskning
- Ressourcer
- svar
- ansvarlige
- afkast
- gennemgå
- R
- Kør
- Videnskabsmand
- Tjenester
- servering
- sharding
- Software
- løsninger
- kildekode
- Syd
- stable
- standarder
- statistik
- Understøttet
- Støtte
- Understøtter
- Systemer
- The Source
- Gennem
- sammen
- værktøjer
- top
- toronto
- Kurser
- tog
- Transform
- omdanne
- universitet
- brug
- række
- Wikipedia
- Arbejde
- ville