Implementering af trænede maskinlæringsmodeller (ML) af høj kvalitet til at udføre enten batch- eller realtidsslutning er en vigtig del af at bringe værdi til kunderne. Imidlertid kan ML-eksperimenteringsprocessen være kedelig - der er mange tilgange, der kræver en betydelig mængde tid at implementere. Det er derfor, fortrænede ML-modeller som dem, der findes i PyTorch Model Zoo er så hjælpsomme. Amazon SageMaker giver en samlet grænseflade til at eksperimentere med forskellige ML-modeller, og PyTorch Model Zoo giver os mulighed for nemt at bytte vores modeller på en standardiseret måde.
Dette blogindlæg demonstrerer, hvordan man udfører ML-inferens ved hjælp af en objektdetektionsmodel fra PyTorch Model Zoo i SageMaker. Foruddannede ML-modeller fra PyTorch Model Zoo er færdiglavede og kan nemt bruges som en del af ML-applikationer. Opsætning af disse ML-modeller som et SageMaker-slutpunkt eller SageMaker Batch Transform job til online eller offline slutning er let med de trin, der er skitseret i dette blogindlæg. Vi vil bruge en Hurtigere R-CNN objektdetektionsmodel til at forudsige afgrænsningskasser for foruddefinerede objektklasser.
Vi gennemgår et ende-til-ende eksempel, fra indlæsning af Faster R-CNN-objektdetektionsmodelvægtene til at gemme dem til en Amazon Simple Storage Service (Amazon S3) bucket, og til at skrive en entrypoint-fil og forstå nøgleparametrene i PyTorchModel API. Til sidst vil vi implementere ML-modellen, udføre slutninger om den ved hjælp af SageMaker Batch Transform, og inspicere ML-modellens output og lære at fortolke resultaterne. Denne løsning kan anvendes på enhver anden fortrænet model i PyTorch Model Zoo. For en liste over tilgængelige modeller, se PyTorch Model Zoo dokumentation.
Løsningsoversigt
Dette blogindlæg vil gennemgå de følgende trin. For en fuld fungerende version af alle trin, se create_pytorch_model_sagemaker.ipynb
- Trin 1: Opsætning
- Trin 2: Indlæsning af en ML-model fra PyTorch Model Zoo
- Trin 3 Gem og upload ML-modelartefakter til Amazon S3
- Trin 4: Opbygning af ML model inferens scripts
- Trin 5: Lancering af et SageMaker batch-transformationsjob
- Trin 6: Visualisering af resultater
Arkitektur diagram
mappestruktur
Koden til denne blog kan findes i denne GitHub repository. Kodebasen indeholder alt, hvad vi behøver for at bygge ML-modelartefakter, starte transformationsjobbet og visualisere resultater.
Det er den arbejdsgang, vi bruger. Alle de følgende trin vil referere til moduler i denne struktur.
sagemaker_torch_model_zoo
mappe skal indeholde inference.py
som en entrypoint-fil, og create_pytorch_model_sagemaker.ipynb for at indlæse og gemme modelvægtene, oprette et SageMaker-modelobjekt og til sidst overføre det til et SageMaker batch-transformationsjob. For at medbringe dine egne ML-modeller skal du ændre stierne i trin 1: opsætningssektionen på notebooken og indlæse en ny model i trin 2: Indlæsning af en ML-model fra PyTorch Model Zoo sektionen. Resten af de følgende trin nedenfor forbliver de samme.
Trin 1: Opsætning
IAM roller
SageMaker udfører operationer på infrastruktur, der administreres af SageMaker. SageMaker kan kun udføre handlinger, der er tilladt som defineret i notebookens medfølgende IAM-udførelsesrolle for SageMaker. For en mere detaljeret dokumentation om oprettelse af IAM-roller og administration af IAM-tilladelser henvises til AWS SageMaker rolledokumentation. Vi kan skabe en ny rolle, eller vi kunne få den SageMaker (Studio) notesbogs standardudførelsesrolle ved at køre følgende kodelinjer:
Ovenstående kode får SageMaker-udførelsesrollen for notebook-forekomsten. Dette er IAM-rollen, som vi oprettede for vores SageMaker- eller SageMaker Studio-notebook-instans.
Brugerkonfigurerbare parametre
Her er alle de konfigurerbare parametre, der er nødvendige for at bygge og lancere vores SageMaker batch-transformationsjob:
Trin 2: Indlæsning af en ML-model fra PyTorch Model Zoo
Dernæst specificerer vi en objektdetektionsmodel fra PyTorch Model Zoo og gemmer dens ML-modelvægte. Typisk gemmer vi en PyTorch-model ved hjælp af filtypenavnene .pt eller .pth. Kodestykket nedenfor downloader en forudtrænet Faster R-CNN ResNet50 ML-model fra PyTorch Model Zoo:
model = torchvision.models.detection.fasterrcnn_resnet50_fpn(pretrained=True)
SageMaker batchtransformation kræver som input nogle modelvægte, så vi gemmer den fortrænede ML-model som model.pt. Hvis vi vil indlæse en brugerdefineret model, kan vi i stedet gemme modelvægtene fra en anden PyTorch-model som model.pt.
Trin 3: Gem og upload ML-modelartefakter til Amazon S3
Da vi skal bruge SageMaker til ML-inferens, skal vi uploade modelvægtene til en S3-spand. Vi kan gøre dette ved at bruge følgende kommandoer eller ved at downloade og blot trække og slippe filen direkte ind i S3. Følgende kommandoer vil først komprimere gruppen af filer indeni model.pt
til en tarball og kopier modelvægtene fra vores lokale maskine til S3-spanden.
Bemærk: For at køre følgende kommandoer skal du have AWS Command Line Interface (AWS CLI) installeret.
Dernæst kopierer vi vores inputbillede over til S3. Nedenfor er den fulde S3-sti til billedet.
Vi kan kopiere dette billede over til S3 med en anden aws s3 cp-kommando.
Trin 4: Opbygning af ML model inferens scripts
Nu vil vi gennemgå vores entrypoint-fil, inference.py
modul. Vi kan implementere en PyTorch-model, der er trænet uden for SageMaker, ved hjælp af PyTorchModel-klassen. Først instansierer vi PyTorchModelZoo-objektet. Derefter vil vi konstruere en inference.py entrypoint-fil til at udføre ML-inferens ved hjælp af SageMaker batch-transformation på eksempeldata hostet i Amazon S3.
Forståelse af PyTorchModel-objektet
PyTorchModel klasse i SageMaker Python API giver os mulighed for at udføre ML-inferens ved hjælp af vores downloadede modelartefakt.
For at starte PyTorchModel-klassen skal vi forstå følgende inputparametre:
name
: Modelnavn; vi anbefaler at bruge enten modelnavnet + dato klokkeslæt eller en tilfældig streng + dato klokkeslæt for unikhed.model_data
: S3 URI'en for den pakkede ML-modelartefakt.entry_point
: En brugerdefineret Python-fil, der skal bruges af inferens Docker-billedet til at definere handlere for indgående anmodninger. Koden definerer modelindlæsning, inputforbehandling, forudsigelseslogik og outputefterbehandling.framework_version
: Skal indstilles til version 1.2 eller nyere for at aktivere automatisk PyTorch-modelompakning.source_dir
: Biblioteket til entry_point-filen.role
: En IAM-rolle til at lave AWS-serviceanmodninger.image_uri
: Brug dette Amazon ECR Docker-containerbillede som en base for ML-modelberegningsmiljøet.sagemaker_session
: SageMaker-sessionen.py_version
: Python-versionen, der skal bruges
Følgende kodestykke instansierer PyTorchModel-klassen til at udføre inferens ved hjælp af den præ-trænede PyTorch-model:
Forstå entrypoint-filen (inference.py)
Entry_point-parameteren peger på en Python-fil med navnet inference.py
. Dette indgangspunkt definerer modelindlæsning, inputforbehandling, forudsigelseslogik og outputefterbehandling. Det supplerer ML-modellens serveringskode i den præbyggede PyTorch SageMaker Deep Learning Container billede.
Inference.py
vil indeholde følgende funktioner. I vores eksempel implementerer vi model_fn
, input_fn
, predict_fn
, output_fn
funktioner til at tilsidesætte standard PyTorch-inferenshåndtering.
model_fn
: Indtager en mappe, der indeholder statiske modelkontrolpunkter i inferensbilledet. Åbner og indlæser modellen fra en specificeret sti og returnerer en PyTorch-model.input_fn
: Indtager nyttelasten af den indkommende anmodning (request_body) og indholdstypen for en indgående anmodning (request_content_type) som input. Håndterer dataafkodning. Denne funktion skal justeres for, hvilket input modellen forventer.predict_fn
: Kalder en model på data deserialiseret i input_fn. Udfører forudsigelse på det deserialiserede objekt med den indlæste ML-model.output_fn
: Serialiserer forudsigelsesresultatet til den ønskede svarindholdstype. Konverterer forudsigelser opnået fra funktionen predict_fn til JSON-, CSV- eller NPY-formater.
Trin 5: Lancering af et SageMaker batch-transformationsjob
For dette eksempel vil vi opnå ML-slutningsresultater gennem et SageMaker batch-transformationsjob. Batch-transformationsjob er mest nyttige, når vi ønsker at opnå slutninger fra datasæt én gang uden behov for et vedvarende slutpunkt. Vi instansierer en sagemaker.transformer.Transformer objekt til at skabe og interagere med SageMaker batch-transformationsjob.
Se dokumentationen for oprettelse af et batchtransformationsjob på Opret TransformJob.
Trin 6: Visualisering af testresultater
Når SageMaker batchtransformationsjobbet er afsluttet, kan vi indlæse ML-inferensoutput fra Amazon S3. For dette skal du navigere til AWS Management Console og søg efter Amazon SageMaker. På venstre panel, under InferensSe Batch transformation job.
Efter at have valgt Batch transformation, se websiden med alle SageMaker batch transformationsjob. Vi kan se fremskridtene i vores seneste jobudførelse.
For det første vil jobbet have status "Igangværende". Når det er gjort, kan du se statusændringen til Fuldført.
Når status er markeret som afsluttet, kan vi klikke på jobbet for at se resultaterne. Denne webside indeholder joboversigten, inklusive konfigurationer af det job, vi lige har udført.
Under Konfiguration af outputdata, vil vi se en S3-outputsti. Det er her, vi finder vores ML-inferensoutput.
Vælg S3-outputstien og se en [image_name].[file_type].out-fil med vores outputdata. Vores outputfil vil indeholde en liste over kortlægninger. Eksempel output:
Dernæst behandler vi denne outputfil og visualiserer vores forudsigelser. Nedenfor angiver vi vores tillidsgrænse. Vi får listen over klasser fra COCO datasæt objekt mapping. Under inferens kræver modellen kun inputtensorerne og returnerer de efterbehandlede forudsigelser som en Liste[Dict[Tensor]], en for hvert inputbillede. Felterne i Dict er som følger, hvor N er antallet af detektioner:
- kasser (FloatTensor[N, 4]): de forudsagte kasser i
[x1, y1, x2, y2]
format med0 <= x1 < x2 <= W and 0 <= y1 < y2 <= H
HvorW
er bredden af billedet ogH
er billedets højde - etiketter (
Int64Tensor[N]
): de forudsagte mærker for hver detektion - scoringer (
Tensor[N]
): forudsigelsesscorerne for hver detektion
For flere detaljer om output, se PyTorch Faster R-CNN FPN-dokumentation.
Modeloutputtet indeholder afgrænsningsfelter med respektive konfidensscore. Vi kan optimere visningen af falske positiver ved at fjerne afgrænsningsfelter, som modellen ikke er sikker på. Følgende kodestykker behandler forudsigelserne i outputfilen og tegner afgrænsningsfelter på forudsigelserne, hvor scoren er over vores konfidensgrænse. Vi sætter sandsynlighedsgrænsen, CONF_THRESH
, til 75 for dette eksempel.
Til sidst visualiserer vi disse kortlægninger for at forstå vores output.
Bemærk: hvis billedet ikke vises i din notesbog, skal du finde det i mappetræet i venstre side af JupyterLab og åbne det derfra.
Kørsel af eksempelkoden
For et fuldt fungerende eksempel skal du klone koden i amazon-sagemaker-eksempler GitHub og kør cellerne i create_pytorch_model_sagemaker.ipynb
notesbog.
Konklusion
I dette blogindlæg viste vi et ende-til-ende eksempel på at udføre ML-inferens ved hjælp af en objektdetekteringsmodel fra PyTorch Model Zoo ved hjælp af SageMaker batch-transformation. Vi dækkede indlæsning af Faster R-CNN-objektdetektionsmodelvægtene, lagring af dem i en S3-bøtte, skrivning af en entrypoint-fil og forståelse af nøgleparametrene i PyTorchModel API. Til sidst implementerede vi modellen og udførte ML-modelinferens, visualiserede modeloutputtet og lærte at fortolke resultaterne.
Om forfatterne
Dipika Khullar er ML-ingeniør i Amazon ML Solutions Lab. Hun hjælper kunder med at integrere ML-løsninger for at løse deres forretningsproblemer. Senest har hun bygget trænings- og inferenspipelines til mediekunder og prædiktive modeller til markedsføring.
Marcelo Aberle er ML-ingeniør i AWS AI-organisationen. Han leder MLOps indsats på Amazon ML Solutions Lab, hjælper kunder med at designe og implementere skalerbare ML-systemer. Hans mission er at guide kunder på deres ML-rejse i virksomheden og fremskynde deres ML-vej til produktion.
Ninad Kulkarni er en anvendt videnskabsmand i Amazon ML Solutions Lab. Han hjælper kunder med at adoptere ML og AI ved at bygge løsninger til at løse deres forretningsproblemer. Senest har han bygget prædiktive modeller til sports-, bil- og mediekunder.
Yash Shah er Science Manager i Amazon ML Solutions Lab. Han og hans team af anvendte videnskabsmænd og ML-ingeniører arbejder på en række ML-brugssager fra sundhedspleje, sport, bilindustrien og fremstilling.
- AI
- ai kunst
- ai kunst generator
- en robot
- Amazon maskinindlæring
- Amazon ML Solutions Lab
- Amazon SageMaker
- kunstig intelligens
- certificering af kunstig intelligens
- kunstig intelligens i banksektoren
- kunstig intelligens robot
- kunstig intelligens robotter
- software til kunstig intelligens
- AWS maskinindlæring
- blockchain
- blockchain konference ai
- coingenius
- samtale kunstig intelligens
- kryptokonference ai
- dalls
- dyb læring
- du har google
- machine learning
- plato
- platon ai
- Platon Data Intelligence
- Platon spil
- PlatoData
- platogaming
- skala ai
- syntaks
- Teknisk vejledning
- zephyrnet