Uvajanje visokokakovostnih, usposobljenih modelov strojnega učenja (ML) za izvajanje paketnega ali sprotnega sklepanja je ključnega pomena za zagotavljanje vrednosti strankam. Vendar pa je postopek eksperimentiranja z ML lahko dolgočasen – obstaja veliko pristopov, ki zahtevajo veliko časa za izvedbo. Zato vnaprej usposobljeni modeli ML, kot so tisti, ki so na voljo v PyTorch Model Zoo so tako koristne. Amazon SageMaker zagotavlja poenoten vmesnik za eksperimentiranje z različnimi modeli ML, PyTorch Model Zoo pa nam omogoča preprosto zamenjavo naših modelov na standardiziran način.
Ta objava v spletnem dnevniku prikazuje, kako izvajati sklepanje ML z uporabo modela zaznavanja objektov iz PyTorch Model Zoo znotraj SageMakerja. Vnaprej usposobljeni modeli ML iz PyTorch Model Zoo so že pripravljeni in jih je mogoče preprosto uporabiti kot del aplikacij ML. Nastavitev teh modelov ML kot končne točke SageMaker oz Paketno preoblikovanje SageMaker delo za spletno ali nespletno sklepanje je enostavno s koraki, opisanimi v tej objavi v spletnem dnevniku. Uporabili bomo a Hitrejši R-CNN model zaznavanja objektov za predvidevanje mejnih okvirjev za vnaprej določene razrede objektov.
Sprehodimo se skozi primer od konca do konca, od nalaganja uteži modela za zaznavanje objektov Faster R-CNN do njihovega shranjevanja v Preprosta storitev shranjevanja Amazon (Amazon S3) vedro ter za pisanje datoteke vstopne točke in razumevanje ključnih parametrov v API-ju PyTorchModel. Nazadnje bomo uvedli model ML, izvedli sklepanje o njem z uporabo SageMaker Batch Transform ter pregledali izhod modela ML in se naučili interpretirati rezultate. To rešitev je mogoče uporabiti za kateri koli drug vnaprej usposobljen model v PyTorch Model Zoo. Za seznam razpoložljivih modelov glejte Dokumentacija PyTorch Model Zoo.
Pregled rešitev
Ta objava v spletnem dnevniku bo vodila skozi naslednje korake. Za celotno delovno različico vseh korakov glejte create_pytorch_model_sagemaker.ipynb
- 1. korak: Nastavitev
- 2. korak: Nalaganje modela ML iz PyTorch Model Zoo
- 3. korak Shranite in naložite artefakte modela ML v Amazon S3
- 4. korak: Izdelava skriptov za sklepanje modela ML
- 5. korak: Zagon opravila paketnega preoblikovanja SageMaker
- 6. korak: Vizualizacija rezultatov
Diagram arhitekture
Struktura imenika
Kodo za ta blog lahko najdete tukaj GitHub repozitorij. Baza kode vsebuje vse, kar potrebujemo za izdelavo artefaktov modela ML, zagon transformacijskega opravila in vizualizacijo rezultatov.
To je potek dela, ki ga uporabljamo. Vsi naslednji koraki se nanašajo na module v tej strukturi.
O sagemaker_torch_model_zoo
mapa mora vsebovati inference.py
kot datoteko vstopne točke in create_pytorch_model_sagemaker.ipynb za nalaganje in shranjevanje uteži modela, ustvarjanje objekta modela SageMaker in na koncu to posredovanje v opravilo paketnega preoblikovanja SageMaker. Če želite prenesti svoje lastne modele ML, spremenite poti v razdelku Korak 1: nastavitev v prenosnem računalniku in naložite nov model v razdelku Korak 2: Nalaganje modela ML iz razdelka PyTorch Model Zoo. Ostali naslednji koraki spodaj bi ostali enaki.
1. korak: Nastavitev
Vloge IAM
SageMaker izvaja operacije na infrastrukturi, ki jo upravlja SageMaker. SageMaker lahko izvaja samo dejanja, ki so dovoljena, kot je opredeljeno v priloženi vlogi izvajanja IAM prenosnika za SageMaker. Za podrobnejšo dokumentacijo o ustvarjanju vlog IAM in upravljanju dovoljenj IAM glejte Dokumentacija o vlogah AWS SageMaker. Lahko ustvarimo novo vlogo ali pa dobimo SageMaker (Studio) prenosnikprivzeta izvajalska vloga z izvajanjem naslednjih vrstic kode:
Zgornja koda dobi izvršilno vlogo SageMaker za primerek prenosnega računalnika. To je vloga IAM, ki smo jo ustvarili za naš primerek prenosnika SageMaker ali SageMaker Studio.
Parametri, ki jih lahko konfigurira uporabnik
Tukaj so vsi konfigurabilni parametri, ki so potrebni za gradnjo in zagon našega posla paketnega preoblikovanja SageMaker:
2. korak: Nalaganje modela ML iz PyTorch Model Zoo
Nato podamo model zaznavanja objektov iz PyTorch Model Zoo in shranimo njegove uteži modela ML. Običajno shranimo model PyTorch s končnico datoteke .pt ali .pth. Spodnji delček kode prenese vnaprej pripravljen model Faster R-CNN ResNet50 ML iz PyTorch Model Zoo:
model = torchvision.models.detection.fasterrcnn_resnet50_fpn(pretrained=True)
Paketno preoblikovanje SageMaker kot vhod zahteva nekaj uteži modela, zato bomo predhodno usposobljeni model ML shranili kot model.pt. Če želimo naložiti model po meri, lahko namesto tega shranimo uteži modela iz drugega modela PyTorch kot model.pt.
3. korak: Shranite in naložite artefakte modela ML v Amazon S3
Ker bomo za sklepanje ML uporabljali SageMaker, moramo uteži modela naložiti v vedro S3. To lahko storimo z naslednjimi ukazi ali s prenosom in preprostim vlečenjem in spuščanjem datoteke neposredno v S3. Naslednji ukazi bodo najprej stisnili skupino datotek znotraj model.pt
v arhiv in kopirajte uteži modela iz našega lokalnega stroja v vedro S3.
Opombe: Če želite zagnati naslednje ukaze, morate imeti AWS vmesnik ukazne vrstice (AWS CLI) nameščen.
Nato kopiramo našo vhodno sliko v S3. Spodaj je celotna pot S3 za sliko.
To sliko lahko kopiramo v S3 z drugim ukazom aws s3 cp.
4. korak: Izdelava skriptov za sklepanje modela ML
Zdaj bomo pregledali našo datoteko vstopne točke, inference.py
modul. Z razredom PyTorchModel lahko razmestimo model PyTorch, usposobljen zunaj SageMakerja. Najprej instanciramo objekt PyTorchModelZoo. Nato bomo izdelali datoteko vstopne točke inference.py za izvajanje sklepanja ML z uporabo paketne transformacije SageMaker na vzorčnih podatkih, ki gostujejo v Amazon S3.
Razumevanje predmeta PyTorchModel
O PyTorchModel znotraj API-ja SageMaker Python nam omogoča izvajanje sklepanja ML z uporabo našega prenesenega artefakta modela.
Za zagon razreda PyTorchModel moramo razumeti naslednje vhodne parametre:
name
: ime modela; priporočamo uporabo imena modela + datuma in časa ali naključnega niza + datuma in časa za edinstvenost.model_data
: URI S3 pakiranega artefakta modela ML.entry_point
: Uporabniško definirana datoteka Python, ki jo uporablja slika Docker sklepanja za definiranje obdelovalcev za dohodne zahteve. Koda definira nalaganje modela, predprocesiranje vnosa, logiko napovedovanja in naknadno obdelavo izhoda.framework_version
: mora biti nastavljen na različico 1.2 ali višjo, da se omogoči samodejno ponovno pakiranje modela PyTorch.source_dir
: Imenik datoteke entry_point.role
: Vloga IAM za pošiljanje zahtev storitev AWS.image_uri
: uporabite to sliko vsebnika Amazon ECR Docker kot osnovo za računalniško okolje modela ML.sagemaker_session
: Seja SageMaker.py_version
: uporabljena različica Python
Naslednji delček kode instancira razred PyTorchModel za izvajanje sklepanja z uporabo predhodno usposobljenega modela PyTorch:
Razumevanje datoteke vstopne točke (inference.py)
Parameter entry_point kaže na datoteko Python z imenom inference.py
. Ta vstopna točka definira nalaganje modela, predprocesiranje vnosa, logiko predvidevanja in naknadno obdelavo izhoda. Dopolnjuje kodo za serviranje modela ML v vnaprej pripravljenem PyTorchu Vsebnik za globoko učenje SageMaker sliko.
Inference.py
bo vseboval naslednje funkcije. V našem primeru izvajamo model_fn
, input_fn
, predict_fn
in output_fn
funkcije za preglasitev privzeti upravljalnik sklepanja PyTorch.
model_fn
: Prevzame imenik, ki vsebuje statične kontrolne točke modela v sklepni sliki. Odpre in naloži model z določene poti ter vrne model PyTorch.input_fn
: kot vhod sprejme vsebino dohodne zahteve (request_body) in vrsto vsebine dohodne zahteve (request_content_type). Upravlja dekodiranje podatkov. To funkcijo je treba prilagoditi vhodu, ki ga pričakuje model.predict_fn
: pokliče model na podatkih, deserializiranih v input_fn. Izvaja predvidevanje deserializiranega objekta z naloženim modelom ML.output_fn
: Serializira rezultat predvidevanja v želeno vrsto vsebine odgovora. Pretvori predvidevanja, pridobljena iz funkcije predict_fn, v formate JSON, CSV ali NPY.
5. korak: Zagon opravila paketnega preoblikovanja SageMaker
Za ta primer bomo pridobili rezultate sklepanja ML prek opravila paketnega preoblikovanja SageMaker. Opravila paketnega preoblikovanja so najbolj uporabna, kadar želimo enkrat pridobiti sklepe iz naborov podatkov, ne da bi bila potrebna trajna končna točka. Instanciramo a sagemaker.transformer.Transformer objekt za ustvarjanje in interakcijo s opravili paketnega preoblikovanja SageMaker.
Oglejte si dokumentacijo za ustvarjanje opravila paketnega preoblikovanja na CreateTransformJob.
6. korak: Vizualizacija rezultatov
Ko se opravilo paketnega preoblikovanja SageMaker konča, lahko naložimo izhode sklepanja ML iz Amazon S3. Za to se pomaknite do Konzola za upravljanje AWS in poiščite Amazon SageMaker. Na levi plošči pod Sklepanje, Glej Opravila paketnega preoblikovanja.
Po izbiri Paketno preoblikovanje, si oglejte spletno stran s seznamom vseh opravil paketnega preoblikovanja SageMaker. Ogledamo si lahko napredek našega zadnjega izvajanja opravila.
Prvič, opravilo bo imelo status »V teku«. Ko je končano, si oglejte spremembo stanja v Dokončano.
Ko je stanje označeno kot dokončano, lahko kliknemo opravilo in si ogledamo rezultate. Ta spletna stran vsebuje povzetek opravila, vključno s konfiguracijami opravila, ki smo ga pravkar izvedli.
Pod Konfiguracija izhodnih podatkov, bomo videli izhodno pot S3. Tukaj bomo našli naše rezultate sklepanja ML.
Izberite izhodno pot S3 in si oglejte datoteko [image_name].[file_type].out z našimi izhodnimi podatki. Naša izhodna datoteka bo vsebovala seznam preslikav. Primer izhoda:
Nato obdelamo to izhodno datoteko in vizualiziramo naše napovedi. Spodaj navajamo naš prag zaupanja. Seznam razredov dobimo od Preslikava objektov nabora podatkov COCO. Med sklepanjem model zahteva samo vhodne tenzorje in vrne naknadno obdelane napovedi kot Seznam[Dikt[Tenzor]], enega za vsako vhodno sliko. Polja Dict so naslednja, kjer je N število zaznav:
- polja (FloatTensor[N, 4]): predvidena polja v
[x1, y1, x2, y2]
format, z0 <= x1 < x2 <= W and 0 <= y1 < y2 <= H
, KjerW
je širina slike inH
je višina slike - oznake (
Int64Tensor[N]
): predvidene oznake za vsako zaznavo - rezultati (
Tensor[N]
): rezultati napovedi za vsako zaznavo
Za več podrobnosti o izhodu glejte Dokumentacija PyTorch Faster R-CNN FPN.
Izhod modela vsebuje omejevalne okvire z ustreznimi ocenami zaupanja. Optimiziramo lahko prikaz lažno pozitivnih rezultatov tako, da odstranimo omejevalne okvire, za katere model ni prepričan. Naslednji delčki kode obdelajo napovedi v izhodni datoteki in narišejo omejevalne okvire na napovedih, kjer je rezultat nad našim pragom zaupanja. Postavili smo verjetnostni prag, CONF_THRESH
, na 75 za ta primer.
Na koncu vizualiziramo te preslikave, da razumemo naš rezultat.
Opombe: če se slika ne prikaže v vašem zvezku, jo poiščite v drevesu imenikov na levi strani JupyterLaba in jo odprite tam.
Izvajanje vzorčne kode
Za popoln delujoč primer klonirajte kodo v amazon-sagemaker-primeri GitHub in zaženite celice v create_pytorch_model_sagemaker.ipynb
zvezek.
zaključek
V tej objavi v spletnem dnevniku smo predstavili primer izvajanja sklepanja ML od konca do konca z uporabo modela zaznavanja objektov iz PyTorch Model Zoo z uporabo paketne transformacije SageMaker. Pokrivali smo nalaganje uteži modela Faster R-CNN za odkrivanje objektov, njihovo shranjevanje v vedro S3, pisanje datoteke vstopne točke in razumevanje ključnih parametrov v API-ju PyTorchModel. Nazadnje smo razmestili model in izvedli sklepanje o modelu ML, vizualizirali izhod modela in se naučili interpretirati rezultate.
O avtorjih
Dipika Khullar je inženir ML v Amazon ML Solutions Lab. Strankam pomaga pri integraciji rešitev ML za reševanje njihovih poslovnih težav. Pred kratkim je zgradila cevovode za usposabljanje in sklepanje za medijske stranke ter napovedne modele za trženje.
Marcelo Aberle je inženir ML v organizaciji AWS AI. Vodi prizadevanja MLOps pri Amazon ML Solutions Lab, ki strankam pomaga oblikovati in izvajati razširljive sisteme ML. Njegovo poslanstvo je usmerjati stranke na njihovi poti ML v podjetju in pospešiti njihovo pot ML do proizvodnje.
Ninad Kulkarni je uporabni znanstvenik v Amazon ML Solutions Lab. Strankam pomaga pri sprejemanju ML in AI z gradnjo rešitev za reševanje njihovih poslovnih težav. Pred kratkim je izdelal napovedne modele za športne, avtomobilske in medijske stranke.
Jaš šah je vodja znanosti v Amazon ML Solutions Lab. On in njegova ekipa uporabnih znanstvenikov in inženirjev ML delajo na različnih primerih uporabe ML iz zdravstva, športa, avtomobilizma in proizvodnje.
- AI
- ai art
- ai art generator
- imajo robota
- Strojno učenje Amazon
- Amazon ML Solutions Lab
- Amazon SageMaker
- Umetna inteligenca
- certificiranje umetne inteligence
- umetna inteligenca v bančništvu
- robot z umetno inteligenco
- roboti z umetno inteligenco
- programska oprema za umetno inteligenco
- Strojno učenje AWS
- blockchain
- blockchain konferenca ai
- coingenius
- pogovorna umetna inteligenca
- kripto konferenca ai
- dall's
- globoko učenje
- strojno učenje
- platon
- platon ai
- Platonova podatkovna inteligenca
- Igra Platon
- PlatoData
- platogaming
- lestvica ai
- sintaksa
- Tehnična navodila
- zefirnet