Aplikacije strojnega učenja (ML) so zapletene za uvajanje in pogosto zahtevajo več modelov ML, da služijo eni sami zahtevi za sklepanje. Tipična zahteva lahko teče čez več modelov s koraki, kot so predprocesiranje, transformacije podatkov, logika izbire modela, združevanje modelov in naknadna obdelava. To je privedlo do razvoja skupnih vzorcev načrtovanja, kot so cevovodi serijskega sklepanja, ansambli (razpršeno zbiranje) in delovni tokovi poslovne logike, kar ima za posledico realizacijo celotnega delovnega toka zahteve kot usmerjenega acikličnega grafa (DAG). Ker pa postajajo delovni tokovi bolj zapleteni, to vodi do povečanja skupnega odzivnega časa ali zakasnitve teh aplikacij, kar posledično vpliva na splošno uporabniško izkušnjo. Poleg tega, če te komponente gostujejo na različnih instancah, dodatna omrežna zakasnitev med temi instancami poveča skupno zakasnitev. Razmislite o primeru priljubljene uporabe ML za virtualnega pomočnika pri podpori strankam. Običajna zahteva bo morda morala iti skozi več korakov, ki vključujejo prepoznavanje govora, obdelavo naravnega jezika (NLP), sledenje stanju pogovornega okna, politiko dialoga, generiranje besedila in končno besedilo v govor. Poleg tega lahko uporabite najsodobnejše modele NLP, ki temeljijo na transformatorju, kot so različne različice BERTI, BARTin GPT. Končni rezultat so dolgi odzivni časi za te skupine modelov in slaba uporabniška izkušnja.
Pogost vzorec za doseganje nižjih odzivnih časov brez ogrožanja skupne prepustnosti je gostovanje teh modelov na isti instanci skupaj z lahko poslovno logiko, vdelano vanjo. Te modele je mogoče nadalje enkapsulirati znotraj enega ali več vsebnikov na istem primerku, da se zagotovi izolacija za tekoče procese in ohrani nizka zakasnitev. Poleg tega je skupna zakasnitev odvisna tudi od logike aplikacije za sklepanje, optimizacij modela, osnovne infrastrukture (vključno z računalništvom, shranjevanjem in omrežjem) in osnovnega spletnega strežnika, ki sprejema zahteve za sklepanje. NVIDIA Triton Inference Server je odprtokodna programska oprema za sklepanje s funkcijami za povečanje prepustnosti in izkoriščenosti strojne opreme z ultra nizko (enomestno milisekundno) zakasnitvijo sklepanja. Ima široko podporo za ogrodja ML (vključno s TensorFlow, PyTorch, ONNX, XGBoost in NVIDIA TensorRT) in infrastrukturna zaledja, vključno z grafičnimi procesorji, procesorji in Sklepanje AWS. Poleg tega je integriran Triton Inference Server Amazon SageMaker, popolnoma upravljana storitev ML od konca do konca, ki ponuja možnosti sklepanja v realnem času, vključno z sam in več modelov gostovanje. Te možnosti sklepanja vključujejo gostovanje več modelov znotraj istega vsebnika za a ena končna točka, in gostovanje več modelov z več posodami za eno končno točko.
Novembra 2021 smo objavili integracija Triton Inference Server na SageMaker. AWS je tesno sodeloval z NVIDIA, da bi vam omogočil, da dobite najboljše iz obeh svetov in poenostavil uvajanje modela s Tritonom na AWS.
V tej objavi si ogledamo najboljše prakse za uvajanje transformatorskih modelov v velikem obsegu na grafičnih procesorjih z uporabo Triton Inference Server na SageMaker. Najprej začnemo s povzetkom ključnih pojmov o zakasnitvi v SageMakerju in pregledom smernic za uravnavanje zmogljivosti. Nato nudimo pregled Tritona in njegovih funkcij ter primer kode za uvajanje v SageMaker. Nazadnje izvedemo obremenitvene teste z uporabo SageMaker Inference Recommender in povzeti vpoglede in zaključke iz testiranja obremenitve priljubljenega modela transformatorja, ki ga je zagotovil Hugging Face.
Lahko pregledate prenosnik včasih smo sami uvajali modele in izvajali obremenitvene teste z uporabo kode na GitHub.
Uravnavanje zmogljivosti in optimizacija za prikazovanje modelov na SageMakerju
Uravnavanje in optimizacija zmogljivosti je empirični proces, ki pogosto vključuje več ponovitev. Število parametrov za nastavitev je kombinatorno in nabor vrednosti konfiguracijskih parametrov ni neodvisen drug od drugega. Različni dejavniki vplivajo na optimalno uravnavanje parametrov, vključno z velikostjo obremenitve, vrsto in številom modelov ML v grafu toka zahteve za sklepanje, vrsto pomnilnika, vrsto primerka računanja, omrežno infrastrukturo, kodo aplikacije, izvajalnim časom in konfiguracijo programske opreme za streženje sklepanjem in drugo.
Če uporabljate SageMaker za uvajanje modelov ML, morate izbrati računalniško instanco z najboljšim razmerjem med ceno in zmogljivostjo, kar je zapleten in ponavljajoč se postopek, ki lahko traja tedne eksperimentiranja. Najprej morate izbrati pravo vrsto instance ML izmed več kot 70 možnosti, ki temeljijo na zahtevah virov vaših modelov in velikosti vhodnih podatkov. Nato morate optimizirati model za izbrano vrsto primerka. Nazadnje morate zagotoviti in upravljati infrastrukturo za izvajanje obremenitvenih testov in prilagoditev konfiguracije oblaka za optimalno zmogljivost in stroške. Vse to lahko odloži uvedbo modela in čas za trženje. Poleg tega morate oceniti kompromise med zakasnitvijo, prepustnostjo in stroški, da izberete optimalno konfiguracijo uvajanja. SageMaker Inference Recommender samodejno izbere pravo vrsto računske instance, število instanc, parametre vsebnika in optimizacije modela za sklepanje, da poveča prepustnost, zmanjša zakasnitev in zmanjša stroške.
Sklepanje in zakasnitev v realnem času v SageMakerju
Sklepanje SageMaker v realnem času je idealen za delovne obremenitve sklepanja, kjer imate zahteve glede realnega časa, interaktivnosti z nizko zakasnitvijo. Obstajajo štiri najpogosteje uporabljene metrike za spremljanje zakasnitve zahteve sklepanja za končne točke sklepanja SageMaker
- Zakasnitev vsebnika – Čas, potreben za pošiljanje zahteve, pridobivanje odgovora iz vsebnika modela in dokončanje sklepanja v vsebniku. Ta meritev je na voljo v Amazon CloudWatch kot del Metrike priklica izdal SageMaker.
- Zakasnitev modela – Skupni čas, ki ga porabijo vse posode SageMaker v sklepni cevovod. Ta meritev je na voljo v Amazon CloudWatch kot del Metrike priklica izdal SageMaker.
- Zakasnitev nad glavo – Merjeno od časa, ko SageMaker prejme zahtevo, dokler ne vrne odgovora stranki, minus zakasnitev modela. Ta meritev je na voljo v Amazon CloudWatch kot del Metrike priklica izdal SageMaker.
- Zakasnitev od konca do konca – Merjeno od trenutka, ko stranka pošlje zahtevo za sklepanje, dokler ne prejme odgovora. Stranke lahko to objavijo kot meritev po meri v Amazon CloudWatch.
Naslednji diagram prikazuje te komponente.
Zakasnitev vsebnika je odvisna od več dejavnikov; med najpomembnejšimi so naslednji:
- Osnovni protokol (HTTP(s)/gRPC), ki se uporablja za komunikacijo s strežnikom sklepanja
- Stroški, povezani z ustvarjanjem novih povezav TLS
- Čas deserializacije tovora zahteve/odziva
- Funkcije za čakanje v čakalni vrsti in pakete, ki jih zagotavlja osnovni strežnik sklepanja
- Zmožnosti razporejanja zahtev, ki jih zagotavlja osnovni strežnik sklepanja
- Osnovna zmogljivost izvajalnega časa strežnika sklepanja
- Učinkovitost knjižnic za predprocesiranje in naknadno obdelavo pred klicem funkcije napovedovanja modela
- Osnovna zmogljivost zaledja ogrodja ML
- Optimizacije, specifične za model in strojno opremo
V tem prispevku se osredotočamo predvsem na optimizacijo zakasnitve vsebnika skupaj s skupno pretočnostjo in stroški. Natančneje, raziskujemo uravnavanje zmogljivosti Triton Inference Server, ki deluje znotraj vsebnika SageMaker.
Pregled primera uporabe
Uvajanje in spreminjanje modelov NLP v produkcijski postavitvi je lahko precej zahtevno. NLP modeli so pogosto zelo veliki in vsebujejo na milijone parametrov modela. Za izpolnitev strogih zahtev glede zmogljivosti in razširljivosti NLP aplikacij produkcijskega razreda so potrebne optimalne konfiguracije modela.
V tej objavi primerjamo primer uporabe NLP z uporabo končne točke SageMaker v realnem času, ki temelji na vsebniku Triton Inference Server, in priporočamo optimizacije uravnavanja zmogljivosti za naš primer uporabe ML. Uporabljamo veliko, predhodno usposobljeno Hugging Face na osnovi transformatorja BERT velik brez ohišja model, ki ima približno 336 milijonov parametrov modela. Vhodni stavek, uporabljen za binarni klasifikacijski model, je podložen in okrnjen na največjo dolžino vhodnega zaporedja 512 žetonov. Obremenitveni test sklepanja simulira 500 klicev na sekundo (največ 30,000 klicev na minuto) in ModelLatency
manj kot 0.5 sekunde (500 milisekund).
Naslednja tabela povzema našo primerjalno konfiguracijo.
Ime modela | Objemni obraz bert-large-uncased |
Velikost modela | 1.25 GB |
Zahteva po zakasnitvi | 0.5 sekunde (500 milisekund) |
Število klicev na sekundo | 500 zahtev (30,000 na minuto) |
Dolžina vhodnega zaporedja | 512 žetone |
Naloga ML | Binarna klasifikacija |
NVIDIA Triton Inference Server
Triton Inference Server je posebej zasnovan za omogočanje razširljive, hitre in enostavne uvedbe modelov v proizvodnji. Triton podpira vrsto večjih ogrodij AI, vključno s TensorFlow, TensorRT, PyTorch, XGBoost in ONNX. Z zaledjem po meri Python in C++ lahko implementirate svojo delovno obremenitev sklepanja za bolj prilagojene primere uporabe.
Najpomembneje je, da Triton ponuja preprosto nastavitev, ki temelji na konfiguraciji, za gostovanje vaših modelov, ki razkriva bogat nabor funkcij za optimizacijo delovanja, ki jih lahko uporabite z malo truda pri kodiranju.
Triton poveča zmogljivost sklepanja z maksimiranjem izkoriščenosti strojne opreme z različnimi tehnikami optimizacije (najpogosteje uporabljeni so sočasni zagoni modela in dinamično serijsko združevanje). Iskanje optimalnih konfiguracij modela iz različnih kombinacij dinamičnih velikosti paketov in števila sočasnih primerkov modela je ključnega pomena za doseganje sklepanja v realnem času pri nizkocenovnem streženju z uporabo Tritona.
Dinamično doziranje
Mnogi praktiki se nagibajo k izvajanju sklepanja zaporedno, ko je strežnik priklican z več neodvisnimi zahtevami. Čeprav je nastavitev enostavnejša, običajno ni najboljša praksa izkoriščanje računalniške moči GPE. Za rešitev tega problema Triton ponuja vgrajene optimizacije dinamično doziranje združiti te neodvisne zahteve za sklepanje na strani strežnika, da se dinamično oblikuje večja serija za povečanje prepustnosti. Naslednji diagram ponazarja arhitekturo izvajalnega okolja Triton.
V prejšnji arhitekturi vse zahteve najprej dosežejo dinamični dozator, preden vstopijo v dejanske čakalne vrste razporejevalnika modela, da počakajo na sklepanje. Nastavite lahko želene velikosti paketov za dinamično pakiranje z uporabo prednostna_velikost_serije nastavitve v konfiguraciji modela. (Upoštevajte, da mora biti velikost oblikovane serije manjša od max_batch_size model podpira.) Lahko tudi konfigurirate max_queue_delay_microseconds da določite najdaljši čas zakasnitve v dozatorju za čakanje na druge zahteve, da se pridružijo paketu glede na vaše zahteve glede zakasnitve.
Naslednji delček kode prikazuje, kako lahko dodate to funkcijo s konfiguracijskimi datotekami modela, da nastavite dinamično serijsko dodeljevanje s prednostno velikostjo paketa 16 za dejansko sklepanje. S trenutnimi nastavitvami se primerek modela prikliče takoj, ko je dosežena želena velikost paketa 16 ali ko je pretekel čas zakasnitve 100 mikrosekund, odkar je prva zahteva dosegla dinamični dozator.
Sočasno izvajanje modelov
Druga bistvena optimizacija, ki jo ponuja Triton za maksimiranje izkoriščenosti strojne opreme brez dodatnih stroškov zakasnitve, je sočasno izvajanje modela, ki omogoča vzporedno delovanje več modelov ali več kopij istega modela. Ta funkcija omogoča Tritonu, da obravnava več zahtev za sklepanje hkrati, kar poveča prepustnost sklepanja z uporabo drugače nedejavne računalniške moči strojne opreme.
Naslednja slika prikazuje, kako lahko preprosto konfigurirate različne politike uvajanja modela z le nekaj spremembami vrstic kode. Na primer, konfiguracija A (levo) kaže, da lahko oddajate isto konfiguracijo dveh primerkov modela bert-large-uncased
na vse razpoložljive grafične procesorje. Nasprotno pa konfiguracija B (na sredini) prikazuje drugačno konfiguracijo samo za GPE 0, ne da bi spremenila pravilnike za druge GPE. Prav tako lahko uvedete primerke različnih modelov na enem GPE, kot je prikazano v konfiguraciji C (desno).
V konfiguraciji C lahko računska instanca obravnava dve sočasni zahtevi za model DistilGPT-2 in sedem sočasnih zahtev za bert-large-uncased
model vzporedno. S temi optimizacijami je mogoče vire strojne opreme bolje uporabiti za proces strežbe, s čimer se izboljša prepustnost in zagotovi boljša stroškovna učinkovitost za vašo delovno obremenitev.
TensorRT
NVIDIA TensorRT je SDK za visoko zmogljivo sklepanje o globokem učenju, ki brezhibno deluje s Tritonom. TensorRT, ki podpira vsako večje ogrodje globokega učenja, vključuje optimizator sklepanja in izvajalno okolje, ki zagotavlja nizko zakasnitev in visoko prepustnost za izvajanje sklepanja z ogromnimi količinami podatkov prek zmogljivih optimizacij.
TensorRT optimizira graf za zmanjšanje pomnilniškega odtisa tako, da sprosti nepotreben pomnilnik in ga učinkovito ponovno uporabi. Poleg tega kompilacija TensorRT združuje redke operacije znotraj grafa modela, da tvori večje jedro, da se izogne dodatnim stroškom večkratnih zagonov majhnega jedra. Samodejna nastavitev jedra vam pomaga v celoti izkoristiti strojno opremo z izbiro najboljšega algoritma na vaši ciljni grafični procesorji. Tokovi CUDA omogočajo vzporedno izvajanje modelov, da povečate izkoriščenost GPE za najboljšo zmogljivost. Nenazadnje lahko tehnika kvantizacije v celoti uporabi pospeševanje jeder Tensor z mešano natančnostjo za izvajanje modela v FP32, TF32, FP16 in INT8, da doseže najboljšo zmogljivost sklepanja.
Triton na gostovanju SageMaker
Gostovanje SageMaker storitve so nabor funkcij SageMaker, katerih cilj je lažja uvedba in strežba modela. Ponuja različne možnosti za preprosto uvajanje, samodejno prilagajanje, spremljanje in optimizacijo modelov ML, prilagojenih za različne primere uporabe. To pomeni, da lahko svoje uvedbe optimizirate za vse vrste vzorcev uporabe, od trajnih in vedno na voljo z možnostmi brez strežnika do prehodnih, dolgotrajnih ali paketnih potreb po sklepanju.
Pod okriljem gostovanja SageMaker je tudi nabor SageMaker inference Deep Learning Containers (DLC-jev), ki so predpakirani z ustrezno modelno strežniško programsko opremo za njihovo ustrezno podprto ogrodje ML. To vam omogoča, da dosežete visoko zmogljivost sklepanja brez nastavitve strežnika modela, kar je pogosto najbolj zapleten tehnični vidik uvajanja modela in na splošno ni del nabora spretnosti podatkovnega znanstvenika. Triton sklepni strežnik je zdaj Na voljo na SageMaker Deep Learning Containers (DLC).
Zaradi te širine možnosti, modularnosti in enostavne uporabe različnih strežniških okvirov se SageMaker in Triton močno ujemata.
SageMaker Inference Recommender za primerjalne rezultate testov
Za izvajanje naših poskusov uporabljamo SageMaker Inference Recommender. SageMaker Inference Recommender ponuja dve vrsti opravil: privzeto in napredno, kot je prikazano v naslednjem diagramu.
Privzeto opravilo ponuja priporočila o vrstah primerkov samo z modelom in vzorčno koristno obremenitvijo za primerjavo. Poleg priporočil instanc storitev ponuja tudi parametre izvajalnega časa, ki izboljšajo zmogljivost. Priporočila privzetega opravila so namenjena zožitvi iskanja primerkov. V nekaterih primerih je to lahko družina primerkov, v drugih pa posebne vrste primerkov. Rezultati privzetega opravila se nato podajo v napredno opravilo.
Napredno opravilo ponuja več kontrol za nadaljnjo natančno nastavitev delovanja. Te kontrole simulirajo realno okolje in proizvodne zahteve. Med temi kontrolami je prometni vzorec, katerega namen je oblikovati vzorec zahteve za primerjalne vrednosti. Nastavite lahko rampe ali enakomeren promet z uporabo več faz vzorca prometa. Na primer, an Začetno ŠteviloUporabnikov 1, SpawnRate od 1 in Trajanje v sekundah 600 lahko povzroči 10-minutni promet z 1 sočasnim uporabnikom na začetku in 10 na koncu. Poleg tega na krmilnikih MaxInvocations in ModelLatencyThresholds nastavite prag proizvodnje, tako da se primerjalna analiza ustavi, ko je eden od pragov presežen.
Končno, priporočilne meritve vključujejo prepustnost, zakasnitev pri največji prepustnosti in ceno na sklepanje, tako da jih je enostavno primerjati.
Uporabljamo napredno vrsto opravila SageMaker Inference Recommender za izvajanje naših poskusov za pridobitev dodatnega nadzora nad prometnimi vzorci in natančno nastavitev konfiguracije servirnega vsebnika.
Postavitev eksperimenta
Za primerjavo profila NLP, opisanega v našem primeru uporabe, uporabljamo funkcijo preskusa obremenitve po meri programa SageMaker Inference Recommender. Najprej definiramo naslednje predpogoje, povezane z modelom NLP in nalogo ML. SageMaker Inference Recommender uporablja te informacije za pridobivanje sklepne slike Docker iz Registar elastičnih zabojnikov Amazon (Amazon ECR) in registrirajte model v registru modelov SageMaker.
Domena | NATURAL_LANGUAGE_PROCESSING |
Naloga | FILL_MASK |
Okvirni | PYTORCH: 1.6.0 |
Model | bert-large-uncased |
Konfiguracije prometnih vzorcev v SageMaker Inference Recommender nam omogočajo, da definiramo različne faze za preizkus obremenitve po meri. Obremenitveni preizkus se začne z dvema začetnima uporabnikoma in vsako minuto ustvari dva nova uporabnika v skupnem trajanju 25 minut (1500 sekund), kot je prikazano v naslednji kodi:
Eksperimentiramo z obremenitvenim testiranjem istega modela v dveh različnih stanjih. Poskusi, ki temeljijo na PyTorchu, uporabljajo standardni, nespremenjeni model PyTorch. Za poskuse, ki temeljijo na TensorRT, model PyTorch predhodno pretvorimo v motor TensorRT.
Na teh dveh modelih uporabljamo različne kombinacije funkcij za optimizacijo zmogljivosti, ki so povzete v naslednji tabeli.
Ime konfiguracije | Opis konfiguracije | Konfiguracija modela |
pt-base |
Osnovna linija PyTorch | Osnovni model PyTorch, brez sprememb |
pt-db |
PyTorch z dinamičnim razporeditvijo | dynamic_batching {} |
pt-ig |
PyTorch z več primerki modela | instance_group [ { count: 2 kind: KIND_GPU } ] |
pt-ig-db |
PyTorch z več instancami modela in dinamičnim paketom | dynamic_batching {}, instance_group [ { count: 2 kind: KIND_GPU } ] |
trt-base |
Osnovna linija TensorRT | Model PyTorch, preveden s TensoRT trtexec pripomoček |
trt-db |
TensorRT z dinamičnim razporeditvijo | dynamic_batching {} |
trt-ig |
TensorRT z več primerki modela | instance_group [ { count: 2 kind: KIND_GPU } ] |
trt-ig-db |
TensorRT z več instancami modela in dinamičnim paketom | dynamic_batching {}, instance_group [ { count: 2 kind: KIND_GPU } ] |
Rezultati testov in opažanja
Izvedli smo obremenitvene teste za tri vrste primerkov znotraj iste družine g4dn: ml.g4dn.xlarge, ml.g4dn.2xlarge in ml.g4dn.12xlarge. Vse vrste primerkov g4dn imajo dostop do grafičnih procesorjev NVIDIA T4 Tensor Core in procesorjev Intel Cascade Lake 2. generacije. Logika v ozadju izbire vrst instanc je bila imeti na voljo tako instanco s samo enim GPE-jem, kot tudi instanco z dostopom do več GPU-jev – štirih v primeru ml.g4dn.12xlarge. Poleg tega smo želeli preizkusiti, ali bi povečanje zmogljivosti vCPE na instanci s samo enim razpoložljivim GPE prineslo izboljšanje razmerja med ceno in zmogljivostjo.
Najprej poglejmo pospešitev posamezne optimizacije. Naslednji graf prikazuje, da optimizacija TensorRT zagotavlja 50-odstotno zmanjšanje zakasnitve modela v primerjavi z izvornim v PyTorchu na instanci ml.g4dn.xlarge. To zmanjšanje zakasnitve se poveča na več kot trikrat na primerkih ml.g4dn.12xlarge z več grafičnimi procesorji. Medtem je 30-odstotno izboljšanje prepustnosti dosledno na obeh primerih, kar ima za posledico večjo stroškovno učinkovitost po uporabi optimizacij TensorRT.
Z dinamičnim razporeditvijo se lahko približamo 2-kratnemu izboljšanju prepustnosti z uporabo iste arhitekture strojne opreme na vseh eksperimentalnih primerkih ml.g4dn.xlarge, ml.g4dn.2xlarge in ml.g4dn.12xlarge brez opaznega povečanja zakasnitve.
Podobno nam sočasno izvajanje modela omogoča približno 3-4-kratno izboljšanje prepustnosti z maksimiranjem izkoriščenosti GPE na primerku ml.g4dn.xlarge in približno 2-kratno izboljšanje tako na primerku ml.g4dn.2xlarge kot na primerku ml z več GPE. g4dn.12xlarge.. To povečanje prepustnosti prihaja brez dodatnih stroškov v zakasnitvi.
Še bolje, lahko integriramo vse te optimizacije, da zagotovimo najboljšo zmogljivost z uporabo virov strojne opreme v največji možni meri. Naslednja tabela in grafi povzemajo rezultate, ki smo jih dobili v naših poskusih.
Ime konfiguracije | Optimizacija modela |
Dinamična Serijska serija |
Konfiguracija skupine primerkov | Vrsta primerka | vCPU | Grafične kartice |
Pomnilnik GPU (GB) |
Začetno število primerkov[1] | Priklici na minuto na primer | Zakasnitev modela | Cena na uro[2] |
pt-osnova | NA | Ne | NA | ml.g4dn.xlarge | 4 | 1 | 16 | 62 | 490 | 1500 | 45.6568 |
pt-db | NA | Da | NA | ml.g4dn.xlarge | 4 | 1 | 16 | 57 | 529 | 1490 | 41.9748 |
pt-ig | NA | Ne | 2 | ml.g4dn.xlarge | 4 | 1 | 16 | 34 | 906 | 868 | 25.0376 |
pt-ig-db | NA | Da | 2 | ml.g4dn.xlarge | 4 | 1 | 16 | 34 | 892 | 1158 | 25.0376 |
trt-osnova | TensorRT | Ne | NA | ml.g4dn.xlarge | 4 | 1 | 16 | 47 | 643 | 742 | 34.6108 |
trt-db | TensorRT | Da | NA | ml.g4dn.xlarge | 4 | 1 | 16 | 28 | 1078 | 814 | 20.6192 |
trt-ig | TensorRT | Ne | 2 | ml.g4dn.xlarge | 4 | 1 | 16 | 14 | 2202 | 1273 | 10.3096 |
trt-db-ig | TensorRT | Da | 2 | ml.g4dn.xlarge | 4 | 1 | 16 | 10 | 3192 | 783 | 7.364 |
pt-osnova | NA | Ne | NA | ml.g4dn.2xvelik | 8 | 1 | 32 | 56 | 544 | 1500 | 52.64 |
pt-db | NA | Da | NA | ml.g4dn.2xvelik | 8 | 1 | 32 | 59 | 517 | 1500 | 55.46 |
pt-ig | NA | Ne | 2 | ml.g4dn.2xvelik | 8 | 1 | 32 | 29 | 1054 | 960 | 27.26 |
pt-ig-db | NA | Da | 2 | ml.g4dn.2xvelik | 8 | 1 | 32 | 30 | 1017 | 992 | 28.2 |
trt-osnova | TensorRT | Ne | NA | ml.g4dn.2xvelik | 8 | 1 | 32 | 42 | 718 | 1494 | 39.48 |
trt-db | TensorRT | Da | NA | ml.g4dn.2xvelik | 8 | 1 | 32 | 23 | 1335 | 499 | 21.62 |
trt-ig | TensorRT | Ne | 2 | ml.g4dn.2xvelik | 8 | 1 | 32 | 23 | 1363 | 1017 | 21.62 |
trt-db-ig | TensorRT | Da | 2 | ml.g4dn.2xvelik | 8 | 1 | 32 | 22 | 1369 | 963 | 20.68 |
pt-osnova | NA | Ne | NA | ml.g4dn.12xvelik | 48 | 4 | 192 | 15 | 2138 | 906 | 73.35 |
pt-db | NA | Da | NA | ml.g4dn.12xvelik | 48 | 4 | 192 | 15 | 2110 | 907 | 73.35 |
pt-ig | NA | Ne | 2 | ml.g4dn.12xvelik | 48 | 4 | 192 | 8 | 3862 | 651 | 39.12 |
pt-ig-db | NA | Da | 2 | ml.g4dn.12xvelik | 48 | 4 | 192 | 8 | 3822 | 642 | 39.12 |
trt-osnova | TensorRT | Ne | NA | ml.g4dn.12xvelik | 48 | 4 | 192 | 11 | 2892 | 279 | 53.79 |
trt-db | TensorRT | Da | NA | ml.g4dn.12xvelik | 48 | 4 | 192 | 6 | 5356 | 278 | 29.34 |
trt-ig | TensorRT | Ne | 2 | ml.g4dn.12xvelik | 48 | 4 | 192 | 6 | 5210 | 328 | 29.34 |
trt-db-ig | TensorRT | Da | 2 | ml.g4dn.12xvelik | 48 | 4 | 192 | 6 | 5235 | 439 | 29.34 |
[1] Začetno število primerkov v zgornji tabeli je priporočeno število primerkov za uporabo s pravilnikom o samodejnem skaliranju za vzdrževanje zahtev glede prepustnosti in zakasnitve za vašo delovno obremenitev.
[2] Cena na uro v zgornji tabeli je izračunana na podlagi začetnega števila instanc in cene za vrsto instance.
Rezultati večinoma potrjujejo učinek, ki je bil pričakovan od različnih funkcij optimizacije delovanja:
- Kompilacija TensorRT ima najzanesljivejši vpliv na vse vrste primerkov. Transakcije na minuto na instanco so se povečale za 30–35 % z doslednim znižanjem stroškov za približno 25 % v primerjavi z zmogljivostjo motorja TensorRT na privzeti PyTorch BERT (
pt-base
). Povečano zmogljivost motorja TensorRT dopolnjujejo in izkoriščajo druge preizkušene funkcije za prilagajanje zmogljivosti. - Nalaganje dveh modelov na vsako GPE (skupina primerkov) je skoraj strogo podvojilo vse izmerjene meritve. Število klicev na minuto na instanco se je povečalo za približno 80–90 %, kar je povzročilo znižanje stroškov v obsegu 50 %, skoraj tako, kot če bi uporabljali dva GPU-ja. Pravzaprav, amazoncloudwatch metrike za naše poskuse na g4dn.2xlarge (kot primer) potrjujejo, da se izkoriščenost procesorja in GPU podvojita, ko konfiguriramo skupino primerkov dveh modelov.
Dodatni nasveti za učinkovitost in optimizacijo stroškov
Primerjalno merilo, predstavljeno v tej objavi, je samo opraskalo površino možnih funkcij in tehnik, ki jih lahko uporabite s Tritonom za izboljšanje zmogljivosti sklepanja. Te segajo od tehnik predhodne obdelave podatkov, kot je pošiljanje binarnih koristnih obremenitev modelnemu strežniku ali koristnih obremenitev z večjimi serijami, do izvornih funkcij Tritona, kot so naslednje:
- Ogrevanje modela, ki preprečuje začetne, počasne zahteve po sklepanju s popolno inicializacijo modela, preden je prejeta prva zahteva za sklepanje.
- Predpomnilnik odgovorov, ki predpomni ponavljajoče se zahteve.
- Sestava modela, ki vam omogoča ustvarjanje cevovoda enega ali več modelov ter povezavo vhodnih in izhodnih tenzorjev med temi modeli. To odpira možnost dodajanja korakov predhodne in naknadne obdelave ali celo sklepanja z drugimi modeli v potek obdelave za vsako zahtevo.
Pričakujemo, da bomo te tehnike in funkcije preizkusili in primerjali v prihodnji objavi, zato ostanite z nami!
zaključek
V tej objavi smo raziskali nekaj parametrov, ki jih lahko uporabite za povečanje učinkovitosti vaše realnočasovne končne točke SageMaker za streženje modelov PyTorch BERT s Triton Inference Server. Uporabili smo SageMaker Inference Recommender za izvedbo primerjalnih testov za natančno nastavitev teh parametrov. Ti parametri so v bistvu povezani z optimizacijo modela, ki temelji na TensorRT, kar vodi do skoraj 50-odstotnega izboljšanja odzivnih časov v primerjavi z neoptimizirano različico. Poleg tega je sočasno izvajanje modelov in uporaba dinamičnega doziranja Tritona povzročilo skoraj 70-odstotno povečanje pretoka. Natančna nastavitev teh parametrov je vodila tudi do splošnega zmanjšanja stroškov sklepanja.
Najboljši način za pridobivanje pravilnih vrednosti je eksperimentiranje. Če pa želite začeti graditi empirično znanje o prilagajanju in optimizaciji zmogljivosti, lahko opazujete kombinacije različnih parametrov, povezanih s Tritonom, in njihov učinek na zmogljivost v modelih ML in primerkih ML SageMaker.
SageMaker ponuja orodja za odstranitev nediferenciranega težkega dela iz vsake stopnje življenjskega cikla ML, s čimer olajša hitro eksperimentiranje in raziskovanje, potrebno za popolno optimizacijo uvajanja vaših modelov.
Prenosni računalnik, uporabljen za testiranje obremenitve in uvajanje, najdete na GitHub. Posodobite lahko konfiguracije Triton in nastavitve SageMaker Inference Recommender, da bodo najbolje ustrezale vašemu primeru uporabe, da boste dosegli stroškovno učinkovite in najuspešnejše delovne obremenitve sklepanja.
O avtorjih
Vikram Elango je specialist za rešitve AI/ML pri Amazon Web Services s sedežem v Virginiji, ZDA. Vikram pomaga strankam v finančni in zavarovalniški industriji z oblikovanjem, miselnim vodstvom za izdelavo in uvajanje aplikacij strojnega učenja v velikem obsegu. Trenutno je osredotočen na obdelavo naravnega jezika, odgovorno umetno inteligenco, optimizacijo sklepanja in skaliranje ML v podjetju. V prostem času uživa v potovanjih, pohodništvu, kuhanju in kampiranju z družino.
João Moura je specialist za rešitve AI/ML pri Amazon Web Services. Večinoma se osredotoča na primere uporabe NLP in pomaga strankam optimizirati usposabljanje in uvajanje modela globokega učenja. Je tudi aktiven zagovornik rešitev ML z nizko kodo in strojne opreme, specializirane za ML.
Mohan Gandhi je višji programski inženir pri AWS. Z AWS je zaposlen zadnjih 9 let in je delal na različnih storitvah AWS, kot so EMR, EFA in RDS na Outposts. Trenutno je osredotočen na izboljšanje SageMaker Inference Experience. V prostem času se ukvarja s pohodništvom in tekom maratonov.
Dhawal Patel je glavni arhitekt strojnega učenja pri AWS. Sodeloval je z organizacijami, od velikih podjetij do srednje velikih zagonskih podjetij, pri problemih, povezanih s porazdeljenim računalništvom in umetno inteligenco. Osredotoča se na poglobljeno učenje, vključno s področja NLP in računalniškega vida. Strankam pomaga doseči visoko zmogljivo sklepanje o modelih na SageMakerju.
Santosh Bhavani je višji tehnični vodja izdelkov pri skupini Amazon SageMaker Elastic Inference. Osredotoča se na pomoč strankam SageMakerja, da pospešijo sklepanje in uvajanje modelov. V prostem času rad potuje, igra tenis in pije veliko Pu'er čaja.
Jiahong Liu je arhitekt rešitve v skupini ponudnikov storitev v oblaku pri NVIDIA. Strankam pomaga pri sprejemanju rešitev strojnega učenja in umetne inteligence, ki izkoriščajo pospešeno računalništvo NVIDIA za reševanje njihovih izzivov pri usposabljanju in sklepanju. V prostem času uživa v origamiju, DIY projektih in igra košarko.
- Coinsmart. Najboljša evropska borza bitcoinov in kriptovalut.
- Platoblockchain. Web3 Metaverse Intelligence. Razširjeno znanje. PROST DOSTOP.
- CryptoHawk. Altcoin radar. Brezplačen preizkus.
- Vir: https://aws.amazon.com/blogs/machine-learning/achieve-hyperscale-performance-for-model-serving-using-nvidia-triton-inference-server-on-amazon-sagemaker/
- "
- 000
- 10
- 100
- 2021
- 70
- 77
- 84
- 9
- O meni
- pospeši
- pospešeno
- dostop
- čez
- aktivna
- Poleg tega
- Dodatne
- Naslov
- napredno
- AI
- algoritem
- vsi
- Čeprav
- Amazon
- Amazon Web Services
- med
- razglasitve
- uporaba
- aplikacije
- Uporaba
- primerno
- približno
- Arhitektura
- okoli
- umetni
- Umetna inteligenca
- Pomočnik
- avto
- Na voljo
- AWS
- Košarka
- Začetek
- merilo
- BEST
- najboljše prakse
- izgradnjo
- Building
- vgrajeno
- poslovni
- Lahko dobiš
- Zmogljivosti
- kapaciteta
- primeri
- izzivi
- izziv
- Izberite
- Razvrstitev
- stranke
- Cloud
- Koda
- Kodiranje
- kombinacije
- kako
- Skupno
- v primerjavi z letom
- popolnoma
- kompleksna
- ogrozili
- Izračunajte
- računalnik
- računalništvo
- konfiguracija
- povezava
- Posoda
- Zabojniki
- nadzor
- Core
- Ustrezno
- stroškovno učinkovito
- bi
- ustvarjajo
- Ustvarjanje
- Trenutna
- Trenutno
- po meri
- stranka
- Izkušnje s strankami
- Pomoč strankam
- Stranke, ki so
- datum
- zamuda
- daje
- odvisno
- razporedi
- uvajanja
- uvajanje
- razmestitve
- Oblikovanje
- zasnovan
- drugačen
- porazdeljena
- porazdeljeno računalništvo
- Naredi sam
- Lučki delavec
- domen
- podvojila
- navzdol
- pogon
- dinamično
- enostavno
- učinek
- učinkovito
- prizadevanje
- omogočajo
- Končna točka
- Motor
- inženir
- Podjetje
- okolje
- Bistvo
- bistvena
- oceniti
- evolucija
- Primer
- izvedba
- pričakovati
- Pričakuje
- izkušnje
- poskus
- raziskovanje
- raziskuje
- Obraz
- dejavniki
- družina
- Feature
- Lastnosti
- Fed
- Slika
- končno
- finančna
- iskanje
- prva
- fit
- Pretok
- Osredotočite
- osredotočena
- Osredotoča
- po
- Odtis
- obrazec
- Okvirni
- nadalje
- Prihodnost
- splošno
- generacija
- GPU
- skupina
- Smernice
- strojna oprema
- višina
- pomoč
- Pomaga
- visoka
- gostila
- gostovanje
- Kako
- HTTPS
- slika
- vpliv
- izvajati
- Pomembno
- izboljšanje
- vključujejo
- vključuje
- Vključno
- Povečajte
- povečal
- narašča
- individualna
- Industrija
- Podatki
- Infrastruktura
- vhod
- vpogledi
- zavarovanje
- integrirati
- integrirana
- integracija
- Intel
- Intelligence
- interakcije
- interaktivno
- izolacija
- IT
- Job
- Delovna mesta
- pridružite
- Ključne
- znanje
- jezik
- velika
- večja
- izstrelki
- Vodstvo
- vodi
- Interesenti
- učenje
- Led
- Vzvod
- dviganje
- lahek
- malo
- obremenitev
- Long
- stroj
- strojno učenje
- vzdrževati
- velika
- IZDELA
- Izdelava
- upravljanje
- upravlja
- upravitelj
- Tržna
- ogromen
- Stave
- Spomin
- Meritve
- milijonov
- milijoni
- ML
- Model
- modeli
- monitor
- spremljanje
- več
- Najbolj
- več
- naravna
- mreža
- mreženje
- prenosnik
- Številka
- pridobljeni
- ponujen
- Ponudbe
- Odpre
- operacije
- optimizacija
- Optimizirajte
- optimizacijo
- možnosti
- Da
- organizacije
- Ostalo
- drugače
- Splošni
- lastne
- Vzorec
- performance
- igranje
- politike
- politika
- slaba
- Popular
- možnost
- mogoče
- moč
- močan
- praksa
- napoved
- Cena
- , ravnateljica
- Težave
- Postopek
- Procesi
- obravnavati
- Izdelek
- proizvodnja
- profil
- projekti
- protokol
- zagotavljajo
- zagotavlja
- zagotavljanje
- objavijo
- Ramp
- območje
- obsegu
- dosežejo
- v realnem času
- prejetih
- Priporočamo
- zmanjša
- Registracija
- zahteva
- zahteva
- zahteva
- obvezna
- Zahteve
- vir
- viri
- Odgovor
- odgovorna
- Rezultati
- vrne
- pregleda
- Run
- tek
- Prilagodljivost
- razširljive
- Lestvica
- skaliranje
- SDK
- brez težav
- Iskalnik
- sekund
- izbran
- Brez strežnika
- Storitev
- Storitve
- služijo
- nastavite
- nastavitev
- Enostavno
- Velikosti
- majhna
- So
- Software
- Software Engineer
- Rešitev
- rešitve
- nekaj
- specialist
- posebej
- Stage
- standardna
- Začetek
- začne
- Ustanavljanjem
- Država
- Države
- bivanje
- shranjevanje
- podpora
- Podprti
- Podpira
- Površina
- ob
- ciljna
- skupina
- tehnični
- tehnike
- Test
- Testiranje
- testi
- miselno vodstvo
- skozi
- čas
- Boni
- orodja
- Sledenje
- Prometa
- usposabljanje
- Transakcije
- Potovanje
- Nadgradnja
- us
- ZDA
- uporaba
- primeri uporabe
- Uporabniki
- navadno
- uporabiti
- Uporaben
- raznolikost
- različnih
- Virginia
- Virtual
- Vizija
- Počakaj
- hotel
- web
- spletni strežnik
- spletne storitve
- v
- brez
- delal
- deluje
- svetu
- bi
- let
- donos
- Mehek