Selle ajaveebipostituse kirjutasid kaasa Jonathan Lee, Nelson Leung, Paul Min ja Troy Squillaci Intelilt.
In Osa 1 Selle postituse osas arutasime, kuidas Intel®3DAT koostööd tegi AWS-i masinõppe professionaalsed teenused (MLPS), et luua skaleeritav AI SaaS-rakendus. 3DAT kasutab arvutinägemist ja tehisintellekti, et tuvastada, jälgida ja analüüsida enam kui 1,000 biomehaanika andmepunkti standardsest videost. See võimaldab klientidel luua rikkalikke ja võimsaid biomehaanikapõhiseid tooteid, nagu veebi- ja mobiilirakendused, millel on üksikasjalikud jõudlusandmed ja kolmemõõtmelised visualiseeringud.
Selle postituse 2. osas sukeldume sügavamale arhitektuuri igasse etappi. Uurime AWS-teenuseid, mida kasutatakse 3DAT-i disaininõuete täitmiseks, sealhulgas Amazon Kinesise andmevood ja Amazoni elastse Kubernetese teenus (Amazon EKS), et skaleeritult juurutada selle tarkvara jaoks vajalikud poseerimise hindamise mudelid teenusena (SaaS).
Arhitektuuri ülevaade
MLPS-i meeskonna peamine eesmärk oli 2D- ja 3D-poosihinnangu mudeli torujuhtmete tootmine ning funktsionaalse ja skaleeritava rakenduse loomine. Järgnev diagramm illustreerib lahenduse arhitektuuri.
Kogu arhitektuur on jagatud viieks põhikomponendiks:
- Kasutajarakenduse liidese kihid
- andmebaas
- Töövoo orkestreerimine
- Skaleeritav poosihinnangu järelduste genereerimine
- Operatiivseire
Vaatame üksikasjalikult iga komponenti, nende koostoimeid ja disainivalikute põhjendusi.
Kasutajarakenduse liidese kihid
Järgmine diagramm näitab rakenduse liidese kihte, mis pakuvad kasutajale juurdepääsu ja kontrolli rakendusele ja selle ressurssidele.
Need pääsupunktid toetavad erinevaid kasutusjuhtumeid erinevate kliendiisikute põhjal. Näiteks saab rakenduse kasutaja esitada töö CLI kaudu, samas kui arendaja saab Pythoni SDK abil rakenduse luua ja manustada oma rakendustesse poosihinnangu luureandmeid. CLI ja SDK on ehitatud modulaarsete komponentidena – mõlemad kihid on API kihi ümbrised, mis on ehitatud kasutades Amazon API värav API kõnede lahendamiseks ja seotud AWS Lambda funktsioonid, mis hoolitsevad iga API-kõnega seotud taustaloogika eest. Need kihid olid Inteli OTG meeskonna jaoks ülioluline komponent, kuna see avab laia klientide baasi, kes saavad seda SaaS-i rakendust tõhusalt kasutada.
API kiht
Lahendusel on üheksast API-st koosnev põhikomplekt, mis vastavad sellel platvormil töötavatele objektide tüüpidele. Igal API-l on Pythoni fail, mis määrab API toimingud, mida saab käivitada. Uute objektide loomisele omistatakse järjestikku automaatselt objekti ID. Nende objektide atribuudid salvestatakse ja neid jälgitakse Amazon Aurora serverita andmebaasi, kasutades seda ID-d. Seetõttu seostuvad API toimingud funktsioonidega, mis on määratletud keskses failis, mis sisaldab Aurora andmebaasi päringute tegemise taustaloogikat. See taustaloogika kasutab Boto3 Amazon RDS DataService'i klient juurdepääsuks andmebaasiklastrile.
Üks erand on /job
API, millel on a create_job
meetod, mis käsitleb video esitamist uue töötlemistöö loomiseks. See meetod käivitab AWS-i astmefunktsioonid töövoo loogika töö käitamiseks. Läbides a job_id
, see meetod kasutab Boto3 Step Functions klient helistada start_execution
meetod määratud jaoks stateMachineARN
(Amazoni ressursi nimi).
Kaheksal objekti API-l on meetodid ja sarnane juurdepääsumuster, mis on kokku võetud järgmises tabelis.
Meetodi tüüp | Funktsiooni nimi | Kirjeldus |
GET | list_[object_name]s |
Valib andmebaasist kõik seda tüüpi objektid ja kuvab. |
POST | create_[object] |
Lisab andmebaasi uue objektikirje koos vajalike sisenditega. |
GET | get_[object] |
Valib andmebaasist objekti ID alusel objekti atribuudid ja kuvab. |
PUT | update_[object] |
Värskendab olemasolevat objektikirjet vajalike sisenditega. |
Kustuta | delete_[object] |
Kustutab andmebaasist olemasoleva objektikirje objekti ID alusel. |
Üheksa API üksikasjad on järgmised.
- /kasutaja – Kasutaja on isiku identiteet, kes on volitatud sellele rakendusele töid esitama. Kasutaja loomiseks on vaja kasutajanime, kasutaja e-posti aadressi ja grupi ID-d, kuhu kasutaja kuulub.
- /kasutaja_rühm – Kasutajarühm on kasutajate kogum. Iga kasutajarühm on vastendatud ühe projekti ja ühe konveieri parameetrikomplektiga. Erinevate tasandite saamiseks (infrastruktuuriressursside ja torujuhtme parameetrite osas) jagatakse kasutajad kasutajarühmadesse. Iga kasutaja võib kuuluda ainult ühte kasutajarühma. Kasutajarühma loomiseks on vaja projekti ID-d, konveieri parameetrikomplekti ID-d, kasutajarühma nime ja kasutajarühma kirjeldust. Pange tähele, et kasutajarühmad erinevad AWS-i kontol määratletud kasutajarollidest. Viimast kasutatakse erineva juurdepääsutaseme pakkumiseks vastavalt nende juurdepääsurollidele (näiteks administraator).
- /projekt – Projekti kasutatakse erinevate infrastruktuuriressursside kogumite koondamiseks. Projekt on seotud singliga
project_cluster_url
(Aurora klaster) kasutajate, tööde ja muude metaandmete salvestamiseks, aproject_queue_arn
(Kinesis Data Streams ARN) ja arvutustööaja keskkond (praegu juhitakse Cortexi kaudu), mida kasutatakse kaadripartiide kohta järelduste tegemiseks või videote järeltöötluseks. Iga kasutajarühm on seotud ühe projektiga ja see mehhanism võimaldab erinevate kasutajarühmade latentsusaja ja arvutusvõimsuse osas lubada erinevaid tasemeid. Projekti loomiseks on vaja projekti nime, projekti klastri URL-i ja projekti järjekorda ARN. - /torujuhe – Torujuhe on seotud ühe konfiguratsiooniga töötlemiskonteinerite jada jaoks, mis teostavad videotöötlust Cortexi koordineeritavas Amazon EKS-i järelduste genereerimise klastris (lisateavet leiate jaotisest videotöötluse järelduste genereerimine). Tavaliselt koosneb see kolmest mahutist: eeltöötlus ja dekodeerimine, objekti tuvastamine ja poosi hindamine. Näiteks on dekodeerimise ja objekti tuvastamise samm 2D- ja 3D-konveieri puhul sama, kuid viimase konteineri vahetamine kas HRNeti või 3DMPPE abil annab tulemuseks 2D- ja 3D-töötluskonveierite parameetrite komplekti. Saate luua uusi konfiguratsioone võimalike töötlemiseks kasutatavate torujuhtmete määratlemiseks ja see nõuab Cortexi repos sisendiks uut Pythoni faili, mis kirjeldab selle konveieri määratlevate mudeli lõpp-punktide kutsete jada (vt jaotist videotöötluse järelduste genereerimine ). Konveieri lõpp-punkt on Cortexi lõpp-punkt, mis kutsutakse töötlema ühte kaadrit. Konveieri loomiseks on vaja konveieri nime, kirjeldust ja konveieri lõpp-punkti.
- /pipeline_parameter_set – Konveieri parameetrite komplekt on paindlik JSON-i kogum, mis koosneb konkreetse konveieri jaoks mitmest parameetrist (konveieri konfiguratsiooni käitusaeg) ja lisatakse selleks, et pakkuda paindlikkust edaspidiseks kohandamiseks, kui on vaja mitut konveieri konfiguratsiooni käitusaega. Kasutajarühmi saab seostada konkreetse konveieri parameetrite komplektiga ja selle eesmärk on, et kasutajarühma ja konveieri kohta oleksid erinevad parameetrite rühmad. See oli Intel OTG jaoks oluline tulevikku vaatav täiendus, et luua kohandamine, mis toetab teisaldamist, kui erinevad kliendid, eriti ISV-d, hakkavad rakendust kasutama.
- /pipeline_parameters – Üks konveieri parameetrite kogu on konveieri parameetrite komplekti eksemplar. See muudab konveieri parameetrite konveieri parameetritele seatud vastenduseks 1:palju. See API nõuab konveieri ID-d, et seostada konveieri parameetrite komplektiga, mis võimaldab luua konveieri parameetrite 1:1 vastendamiseks konveieriga. Teised selle API nõutavad sisendid on konveieri parameetrite komplekti ID, konveieri parameetrite väärtus ja konveieri parameetrite nimi.
- /video – Videoobjekti kasutatakse üksikute videote määratlemiseks, mis moodustavad töö käigus esitatud ZIP-paketi. See fail jagatakse pärast esitamist mitmeks videoks. Video on seotud
job_id
töö jaoks, kuhu .zip-pakett esitatakse, ja Amazoni lihtne salvestusteenus (Amazon S3) teed eraldatud töötlemata videote asukoha ja iga video järeltöötluse tulemuste jaoks. Videoobjekt sisaldab ka video edenemisprotsenti, mida värskendatakse järjekindlalt selle video üksikute kaadripartiide töötlemise ajal, ning video oleku lippu, kas video on lõpetatud või mitte. Video loomiseks on vaja töö ID-d, video teed, video tulemuste teed, video edenemise protsenti ja video olekut. - /frame_batch - A
frame_batch
objekt on minipartii kaadreid, mis on loodud ühe video proovivõtul. Video jagamine tavalise suurusega kaadripartiideks annab hoova latentsusaja häälestamiseks ning suurendab paralleelsust ja läbilaskevõimet. See on granuleeritud üksus, mida juhitakse järelduste tegemiseks läbi Kinesise andmevoogude. Kaadripartii loomiseks on vaja video ID-d, kaadripartii algusnumbrit, kaadripartii lõpunumbrit, kaadripartii sisestusteed, kaadripartii tulemuste teed ja kaadripartii olekut. - /töökoht – Seda interaktsiooni API-t kasutatakse failide esitamiseks töötlemistöö alustamiseks. Sellel API-l on teistest objekti API-dest erinev funktsioon, kuna see on otsene tee videotöötluse taustaprogrammi Step Functions töövoo koordineerimise ja Amazon EKS-klastriga suhtlemiseks. See API nõuab kasutaja ID-d, projekti ID-d, konveieri ID-d, konveieri parameetrikomplekti ID-d, töö parameetreid ja töö olekut. Töö parameetrites on määratud sisendfaili tee, mis on Amazon S3-s koht, kus asub töödeldavate videote .zip pakett. Faili üleslaadimine toimub rakendusega
upload_handler
meetod, mis genereerib kasutajale faili paigutamiseks eelnevalt allkirjastatud S3 URL-i. WORKFLOW_STATEMACHINE_ARN on keskkonnamuutuja, mis edastataksecreate_job
API, et määrata, kuhu töö alustamiseks esitatakse sisendfaili teega zip-videopakett.
Järgmine tabel võtab API funktsioonid kokku.
Meetodi tüüp | funktsioon | Kirjeldus |
GET | list_jobs |
Valib andmebaasist kõik tööd ja kuvab. |
POST | create_ job |
Lisab uue töökirje koos kasutaja ID, projekti ID, konveieri ID, konveieri parameetrikomplekti ID, töötulemuste tee, töö parameetrite ja töö olekuga. |
GET | get_ job |
Valib andmebaasist töö ID alusel töö atribuudid ja kuvab. |
GET | upload_handler |
Loob .zip-faili üleslaadimise asukohaks eelnevalt allkirjastatud S3 URL-i. Nõuab S3 ämbri nime ja eeldab rakenduse/zip-faili tüüpi. |
Pythoni SDK kiht
API-dele tuginedes lõi meeskond Pythoni SDK klienditeegi ümbrisena, et hõlbustada arendajatel API-meetoditele juurdepääsu. Nad kasutasid avatud lähtekoodiga Luule, mis tegeleb Pythoni pakendamise ja sõltuvuse haldamisega. Nad lõid a client.py
fail, mis sisaldab funktsioone, mis mähivad kõiki Pythonit kasutavaid API-sid requests
API taotluste ja erandite käsitlemiseks.
Et arendajad saaksid Intel 3DAT SDK käivitada, peavad nad installima ja koostama paketi Poetry. Seejärel saavad nad lisada lihtsa Pythoni impordi intel_3dat_sdk
mis tahes Pythoni koodile.
Kliendi kasutamiseks saate luua kliendi eksemplari, määrates API lõpp-punkti:
Seejärel saate klienti kasutada üksikute meetodite, näiteks create_pipeline
meetod (vt järgmist koodi), võttes sisse õiged argumendid, nagu torujuhtme nimi ja konveieri kirjeldus.
CLI kiht
Samamoodi ehitas meeskond API-dele, et luua käsurea liides kasutajatele, kes soovivad pääseda API-meetoditele juurde lihtsa liidesega, ilma et oleks vaja Pythoni koodi kirjutada. Nad kasutasid avatud lähtekoodiga Pythoni paketti Click (Käsurea liidese loomise komplekt). Selle raamistiku eelised on käskude suvaline pesastamine, automaatne abilehtede genereerimine ja alamkäskude aeglase laadimise tugi käitusajal. Samas client.py
faili nagu SDK-s, mähiti iga SDK kliendi meetod Click-iga ja nõutud meetodi argumendid teisendati käsurea lippudeks. Lipu sisendeid kasutatakse siis SDK käsu kutsumisel.
CLI käivitamiseks võite kasutada CLI configure
käsk. Teilt küsitakse lõpp-punkti URL-i:
Nüüd saate kasutada CLI-d erinevate API-meetoditega seotud käskude kutsumiseks, näiteks:
andmebaas
Andmebaasina kasutab see rakendus Aurora Serverlessi, et salvestada metaandmeid, mis on seotud iga API-ga, kasutades MYSQL-i andmebaasimootorina. Aurora serverita andmebaasiteenuse valimisel järgitakse disainipõhimõtet, et minimeerida infrastruktuuri üldkulusid, kasutades võimalusel serverita AWS-teenuseid. Järgmine diagramm illustreerib seda arhitektuuri.
. serverita mootori režiim vastab vahelduvale kasutusmustrile, kuna see rakendus laieneb uutele klientidele ja töökoormus on endiselt ebakindel. Andmebaasi lõpp-punkti käivitamisel pole nõutav konkreetne DB eksemplari suurus, vaid klastri võimsuse minimaalne ja maksimaalne vahemik. Aurora Serverless tegeleb ruuteripargi sobiva varustamisega ja jaotab töökoormuse ressursside vahel. Aurora Serverless säilitab automaatselt varukoopiaid minimaalselt 1 kuni 35 päeva. Meeskond optimeeris ohutuse, määrates vaikeväärtuseks maksimaalse väärtuse 35.
Lisaks kasutas meeskond Andmete API et hallata juurdepääsu Aurora Serverless klastrile, mis ei nõua püsivat ühendust ja pakub selle asemel turvalist HTTP lõpp-punkti ja integratsiooni AWS SDK-dega. See funktsioon kasutab AWS-i saladuste haldur andmebaasi mandaatide salvestamiseks, nii et pole vaja mandaate selgesõnaliselt edastada. CREATE TABLE skriptid kirjutati .sql-failides iga üheksa tabeli jaoks, mis vastavad üheksale API-le. Kuna see andmebaas sisaldas kõiki süsteemi metaandmeid ja objektide olekut, käivitati API meetodid sobivate SQL-käskude abil (näiteks select * from Job
jaoks list_jobs
API) ja edastati execute_statement
meetod Amazon RDS-kliendilt Data API-s.
Töövoo orkestreerimine
Rakenduse funktsionaalset selgroogu käsitleti töövoo koordineerimiseks sammufunktsioonide abil, nagu on näidatud järgmisel diagrammil.
Olekumasin koosnes nelja lambda funktsiooni jadast, mis käivitub siis, kui töö esitatakse kasutades create_job
meetodist job
API. Töö loomiseks on vaja kasutajatunnust, projekti ID-d, konveieri ID-d, konveieri parameetrikomplekti ID-d, töötulemuste teed, töö parameetreid ja töö olekut. Saate esmalt üles laadida videofailide ZIP-paketi, kasutades upload_handler
meetod töö API-st, et luua eelallkirjastatud S3 URL. Töö esitamise ajal edastatakse sisendfaili tee töö parameetrite kaudu, et määrata faili asukoht. See käivitab töövoo olekumasina käitamise, käivitades neli peamist sammu:
- Initsialiseerija lambda funktsioon
- Saatja lambda funktsioon
- Lõpetamine Kontrollige lambda funktsiooni
- Kollektor lambda funktsioon
Initsialiseerija lambda funktsioon
Initializeri põhiülesanne on eraldada .zip-pakett üksikuteks videofailideks ja valmistada need esitaja jaoks ette. Kõigepealt laaditakse alla ZIP-fail ning seejärel pakitakse lahti ja ekstraktitakse iga fail, sealhulgas videofailid. Videod, eelistatavalt .mp4-vormingus, laaditakse tagasi S3 ämbrisse. Kasutades create_video
meetodis video
API, luuakse videoobjekt, mille sisendiks on videotee. See lisab iga video andmed Aurora andmebaasi. Kõik muud failitüübid (nt JSON-failid) loetakse metaandmeteks ja samamoodi laaditakse üles, kuid videoobjekti ei looda. Ekstraheeritud failide ja videofailide nimede loend edastatakse järgmisele sammule.
Saatja lambda funktsioon
Funktsioon Submitter võtab videofailid, mille Initializer eraldas, ja loob videokaadrite minipartiid piltidena. Enamik praeguseid tootmises olevaid arvutinägemismudeleid on koolitatud piltide järgi, nii et isegi video töötlemisel jagatakse need enne mudeli järelduste tegemist pildikaadriteks. See praegune lahendus, mis kasutab nüüdisaegset poosihinnangu mudelit, ei erine – esitaja kaadripartiid edastatakse Kinesise andmevoogudele, et algatada järelduste genereerimise etapp.
Esiteks laadib videofail alla funktsiooni Lambda. Kaadrisagedus ja kaadrite arv arvutatakse kasutades FileVideoStream
moodulist imutils.video
töötlemise raamatukogu. Raamid ekstraheeritakse ja rühmitatakse vastavalt määratud minipartii suurusele, mis on selle torujuhtme üks peamisi häälestatavaid parameetreid. Pythoni hapukurgi teegi abil andmed järjestatakse ja laaditakse üles Amazon S3-sse. Seejärel luuakse kaadripakettobjekt ja metaandmete kirje luuakse Aurora andmebaasis. See Lambda funktsioon loodi Dockerfile'i abil, mille sõltuvused on sisse lülitatud opencv-python
, numpy
ja imutils
raamatukogud.
Lõpetamine Kontrollige lambda funktsiooni
Lõpetamise kontrollimise funktsioon jätkab päringute tegemist Aurora andmebaasist, et näha iga selle praeguse töö ZIP-paketis oleva video puhul, mitu kaadripartii on olekus LÕPETUD. Kui kõigi videote kaadripartiid on lõpetatud, on see kontrollprotsess lõppenud.
Kollektor lambda funktsioon
Koguja funktsioon võtab tarbijaetapi jooksul iga kaadri kohta tehtud järelduste väljundid ja kombineerib need kaadripartii ja video vahel. Kombineeritud liidetud andmed laaditakse seejärel üles S3 ämbrisse. Seejärel kutsub funktsioon välja Cortexi järeltöötluse API konkreetse ML-konveieri jaoks, et teostada järeltöötluse arvutusi, ja lisab koondtulemused video abil väljundi ämbrisse. Paljud neist mõõdikutest arvutatakse kaadrite lõikes, näiteks kiirus, kiirendus ja ühendusnurk, seega tuleb see arvutus teha koondatud andmete põhjal. Peamised väljundid hõlmavad põhipunktide andmeid (koostatud CSV-vormingusse), BMA arvutusi (nt kiirendus) ja pildifaili igale kaadrile lisatud võtmepunktide visuaalset ülekatet.
Skaleeritav poosihinnangu järelduste genereerimine
Selles etapis toimub töötlemismootor, mis juhib ML-i järelduste skaleerimist. See hõlmab kolme põhiosa, millest igaühel on oma samaaegsuse hoovad, mida saab häälestada latentsuse kompromisside jaoks (vt järgmist diagrammi).
See arhitektuur võimaldab katsetada latentsuse kasvu testimisel, samuti paindlikkust tuleviku jaoks, kui töökoormus võib muutuda rakendusele juurde pääsevate lõppkasutaja segmentide erinevate segude korral.
Kinesise andmevood
Meeskond valis Kinesise andmevoogude, kuna seda kasutatakse tavaliselt andmete voogesituse käsitlemiseks ja antud juhul sobib see hästi, kuna see suudab skaleeritavuse ja paralleelsuse tagamiseks käsitleda kaadripakette sarnasel viisil. Funktsioonis Submitter Lambda kasutatakse Kinesis Boto3 klienti koos put_record
meetod, mis edastab ühe kaadripartiiga seotud metaandmeid, nagu kaadripartii ID, kaadripartii alguskaader, kaadripartii lõpukaader, pildi kuju, kaadrisagedus ja video ID.
Määratlesime erinevad tööjärjekorra ja Kinesise andmevoo konfiguratsioonid, et määrata läbilaskevõime tasemed, mis on seotud erinevate kasutajarühmade prioriteetsete tasemetega. Juurdepääs erinevatele töötlemisvõimsuse tasemetele on seotud projektijärjekorra ARN läbimisega, kui luuakse uus projekt, kasutades project
API. Seejärel seotakse kasutajarühma loomise ajal iga kasutajarühm konkreetse projektiga. Rakenduses on määratletud kolm voo vaikekonfiguratsiooni AWS-i serverita rakendusmudel (AWS SAM) infrastruktuuri mall:
- Standard -
JobStreamShardCount
- Prioriteet -
PriorityJobStreamShardCount
- Kõrge prioriteet -
HighPriorityJobStreamShardCount
Meeskond kasutas iga voo töötlemisvõimsuse eristamiseks või süsteemi latentsusaja häälestamiseks mõnda erinevat hooba, nagu on kokku võetud järgmises tabelis.
Hoob | Kirjeldus | Vaikeväärtus |
Shard | Kild pärineb Kinesise andmevoogudest; see on allaneelamise läbilaskevõime baasühik. Vaikimisi on 1 MB/sek, mis võrdub 1,000 andmekirjega sekundis. | 2 |
KinesisBatchSize |
Maksimaalne kirjete arv, mille Kinesis Data Streams enne tarbija lambda funktsiooni käivitamist ühes partiis hangib. | 1 |
KinesisParallelizationFactor |
Igast killust korraga töödeldavate partiide arv. | 1 |
Täiustatud ventilaator | Andmetarbijatel, kellel on aktiveeritud täiustatud ventilaator, on tarbijatevahelise läbilaskevõime jagamise asemel spetsiaalne sisestusvõimsus tarbija kohta (nt vaikimisi 1 MB/s). | maha |
Tarbija lambda funktsioon
Kinesis Data Streamsi vaatenurgast on andmetarbija AWS-teenus, mis hangib andmeid andmevoo killust, kui andmeid voos genereeritakse. See rakendus kasutab funktsiooni Consumer Lambda, mis käivitatakse, kui andmevoo järjekordadest saadetakse sõnumeid. Iga tarbijafunktsioon töötleb ühte kaadripartii, tehes järgmised sammud. Esiteks helistatakse sünkroonselt Cortexi protsessori API-le, mis on lõpp-punkt, mis hostib mudeli järelduste konveieri (lisateavet leiate järgmisest jaotisest Amazon EKS koos Cortexiga). Tulemused salvestatakse Amazon S3-sse ja andmebaasi värskendatakse, muutes töödeldud kaadripartii olekuks Complete
. Tõrkehaldus on sisse ehitatud Cortexi API-kõne haldamiseks korduskatsetsükliga, mis käsitleb kõiki Cortexi klastrist pärinevaid 504 vigu, kusjuures korduskatsete arv on seatud 5-le.
Amazon EKS koos Cortexiga ML järelduste tegemiseks
Meeskond kasutas ML-i järelduste arvutusmootorina Amazon EKS-i, AWS-is hallatavat Kubernetese teenust. Tehti kujundusvalik kasutada ML-i lõpp-punktide hostimiseks Amazon EKS-i, mis annab paindlikkuse Kubernetesi ülesvoolu käitamiseks koos võimalusega klastrite jaoks, mida mõlemat hallatakse täielikult AWS-is AWS Fargate, või kohapealse riistvara kaudu Amazon EKS kõikjal. See oli kriitilise tähtsusega funktsioon, mida Intel OTG ihaldas, mis andis võimaluse ühendada see rakendus näiteks spetsiaalse kohapealse riistvaraga.
Kolm ML-mudelit, mis olid järelduste torujuhtmete ehitamise ehitusplokkideks, olid kohandatud Yolo mudel (objekti tuvastamiseks), kohandatud HRNet-mudel (2D-pooside hindamiseks) ja 3DMPPE-mudel (3D-pooside hindamiseks) (vt eelmist). ML jaotisest lisateabe saamiseks). Nad kasutasid avatud lähtekoodiga Ajukoor teek ML-i järelduste konveieri lõpp-punktide juurutamiseks ja haldamiseks ning Amazon EKS-i klastrite käivitamiseks ja juurutamiseks. Kõik need mudelid pakiti Dockeri konteineritesse – mudelifailid salvestati Amazon S3-sse ja mudelipildid salvestati Amazoni elastsete konteinerite register (Amazon ECR) ja kasutusele võetud Cortexi reaalajas API-dena. CPU-l ja GPU-l töötavate mudelikonteinerite versioonid loodi selleks, et pakkuda arvutusriistvara tüüpi paindlikkust. Kui tulevikus on vaja lisada täiendavaid mudeleid või mudelikonveierid, saavad nad lihtsalt luua täiendavaid Cortexi reaalajas API-sid.
Seejärel koostasid nad järelduste torujuhtmed, koostades Cortexi reaalajas mudeli API-d Cortexi reaalaja konveieri API-deks. Üks reaalajas konveieri API koosnes reaalajas mudeli API-de jada kutsumisest. Tarbija lambda funktsioone käsitletakse a pipeline
API kui must kast, mis kasutab pildi lõpliku järeldusväljundi hankimiseks ühte API-kutset. Loodi kaks torujuhet: 2D torujuhe ja 3D torujuhe.
2D-konveier ühendab dekodeerimise eeltöötlusetapi, objekti tuvastamise kohandatud Yolo mudeli abil sportlase asukoha kindlakstegemiseks ja piirdekastide loomiseks ning lõpuks kohandatud HRNeti mudeli 2D-võtmepunktide loomiseks poosi hindamiseks.
3D-konveier ühendab dekodeerimise eeltöötlusetapi, objekti tuvastamise kohandatud Yolo mudeli abil sportlase asukoha kindlakstegemiseks ja piirdekastide loomiseks ning lõpuks 3DMPPE mudeli 3D-põhipunktide loomiseks poosi hindamiseks.
Pärast kaadrite partii kohta järelduste loomist sisaldab iga konveier ka eraldi järeltöötluse reaalajas Cortexi lõpp-punkti, mis genereerib kolm peamist väljundit:
- Koond kehavõtmed suunavad andmed ühte CSV-faili
- BMA arvutused (nt kiirendus)
- Pildifaili igale kaadrile lisatud võtmepunktide visuaalne ülekate
Funktsioon Collector Lambda saadab lõpp-punktile nende järeltöötluse väljundite genereerimiseks konkreetse videoga seotud asjakohased metaandmed, nagu kaadri ID-d ja poosihinnangu järeldusväljundite S3 asukohad.
Cortex on loodud integreerimiseks Amazon EKS-iga ja Kubernetese klastri käivitamiseks on vaja ainult klastri konfiguratsioonifaili ja lihtsat käsku:
Teine jõudluse häälestamise hoob oli arvutusklastrite eksemplari konfiguratsioon. Loodi kolm astet M5 ja G4dn eksemplaride erinevate segudega, mis kodeeriti .yaml-failidena spetsifikatsioonidega, nagu klastri nimi, piirkond ning eksemplari konfiguratsioon ja segu. M5 eksemplarid põhinevad madalama hinnaga CPU-l ja G4dn on kõrgema hinnaga GPU-põhised, et pakkuda mõningaid kulu/jõudluse kompromisse.
Operatiivseire
Toimivate logimisstandardite säilitamiseks sisaldavad kõik Lambda funktsioonid koodi logide salvestamiseks ja sissevõtmiseks Amazon Kinesis Data Firehose. Näiteks logitakse iga funktsioonist Submitter Lambda töödeldud kaadripartii ajatempli, toimingu nime ja lambdafunktsiooni vastuse JSON-iga ning salvestatakse Amazon S3-sse. Järgmine diagramm illustreerib seda arhitektuuri sammu.
Deployment
Juurutamiseks kasutatakse AWS SAM-i, avatud lähtekoodiga raamistikku serverita rakenduste loomiseks AWS-is. AWS SAM võimaldab taristu kujundamist, sealhulgas funktsioone, API-sid, andmebaase ja sündmuste allikate vastendusi, kodifitseerida ja hõlpsasti juurutada uutes AWS-i keskkondades. Juurutamise ajal tõlgitakse AWS-i SAM-i süntaks keelde AWS CloudFormation infrastruktuuri varustamise haldamiseks.
A template.yaml
fail sisaldab infrastruktuuri spetsifikatsioone koos häälestatavate parameetritega, nagu Kinesis Data Streamsi latentsushoovad, mida on kirjeldatud eelmistes jaotistes. A samconfig.toml
fail sisaldab juurutamisparameetreid, nagu pinu nimi, S3 ämbri nimi, kuhu salvestatakse rakendusfailid, nagu Lambda funktsioonikood, ja ressursisildid kulude jälgimiseks. Kogu malli koostamiseks ja juurutamiseks on vaja vaid lihtsate käskudega shelliskripti deploy.sh:
Kasutaja töövoog
Kokkuvõtteks võib öelda, et pärast infrastruktuuri kasutuselevõttu saate alustamiseks järgida järgmist töövoogu.
- Looge klienditeegi abil Intel 3DAT-klient.
- Kasutage API-t, et luua konveieri uus eksemplar, mis vastab nõutavale töötlemise tüübile, näiteks 3D-positsiooni hindamiseks.
- Looge projektist uus eksemplar, mis edastab klastri ARN ja Kinesise järjekorda ARN.
- Looge konveieri parameetrikomplekti uus eksemplar.
- Looge konveieri parameetrite uus eksemplar, mis vastendatakse konveieri parameetrite komplektiga.
- Looge uus kasutajarühm, mis on seotud projekti ID ja konveieri parameetrikomplekti ID-ga.
- Looge kasutajarühmaga seotud uus kasutaja.
- Laadige üles videote ZIP-fail Amazon S3-sse, kasutades töö API-s üleslaadimisfunktsiooni poolt loodud eelallkirjastatud S3 URL-i.
- Esitage a
create_job
API-kõne tööparameetritega, mis määravad videofailide asukoha. See alustab töötlemistööd.
Järeldus
Rakendus on nüüd reaalajas ja valmis testimiseks nii sportlaste kui ka treeneritega. Intel OTG teeb põnevusega arvutinägemist kasutava uuendusliku poosihindamise tehnoloogia kättesaadavaks paljudele kasutajatele, arendajatest sportlaste ja tarkvaramüüjate partneriteni.
AWS-i meeskond soovib kirglikult aidata klientidel, nagu Intel OTG, kiirendada nende ML-i teekonda, alates ideede ja avastamise etapist ML Solutions Labiga kuni AWS ML ProServe'i tugevdamise ja juurutamise etapini. Me kõik jälgime tähelepanelikult sel suvel toimuvaid 2021. aasta Tokyo olümpiamänge, et näha ette kõiki edusamme, mida ML võib spordis avada.
Alusta juba täna! Uurige oma kasutusjuhtu selles postituses mainitud teenuste ja paljude teiste teenustega AWS-i juhtimiskonsool.
Autoritest
Han mees on San Diegos, Californias asuva AWS-i masinõppe ja tehisintellekti vanemjuht. Tal on Northwesterni ülikooli inseneriteaduste doktorikraad ja mitmeaastane kogemus juhtimiskonsultandina, kes nõustab kliente tootmise, finantsteenuste ja energeetika vallas. Täna töötab ta kirglikult koos klientidega erinevatest tööstusharudest, et arendada ja rakendada AWS-is masinõppe ja tehisintellekti lahendusi. Talle meeldib jälgida NBA-d ja vabal ajal korvpalli mängida.
Iman Kamyabi on AWS-i professionaalsete teenustega ML-i insener. Ta on teinud koostööd paljude AWS-i klientidega, et toetada parimaid tavasid korratavate ja usaldusväärsete ML-i torujuhtmete seadistamisel.
Jonathan lee on Inteli olümpiatehnoloogia rühma sporditulemuste tehnoloogia direktor. Ta õppis masinõppe rakendamist tervises UCLA bakalaureuseõppes ja Oxfordi ülikoolis lõpetades. Tema karjäär on keskendunud algoritmide ja andurite arendamisele tervise ja inimeste jõudluse jaoks. Nüüd juhib ta Inteli 3D sportlaste jälgimise projekti.
Nelson Leung on Inteli Sports Performance CoE platvormiarhitekt, kus ta määrab tipptasemel arhitektuuri tipptasemel toodete jaoks, mis parandavad sportlaste jõudlust. Ta juhib ka nende masinõppelahenduste juurutamist, juurutamist ja tootestamist erinevate Inteli partnerite jaoks.
Troy Squillaci on DecSecOpsi insener Intelis, kus ta pakub klientidele professionaalseid tarkvaralahendusi DevOpsi parimate tavade kaudu. Talle meeldib AI-lahenduste integreerimine skaleeritavatesse platvormidesse erinevates valdkondades.
Paul Min on Amazon Web Services (AWS) Associate Solutions Architect praktikant, kus ta aitab klientidel erinevates tööstusharudes oma missiooni edendada ja kiirendada nende pilve kasutuselevõttu. Varem töötas ta Intelis tarkvaratehnika praktikandina, et aidata arendada 3D Athlete Tracking Cloud SDK-d. Väljaspool tööd meeldib Paulile golfi mängida ja teda on kuulda laulmas.
- Münditark. Euroopa parim Bitcoini ja krüptobörs.
- Platoblockchain. Web3 metaversiooni intelligentsus. Täiustatud teadmised. TASUTA PÄÄS.
- CryptoHawk. Altcoini radar. Tasuta prooviversioon.
- Allikas: https://aws.amazon.com/blogs/machine-learning/the-intel3d-athlete-tracking-3dat-scalable-architecture-deploys-pose-estimation-models-using-amazon-kinesis-data-streams- ja-amazon-eks/
- "
- &
- 000
- 100
- 2021
- 3d
- MEIST
- kiirendama
- juurdepääs
- juurdepääsetav
- Vastavalt
- konto
- üle
- tegevus
- meetmete
- lisamine
- Täiendavad lisad
- admin
- Vastuvõtmine
- AI
- algoritm
- Materjal: BPA ja flataatide vaba plastik
- Amazon
- Amazon Web Services
- hulgas
- API
- API-liidesed
- taotlus
- rakendused
- asjakohane
- arhitektuur
- argumendid
- määratud
- Partner
- sportlased
- atribuudid
- Automaatne
- AWS
- Varundamine
- korvpall
- enne
- Kasu
- BEST
- parimaid tavasid
- Must
- Blogi
- keha
- Kast
- ehitama
- Ehitus
- helistama
- Võimsus
- mis
- Karjäär
- juhtudel
- kesk-
- meister
- muutma
- valikuid
- kliendid
- Cloud
- kood
- kogumine
- koguja
- kombineeritud
- komponent
- Arvutama
- arvuti
- konfiguratsioon
- ühendus
- konsultant
- tarbija
- Tarbijad
- Konteiner
- Konteinerid
- sisaldab
- pidev
- kontrollida
- koordineerima
- tuum
- Vastav
- looma
- loodud
- loob
- loomine
- loomine
- volikiri
- kriitiline
- otsustav
- Praegune
- Praegu
- tava
- klient
- Kliendid
- viimase peal
- andmed
- andmebaas
- andmebaasid
- päev
- pühendunud
- sügavam
- annab
- juurutada
- lähetatud
- kasutuselevõtu
- juurutab
- Disain
- kavandatud
- detail
- üksikasjalik
- detailid
- Detection
- arendama
- arendaja
- Arendajad
- & Tarkvaraarendus
- erinev
- eristada
- otsene
- Juhataja
- avastus
- Näidikute
- laevalaadija
- Ei tee
- Domeenid
- alla
- ajal
- kergesti
- Lõpp-punkt
- energia
- Mootor
- insener
- Inseneriteadus
- keskkond
- sündmus
- näide
- erutatud
- olemasolevate
- ootab
- kogemus
- uurima
- tunnusjoon
- Lõpuks
- finants-
- finantsteenused
- esimene
- sobima
- FLEET
- Paindlikkus
- paindlik
- keskendunud
- järgima
- Järel
- järgneb
- formaat
- tulevikku
- FRAME
- Raamistik
- funktsioon
- funktsionaalne
- funktsionaalsus
- funktsioonid
- tulevik
- tekitama
- teeniva
- põlvkond
- andmine
- eesmärk
- hea
- GPU
- koolilõpetaja
- Grupp
- Grupi omad
- käepide
- Käsitsemine
- riistvara
- Tervis
- kuulnud
- aitama
- aidates
- aitab
- siin
- rohkem
- Kuidas
- HTTPS
- inim-
- Identity
- pilt
- rakendada
- täitmine
- oluline
- sisaldama
- hõlmab
- Kaasa arvatud
- eraldi
- tööstusharudes
- tööstus
- Infrastruktuur
- uuenduslik
- sisend
- Lisab
- paigaldama
- integreeritud
- integratsioon
- Intel
- Intelligentsus
- suhtlemist
- Interface
- IT
- töö
- Tööturg
- teekond
- Võti
- labor
- algatama
- käivitamine
- Leads
- õppimine
- Tase
- Raamatukogu
- joon
- nimekiri
- laadimine
- liising
- kohad
- masin
- masinõpe
- tehtud
- säilitada
- peamine
- TEEB
- mees
- juhtima
- juhitud
- juhtimine
- tootmine
- kaart
- kaardistus
- mainitud
- meetodid
- Meetrika
- miinimum
- missioon
- ML
- mobiilne
- Mobiilirakendused
- mudel
- mudelid
- modulaarne
- rohkem
- kõige
- mitmekordne
- nimed
- NBA
- vajalik
- vajadustele
- number
- olümpiamängud
- Avaneb
- töötama
- optimeeritud
- valik
- et
- Muu
- enda
- Oxford
- pakend
- osa
- eriline
- eriti
- partnerid
- Mööduv
- kirglik
- Muster
- protsent
- jõudlus
- esitades
- perspektiiv
- tükk
- inimesele
- Platvormid
- mängimine
- Luule
- võrra
- võimalik
- võim
- võimas
- Valmistama
- eelmine
- esmane
- põhimõte
- prioriteet
- protsess
- Protsessid
- töötlemine
- Protsessor
- tootma
- Produktsioon
- Toodet
- professionaalne
- projekt
- anda
- annab
- eesmärk
- valik
- Töötlemata
- reaalajas
- tunnistama
- rekord
- andmed
- kohta
- usaldusväärne
- Taotlusi
- nõudma
- nõutav
- Nõuded
- Vajab
- ressurss
- Vahendid
- vastus
- Tulemused
- jooks
- jooksmine
- ohutus
- San
- Skaalautuvus
- skaalautuvia
- Skaala
- ketendamine
- SDK
- kindlustama
- segmendid
- Serverita
- teenus
- Teenused
- komplekt
- kehtestamine
- kuju
- jagamine
- Shell
- näidatud
- sarnane
- Samamoodi
- lihtne
- SUURUS
- So
- tarkvara
- tarkvara
- tarkvaraarendus
- lahendus
- Lahendused
- mõned
- Keegi
- spetsialiseeritud
- spetsifikatsioonid
- kiirus
- sport
- Kestab
- Stage
- standard
- standardite
- algus
- alustatud
- algab
- riik
- modernne
- olek
- ladustamine
- salvestada
- oja
- streaming
- esitatud
- Järgnevalt
- suvi
- toetama
- Toetab
- süsteem
- võtmine
- meeskond
- Tehnoloogia
- Testimine
- seetõttu
- Läbi
- TIE
- aeg
- täna
- kokku
- Tokyo
- jälgida
- Jälgimine
- liigid
- tüüpiliselt
- UCLA
- Ülikool
- University of Oxford
- avamine
- Värskendused
- kasutama
- Kasutajad
- kasutades
- väärtus
- sort
- eri
- vertikaalid
- Video
- Videod
- nägemus
- web
- veebiteenused
- WHO
- ilma
- Töö
- töötas
- töö
- aastat