Pri uvajanju modelov globokega učenja v velikem obsegu je ključnega pomena učinkovita uporaba osnovne strojne opreme za povečanje zmogljivosti in stroškovnih ugodnosti. Za proizvodne delovne obremenitve, ki zahtevajo visoko prepustnost in nizko zakasnitev, je izbor Amazonski elastični računalniški oblak Primerek (EC2), sklad za streženje modela in arhitektura uvajanja so zelo pomembni. Neučinkovita arhitektura lahko povzroči neoptimalno izkoriščenost pospeševalnikov in nepotrebno visoke proizvodne stroške.
V tej objavi vas vodimo skozi postopek uvajanja strežnikov modela FastAPI na napravah AWS Inferentia (najdete jih na Amazon EC2 Inf1 in Amazon EC Inf2 primerki). Predstavimo tudi gostovanje vzorčnega modela, ki je nameščen vzporedno v vseh NeuronCores za največji izkoristek strojne opreme.
Pregled rešitev
FastAPI je odprtokodno spletno ogrodje za streženje aplikacij Python, ki je veliko hitrejše od tradicionalnih ogrodij, kot sta Flask in Django. Uporablja an Vmesnik prehoda za asinhroni strežnik (ASGI) namesto široko uporabljenega Vmesnik prehoda spletnega strežnika (WSGI). ASGI obdela dohodne zahteve asinhrono v nasprotju z WSGI, ki zahteve obdela zaporedno. Zaradi tega je FastAPI idealna izbira za obravnavanje zahtev, občutljivih na zakasnitev. FastAPI lahko uporabite za uvedbo strežnika, ki gosti končno točko na instancah Inferentia (Inf1/Inf2), ki posluša zahteve odjemalcev prek določenih vrat.
Naš cilj je doseči najvišjo zmogljivost z najnižjimi stroški z maksimalno uporabo strojne opreme. To nam omogoča, da obravnavamo več zahtev za sklepanje z manj pospeševalci. Vsaka naprava AWS Inferentia1 vsebuje štiri NeuronCores-v1 in vsaka naprava AWS Inferentia2 vsebuje dva NeuronCores-v2. The AWS nevron SDK nam omogoča vzporedno uporabo vsakega od NeuronCores, kar nam daje več nadzora pri vzporednem nalaganju in sklepanju štirih ali več modelov brez žrtvovanja prepustnosti.
S FastAPI lahko izbirate med spletnim strežnikom Python (gunicorn, Uvicorn, Hiperkorn, Daphne). Ti spletni strežniki zagotavljajo plast abstrakcije na vrhu osnovnega modela strojnega učenja (ML). Stranka, ki zahteva, ima to prednost, da se ne zaveda gostujočega modela. Stranki ni treba poznati imena ali različice modela, ki je bil nameščen v strežniku; ime končne točke je zdaj samo proxy za funkcijo, ki naloži in zažene model. Nasprotno pa sta v strežnem orodju, specifičnem za okvir, kot je TensorFlow Serving, ime modela in različica del imena končne točke. Če se model spremeni na strani strežnika, mora odjemalec vedeti in ustrezno spremeniti svoj klic API na novo končno točko. Če torej nenehno razvijate modele različic, na primer v primeru testiranja A/B, je uporaba generičnega spletnega strežnika Python s FastAPI priročen način za streženje modelov, ker je ime končne točke statično.
Vloga strežnika ASGI je ustvariti določeno število delavcev, ki poslušajo zahteve odjemalcev in izvajajo sklepno kodo. Pomembna zmogljivost strežnika je zagotoviti, da je zahtevano število delavcev na voljo in aktivno. V primeru, da je delavec uničen, mora strežnik zagnati novega delavca. V tem kontekstu so lahko strežnik in delavci identificirani s svojim ID-jem procesa Unix (PID). Za to objavo uporabljamo a Hiperkorn strežnik, ki je priljubljena izbira za spletne strežnike Python.
V tej objavi delimo najboljše prakse za uvajanje modelov globokega učenja s FastAPI na AWS Inferentia NeuronCores. Pokažemo, da lahko uvedete več modelov na ločenih NeuronCores, ki jih je mogoče klicati hkrati. Ta nastavitev poveča prepustnost, ker je mogoče sklepati o več modelih hkrati in je uporaba NeuronCore popolnoma optimizirana. Kodo lahko najdete na GitHub repo. Naslednja slika prikazuje arhitekturo, kako nastaviti rešitev na primerku EC2 Inf2.
Ista arhitektura velja za vrsto primerka EC2 Inf1, le da ima štiri jedra. To torej nekoliko spremeni arhitekturni diagram.
AWS Inferentia NeuronCores
Poglobimo se v orodja, ki jih nudi AWS Neuron za sodelovanje z NeuronCores. Naslednje tabele prikazujejo število NeuronCores v vsaki vrsti primerka Inf1 in Inf2. Gostiteljski vCPU-ji in sistemski pomnilnik si delijo vsi razpoložljivi NeuronCores.
Velikost primerka | # Inferentia Accelerators | # NeuronCores-v1 | vCPU | Pomnilnik (GiB) |
Inf1.xlarge | 1 | 4 | 4 | 8 |
Inf1.2xvelika | 1 | 4 | 8 | 16 |
Inf1.6xvelika | 4 | 16 | 24 | 48 |
Inf1.24xvelika | 16 | 64 | 96 | 192 |
Velikost primerka | # Inferentia Accelerators | # NeuronCores-v2 | vCPU | Pomnilnik (GiB) |
Inf2.xlarge | 1 | 2 | 4 | 32 |
Inf2.8xvelika | 1 | 2 | 32 | 32 |
Inf2.24xvelika | 6 | 12 | 96 | 192 |
Inf2.48xvelika | 12 | 24 | 192 | 384 |
Primerki Inf2 vsebujejo nov NeuronCores-v2 v primerjavi z NeuronCore-v1 v primerkih Inf1. Kljub manjšemu številu jeder lahko ponudijo 4-krat večjo prepustnost in 10-krat nižjo zakasnitev kot primerki Inf1. Primerki Inf2 so idealni za delovne obremenitve globokega učenja, kot so Generative AI, Large Language Models (LLM) v družini OPT/GPT in pretvorniki vida, kot je Stable Diffusion.
Neuron Runtime je odgovoren za izvajanje modelov na napravah Neuron. Neuron Runtime določa, kateri NeuronCore bo izvajal kateri model in kako ga izvajati. Konfiguracija Neuron Runtime je nadzorovana z uporabo spremenljivke okolja na procesni ravni. Privzeto bodo razširitve ogrodja Neuron poskrbele za konfiguracijo Neuron Runtime v imenu uporabnika; vendar so možne tudi eksplicitne konfiguracije za doseganje bolj optimiziranega obnašanja.
Dve priljubljeni spremenljivki okolja sta NEURON_RT_NUM_CORES
in NEURON_RT_VISIBLE_CORES
. S temi spremenljivkami okolja je mogoče procese Python povezati z NeuronCore. z NEURON_RT_NUM_CORES
, lahko določeno število jeder rezervirate za proces in z NEURON_RT_VISIBLE_CORES
, je mogoče rezervirati vrsto NeuronCores. na primer NEURON_RT_NUM_CORES=2 myapp.py
bo rezerviral dve jedri in NEURON_RT_VISIBLE_CORES=’0-2’ myapp.py
bo rezerviral nič, eno in dve jedri za myapp.py
. NeuronCores lahko rezervirate tudi med napravami (čipi AWS Inferentia). Torej, NEURON_RT_VISIBLE_CORES=’0-5’ myapp.py
bo rezerviral prva štiri jedra naprej device1
in eno jedro naprej device2
v vrsti primerka Ec2 Inf1. Podobno bo na vrsti primerka EC2 Inf2 ta konfiguracija rezervirala dve jedri čez device1
in device2
in eno jedro naprej device3
. Naslednja tabela povzema konfiguracijo teh spremenljivk.
Ime | Opis | tip | Pričakovane vrednosti | Privzeta vrednost | Različica RT |
NEURON_RT_VISIBLE_CORES |
Razpon specifičnih NeuronCores, ki jih potrebuje proces | Celo število (npr. 1-3) | Katera koli vrednost ali obseg med 0 in Max NeuronCore v sistemu | Noben | 2.0 + |
NEURON_RT_NUM_CORES |
Število NeuronCores, ki jih zahteva postopek | Integer | Vrednost od 1 do Max NeuronCore v sistemu | 0, ki se interpretira kot "vse" | 2.0 + |
Za seznam vseh spremenljivk okolja glejte Konfiguracija Neuron Runtime.
Pri nalaganju modelov se modeli privzeto naložijo v NeuronCore 0 in nato v NeuronCore 1, razen če ni izrecno navedeno v predhodnih spremenljivkah okolja. Kot je navedeno prej, NeuronCores delijo razpoložljive gostiteljske vCPU-je in sistemski pomnilnik. Zato bodo modeli, nameščeni na vsakem NeuronCore, tekmovali za razpoložljive vire. To ne bo težava, če model v veliki meri uporablja NeuronCores. Če pa se model izvaja samo delno na NeuronCores, preostanek pa na gostiteljskih vCPU-jih, postane upoštevanje razpoložljivosti CPE-ja na NeuronCore pomembno. To vpliva tudi na izbiro primerka.
Naslednja tabela prikazuje število gostiteljskih vCPU-jev in sistemskega pomnilnika, ki je na voljo na model, če je bil v vsak NeuronCore nameščen en model. Glede na uporabo NeuronCore, vCPU in porabo pomnilnika vaše aplikacije je priporočljivo izvesti teste, da ugotovite, katera konfiguracija je najbolj zmogljiva za vašo aplikacijo. The Orodje Neuron Top lahko pomaga pri vizualizaciji uporabe jedra ter uporabe pomnilnika naprave in gostitelja. Na podlagi teh meritev je mogoče sprejeti informirano odločitev. Na koncu tega bloga prikazujemo uporabo Neuron Top.
Velikost primerka | # Inferentia Accelerators | # Modeli | vCPE/model | Pomnilnik/model (GiB) |
Inf1.xlarge | 1 | 4 | 1 | 2 |
Inf1.2xvelika | 1 | 4 | 2 | 4 |
Inf1.6xvelika | 4 | 16 | 1.5 | 3 |
Inf1.24xvelika | 16 | 64 | 1.5 | 3 |
Velikost primerka | # Inferentia Accelerators | # Modeli | vCPE/model | Pomnilnik/model (GiB) |
Inf2.xlarge | 1 | 2 | 2 | 8 |
Inf2.8xvelika | 1 | 2 | 16 | 64 |
Inf2.24xvelika | 6 | 12 | 8 | 32 |
Inf2.48xvelika | 12 | 24 | 8 | 32 |
Če želite sami preizkusiti funkcije Neuron SDK, si oglejte najnovejše Zmogljivosti nevronov za PyTorch.
Sistemska nastavitev
Za to rešitev je uporabljena naslednja sistemska nastavitev:
Nastavite rešitev
Za nastavitev rešitve moramo narediti nekaj stvari. Začnite tako, da ustvarite vlogo IAM, ki jo bo vaš primerek EC2 prevzel, kar ji bo omogočilo potiskanje in vlečenje Registar elastičnih zabojnikov Amazon.
1. korak: Nastavite vlogo IAM
- Začnite tako, da se prijavite v konzolo in odprete IAM > Vloge > Ustvari vlogo
- Izberite vrsto zaupanja vredne entitete
AWS Service
- Izberite EC2 kot storitev v primeru uporabe
- klik Naslednji in videli boste lahko vse pravilnike, ki so na voljo
- Za namene te rešitve bomo našemu primerku EC2 omogočili popoln dostop do ECR. Filter za AmazonEC2ContainerRegistryFullAccess in jo izberite.
- Pritisnite Naprej in poimenujte vlogo
inf-ecr-access
Opomba: pravilnik, ki smo ga priložili, daje primerku EC2 popoln dostop do Amazon ECR. Močno priporočamo, da sledite principal najmanjših privilegijev za proizvodne delovne obremenitve.
2. korak: Nastavite AWS CLI
Če uporabljate zgoraj naveden predpisani AMI za poglobljeno učenje, ima nameščen AWS CLI. Če uporabljate drug AMI (Amazon Linux 2023, Base Ubuntu itd.), namestite orodja CLI tako, da sledite ta vodnik.
Ko imate nameščena orodja CLI, konfigurirajte CLI z ukazom aws configure
. Če imate ključe za dostop, jih lahko dodate tukaj, vendar jih ne potrebujete nujno za interakcijo s storitvami AWS. Za to se zanašamo na vloge IAM.
Opombe: Vnesti moramo vsaj eno vrednost (privzeto regijo ali privzeto obliko), da ustvarimo privzeti profil. Za ta primer gremo z us-east-2
kot regija in json
kot privzeti izhod.
Klonirajte repozitorij Github
O GitHub repo ponuja vse skripte, potrebne za uvajanje modelov z uporabo FastAPI na NeuronCores na primerkih AWS Inferentia. Ta primer uporablja vsebnike Docker, da zagotovi, da lahko ustvarimo rešitve za večkratno uporabo. V ta primer je vključeno naslednje config.properties datoteko, v katero lahko uporabniki vnesejo vnose.
Konfiguracijska datoteka potrebuje uporabniško določene predpone imen za sliko Docker in vsebnike Docker. The build.sh
scenarij v fastapi
in trace-model
mape uporabljajo to za ustvarjanje slik Docker.
Sestavite model na AWS Inferentia
Začeli bomo s sledenjem modela in izdelavo datoteke PyTorch Torchscript .pt. Začnite z dostopom trace-model
in spreminjanje datoteke .env. Odvisno od vrste primerka, ki ste ga izbrali, spremenite CHIP_TYPE
znotraj .env
mapa. Kot primer bomo za vodilo izbrali Inf2. Isti koraki veljajo za postopek uvajanja za Inf1.
Nato nastavite privzeto regijo v isti datoteki. Ta regija bo uporabljena za ustvarjanje repozitorija ECR in slike Docker bodo potisnjene v to repozitorij. Tudi v tej mapi nudimo vse skripte, potrebne za sledenje a bert-base-uncased
model na AWS Inferentia. Ta skript bi lahko uporabili za večino modelov, ki so na voljo na Objemni obraz. Dockerfile ima vse odvisnosti za izvajanje modelov z Neuronom in izvaja trace-model.py kodo kot vstopno točko.
Razložena kompilacija nevronov
API Neuron SDK je zelo podoben API-ju PyTorch Python. The torch.jit.trace()
iz PyTorcha vzame model in vzorec vhodnega tenzorja kot argumenta. Vzorčni vhodi so dovedeni v model in operacije, ki so priklicane, ko se ta vnos prebija skozi plasti modela, se zabeležijo kot TorchScript. Če želite izvedeti več o sledenju JIT v PyTorchu, glejte naslednje Dokumentacija.
Tako kot torch.jit.trace()
, lahko preverite, ali je vaš model mogoče prevesti na AWS Inferentia z naslednjo kodo za primerke inf1.
Za inf2 se pokliče knjižnica torch_neuronx
. Tukaj je opisano, kako lahko svojo kompilacijo modela preizkusite glede na primerke inf2.
Ko ustvarimo primerek sledenja, lahko posredujemo primer vnosa tenzorja tako:
In končno shranite dobljeni rezultat TorchScript na lokalni disk
Kot je prikazano v prejšnji kodi, lahko uporabite compiler_args
in optimizations
za optimizacijo uvajanja. Za podroben seznam argumentov za torch.neuron.trace
API, glej Python API za sledenje PyTorch-Neuron.
Upoštevajte naslednje pomembne točke:
- Neuron SDK od tega pisanja ne podpira dinamičnih oblik tenzorjev. Zato bo treba model sestaviti ločeno za različne vhodne oblike. Za več informacij o izvajanju sklepanja o spremenljivih vhodnih oblikah z razvrščanjem po vedrih glejte Izvajanje sklepanja o spremenljivih vhodnih oblikah z razgrajevanjem.
- Če se pri prevajanju modela soočite s težavami s pomanjkanjem pomnilnika, poskusite prevesti model na instanci AWS Inferentia z več vCPE-ji ali pomnilnika ali celo na veliki instanci c6i ali r6i, saj prevajanje uporablja samo CPE-je. Ko je preveden, se sledilni model verjetno lahko izvaja na manjših velikostih primerkov AWS Inferentia.
Razlaga postopka gradnje
Zdaj bomo ta vsebnik zgradili z zagonom build.sh. Datoteka gradbenega skripta preprosto ustvari sliko Docker tako, da potegne osnovno sliko vsebnika za globoko učenje in namesti HuggingFace transformers
paket. Temelji na CHIP_TYPE
določeno v .env
datoteko, docker.properties
datoteka odloči za ustrezno BASE_IMAGE
. To BASE_IMAGE
kaže na sliko vsebnika za globoko učenje za Neuron Runtime, ki jo zagotavlja AWS.
Na voljo je prek zasebnega repozitorija ECR. Preden lahko potegnemo sliko, se moramo prijaviti in pridobiti začasne poverilnice AWS.
Opombe: zamenjati moramo regijo, navedeno v ukazu, določenem z zastavo regije in znotraj URI-ja skladišča, z regijo, ki smo jo dali v .env Datoteka.
Za lažji postopek lahko uporabimo fetch-credentials.sh
mapa. Regija bo samodejno prevzeta iz datoteke .env.
Nato bomo potisnili sliko s pomočjo skripta potisni.sh. Potisni skript za vas ustvari repozitorij v Amazon ECR in potisne sliko vsebnika.
Končno, ko je slika zgrajena in potisnjena, jo lahko zaženemo kot vsebnik z zagonom run.sh in rep teče hlodi z dnevniki.sh. V dnevnikih prevajalnika (glejte naslednji posnetek zaslona) boste videli odstotek aritmetičnih operatorjev, prevedenih v Neuronu, in odstotek modelnih podgrafov, uspešno prevedenih v Neuronu. Posnetek zaslona prikazuje dnevnike prevajalnika za bert-base-uncased-squad2
model. Dnevniki kažejo, da je bilo prevedenih 95.64 % aritmetičnih operaterjev, prav tako pa daje seznam operaterjev, ki so bili prevedeni na Neuronu, in tistih, ki niso podprti.
Tu je seznam vseh podprtih operaterjev v najnovejšem paketu PyTorch Neuron. Podobno, tukaj je seznam vseh podprtih operaterjev v najnovejšem paketu PyTorch Neuronx.
Razmestite modele s FastAPI
Ko so modeli sestavljeni, bo sledilni model prisoten v trace-model
mapo. V tem primeru smo sledilni model postavili za velikost serije 1. Tu upoštevamo velikost serije 1, da upoštevamo tiste primere uporabe, kjer večja velikost serije ni izvedljiva ali potrebna. Za primere uporabe, kjer so potrebne večje velikosti serije, je torch.neuron.DataParallel (za Inf1) oz torch.neuronx.DataParallel (za Inf2) API je lahko tudi koristen.
O hitri-api vsebuje vse potrebne skripte za uvajanje modelov s FastAPI. Če želite razmestiti modele brez sprememb, preprosto zaženite deploy.sh skript in zgradil bo sliko vsebnika FastAPI, zagnal vsebnike na določenem številu jeder in uvedel določeno število modelov na strežnik v vsakem strežniku modela FastAPI. Ta mapa vsebuje tudi a .env
datoteko, jo spremenite tako, da odraža pravilno CHIP_TYPE
in AWS_DEFAULT_REGION
.
Opombe: Skripti FastAPI se zanašajo na iste spremenljivke okolja, ki se uporabljajo za izdelavo, potiskanje in izvajanje slik kot vsebnikov. Skripti za uvajanje FastAPI bodo uporabili zadnje znane vrednosti teh spremenljivk. Torej, če ste nazadnje izsledili model za vrsto primerka Inf1, bo ta model uveden s temi skripti.
O fastapi-server.py datoteka, ki je odgovorna za gostovanje strežnika in pošiljanje zahtev modelu, naredi naslednje:
- Prebere število modelov na strežnik in lokacijo prevedenega modela iz datoteke lastnosti
- Nastavi vidne NeuronCores kot spremenljivke okolja za vsebnik Docker in prebere spremenljivke okolja, da določi, katere NeuronCores uporabiti
- Zagotavlja API za sklepanje za
bert-base-uncased-squad2
Model - z
jit.load()
, naloži število modelov na strežnik, kot je določeno v konfiguraciji, ter shrani modele in zahtevane tokenizerje v globalne slovarje
S to nastavitvijo bi bilo relativno enostavno nastaviti API-je, ki navajajo, kateri modeli in koliko modelov je shranjenih v vsakem NeuronCore. Podobno bi lahko napisali API-je za brisanje modelov iz določenih NeuronCores.
O Dockerfile za izdelavo vsebnikov FastAPI je zgrajen na sliki Docker, ki smo jo zgradili za sledenje modelom. To je razlog, zakaj je docker.properties podaja pot ECR do slike Docker za sledenje modelom. V naši nastavitvi so vsebniki Docker v vseh NeuronCores podobni, tako da lahko zgradimo eno sliko in zaženemo več vsebnikov iz ene slike. Da bi se izognili morebitnim napakam pri vstopni točki, določimo ENTRYPOINT ["/usr/bin/env"]
v datoteki Dockerfile, preden zaženete startup.sh
scenarij, ki izgleda hypercorn fastapi-server:app -b 0.0.0.0:8080
. Ta zagonski skript je enak za vse vsebnike. Če uporabljate isto osnovno sliko kot za modele sledenja, lahko sestavite ta vsebnik tako, da preprosto zaženete skript build.sh. The push.sh
skript ostaja enak kot prej za modele sledenja. Spremenjeno sliko Dockerja in ime vsebnika zagotavlja docker.properties
Datoteka.
O run.sh file
naredi naslednje:
- Prebere sliko Docker in ime vsebnika iz Lastnosti datoteko, ki nato prebere
config.properties
datoteka, ki ima anum_cores
uporabniška nastavitev - Začne zanko od 0 do
num_cores
in za vsako jedro:- Nastavi številko vrat in številko naprave
- Nastavi
NEURON_RT_VISIBLE_CORES
spremenljivka okolja - Določa priklop nosilca
- Zažene vsebnik Docker
Zaradi jasnosti bi bil ukaz za zagon Dockerja za uvajanje v NeuronCore 0 za Inf1 videti kot naslednja koda:
Ukaz za zagon za uvajanje v NeuronCore 5 bi bil videti kot naslednja koda:
Ko so kontejnerji razporejeni, uporabimo run_apis.py skript, ki kliče API-je v vzporednih nitih. Koda je nastavljena za klicanje šestih razporejenih modelov, po enega na vsakem NeuronCore, vendar jo je mogoče preprosto spremeniti v drugo nastavitev. API-je kličemo s strani odjemalca na naslednji način:
Spremljajte NeuronCore
Ko so modelni strežniki uvedeni, lahko za spremljanje uporabe NeuronCore uporabimo neuron-top
za opazovanje odstotka izkoriščenosti vsakega NeuronCore v realnem času. nevronski vrh je orodje CLI v Neuron SDK za zagotavljanje informacij, kot so NeuronCore, vCPU in uporaba pomnilnika. V ločen terminal vnesite naslednji ukaz:
Vaš rezultat bi moral biti podoben naslednji sliki. V tem scenariju smo določili uporabo dveh NeuronCores in dveh modelov na strežnik na primerku Inf2.xlarge. Naslednji posnetek zaslona prikazuje, da sta dva modela velikosti 287.8 MB naložena na dva NeuronCores. Pri skupno 4 naloženih modelih lahko vidite, da je uporabljeni pomnilnik naprave 1.3 GB. S puščičnimi tipkami se premikajte med NeuronCores na različnih napravah
Podobno vidimo na vrsti primerka Inf1.16xlarge naloženih skupno 12 modelov (2 modela na jedro v 6 jedrih). Skupno se porabi 2.1 GB pomnilnika, vsak model pa je velik 177.2 MB.
Ko zaženete run_apis.py skripta, si lahko ogledate odstotek izkoriščenosti vsakega od šestih NeuronCores (glejte naslednji posnetek zaslona). Ogledate si lahko tudi sistemsko porabo vCPE in porabo vCPE med izvajanjem.
Naslednji posnetek zaslona prikazuje odstotek uporabe jedra primerka Inf2.
Podobno ta posnetek zaslona prikazuje uporabo jedra v vrsti primerka inf1.6xlarge.
Čiščenje
Za čiščenje vseh vsebnikov Docker, ki ste jih ustvarili, nudimo a čiščenje.sh skript, ki odstrani vse delujoče in ustavljene vsebnike. Ta skript bo odstranil vse vsebnike, zato ga ne uporabljajte, če želite ohraniti delovanje nekaterih vsebnikov.
zaključek
Produkcijske delovne obremenitve pogosto zahtevajo visoko prepustnost, nizko zakasnitev in stroške. Neučinkovite arhitekture, ki neoptimalno uporabljajo pospeševalnike, lahko povzročijo nepotrebno visoke proizvodne stroške. V tej objavi smo pokazali, kako optimalno uporabiti NeuronCores s FastAPI za povečanje prepustnosti pri minimalni zakasnitvi. Navodila smo objavili na našem GitHub repo. S to arhitekturo rešitve lahko uvedete več modelov v vsakem NeuronCore in upravljate več modelov vzporedno na različnih NeuronCore brez izgube zmogljivosti. Za več informacij o tem, kako uvesti modele v velikem obsegu s storitvami, kot je Amazonski elastični kubernetes storitev (Amazon EKS), glej Storite 3,000 modelov globokega učenja na Amazon EKS z AWS Inferentia za manj kot 50 USD na uro.
O avtorjih
Ankur Srivastava je starejši arhitekt rešitev v skupini ML Frameworks. Osredotoča se na pomoč strankam pri samoupravljivem porazdeljenem usposabljanju in sklepanju v velikem obsegu na AWS. Njegove izkušnje vključujejo industrijsko prediktivno vzdrževanje, digitalne dvojčke, verjetnostno optimizacijo zasnove in je zaključil doktorski študij strojništva na univerzi Rice in podoktorske raziskave na tehnološkem inštitutu Massachusetts.
KC Tung je višji arhitekt rešitev v AWS Annapurna Labs. Specializiran je za usposabljanje in uvajanje velikih modelov globokega učenja v oblaku. Ima doktorat znanosti. doktor molekularne biofizike iz Southwestern medicinskega centra Univerze v Teksasu v Dallasu. Govoril je na AWS Summits in AWS Reinvent. Danes strankam pomaga pri usposabljanju in uvajanju velikih modelov PyTorch in TensorFlow v oblaku AWS. Je avtor dveh knjig: Spoznajte TensorFlow Enterprise in TensorFlow 2 Pocket Reference.
Pronoy Chopra je višji arhitekt rešitev pri skupini Startups Generative AI pri AWS. Specializiran je za arhitekturo in razvoj rešitev IoT in strojnega učenja. V preteklosti je soustanovil dva zagonska podjetja in uživa v praktičnem delu s projekti na področju IoT, AI/ML in domene brez strežnikov.
- Distribucija vsebine in PR s pomočjo SEO. Okrepite se še danes.
- PlatoData.Network Vertical Generative Ai. Opolnomočite se. Dostopite tukaj.
- PlatoAiStream. Web3 Intelligence. Razširjeno znanje. Dostopite tukaj.
- PlatoESG. Avtomobili/EV, Ogljik, CleanTech, Energija, Okolje, sončna energija, Ravnanje z odpadki. Dostopite tukaj.
- BlockOffsets. Posodobitev okoljskega offset lastništva. Dostopite tukaj.
- vir: https://aws.amazon.com/blogs/machine-learning/optimize-aws-inferentia-utilization-with-fastapi-and-pytorch-models-on-amazon-ec2-inf1-inf2-instances/
- :ima
- : je
- :ne
- :kje
- $GOR
- 000
- 1
- 1.3
- 10
- 100
- 12
- 13
- 15%
- 2023
- 7
- 8
- 91
- a
- Sposobna
- O meni
- nad
- abstrakcija
- pospeševalniki
- dostop
- Dostop
- ustrezno
- Račun
- Doseči
- čez
- aktivna
- dodajte
- proti
- AI
- AI / ML
- vsi
- omogočajo
- omogoča
- Prav tako
- Amazon
- Amazon EC2
- Amazon Web Services
- an
- in
- kaj
- API
- API-ji
- aplikacija
- uporaba
- aplikacije
- Uporabi
- primerno
- Arhitektura
- SE
- Argumenti
- AS
- domnevati
- At
- Avtor
- samodejno
- razpoložljivost
- Na voljo
- izogniti
- AWS
- Sklepanje AWS
- baza
- temeljijo
- BE
- ker
- postanejo
- bilo
- pred
- ime
- vedenje
- počutje
- koristi
- Prednosti
- BEST
- najboljše prakse
- med
- Biofizika
- Bit
- Blog
- knjige
- izgradnjo
- Building
- zgrajena
- vendar
- by
- klic
- se imenuje
- poziva
- CAN
- Zmogljivosti
- zmožnost
- ki
- primeru
- primeri
- center
- spremenite
- spremenilo
- Spremembe
- preveriti
- čipi
- izbira
- Izberite
- izbral
- jasnost
- stranke
- tesno
- Cloud
- Koda
- prihaja
- Primerjava
- tekmujejo
- Končana
- Izračunajte
- konfiguracija
- Razmislite
- upoštevamo
- Konzole
- porabi
- vsebujejo
- Posoda
- Zabojniki
- Vsebuje
- ozadje
- stalno
- kontrast
- nadzor
- nadzorom
- Priročen
- Core
- popravi
- strošek
- stroški
- bi
- par
- ustvarjajo
- ustvaril
- ustvari
- Ustvarjanje
- Mandatno
- ključnega pomena
- Stranke, ki so
- Dallas
- Odločitev
- globoko
- globoko učenje
- globlje
- privzeto
- izkazati
- Odvisno
- razporedi
- razporejeni
- uvajanja
- uvajanje
- Oblikovanje
- imenovani
- Kljub
- podrobno
- določa
- razvoju
- naprava
- naprave
- drugačen
- Difuzija
- DIG
- digitalni
- Digitalni dvojčki
- porazdeljena
- razdeljeno usposabljanje
- Django
- do
- Lučki delavec
- ne
- Ne
- domena
- dont
- dinamično
- vsak
- prej
- lažje
- enostavno
- lahka
- EC
- učinkovito
- konec
- Končna točka
- sodelovati
- Inženiring
- zagotovitev
- Vnesite
- entiteta
- Vpis
- okolje
- napake
- itd
- Tudi
- Tudi vsak
- razvija
- Primer
- Razen
- izkušnje
- razširitve
- Obraz
- družina
- hitreje
- izvedljivo
- Lastnosti
- Fed
- manj
- Slika
- file
- filter
- končno
- Najdi
- prva
- Osredotoča
- po
- sledi
- za
- format
- je pokazala,
- štiri
- Okvirni
- okviri
- iz
- polno
- v celoti
- funkcija
- Prehod
- generativno
- Generativna AI
- dobili
- GitHub
- Daj
- daje
- Globalno
- dogaja
- vodi
- ročaj
- hands-on
- strojna oprema
- Imajo
- he
- pomoč
- pomoč
- Pomaga
- tukaj
- visoka
- več
- najvišja
- njegov
- gostitelj
- gostila
- gostovanje
- Gostitelji
- Kako
- Kako
- Vendar
- HTML
- http
- HTTPS
- HuggingFace
- ID
- idealen
- identificirati
- if
- slika
- slike
- uvoz
- Pomembno
- in
- vključeno
- vključuje
- Dohodni
- Poveča
- industrijske
- neučinkovit
- Podatki
- obvestila
- vhod
- vhodi
- namestitev
- nameščen
- Namestitev
- primer
- Namesto
- Inštitut
- Navodila
- interakcijo
- v
- sklican
- Internet stvari
- vprašanje
- Vprašanja
- IT
- ITS
- JIT
- jpg
- samo
- Imejte
- tipke
- Vedite
- znano
- Labs
- jezik
- velika
- Zadnja
- Latenca
- Zadnji
- kosilo
- plast
- plasti
- vodi
- UČITE
- učenje
- Stopnja
- Knjižnica
- kot
- linux
- Seznam
- Navedeno
- malo
- malo globlje
- LLM
- nalaganje
- obremenitve
- lokalna
- kraj aktivnosti
- sečnja
- prijava
- Poglej
- izgleda kot
- POGLEDI
- izgube
- nizka
- nižje
- najnižja
- stroj
- strojno učenje
- je
- vzdrževanje
- Znamka
- IZDELA
- Izdelava
- več
- Massachusetts
- Tehnološki inštitut Massachusetts
- max
- Povečajte
- največja
- Maj ..
- mehanska
- medicinski
- Spomin
- Meritve
- moti
- minimalna
- ML
- Model
- modeli
- spremembe
- spremenite
- molekularno
- monitor
- več
- Najbolj
- premikanje
- veliko
- več
- morajo
- Ime
- nujno
- potrebno
- Nimate
- potrebna
- potrebe
- Novo
- Naslednja
- zdaj
- Številka
- Cilj
- opazujejo
- of
- ponudba
- pogosto
- on
- enkrat
- ONE
- samo
- na
- open source
- deluje
- operacije
- operaterji
- nasprotuje
- optimizacija
- Optimizirajte
- optimizirana
- or
- naši
- ven
- izhod
- več
- paket
- vzporedno
- del
- mimo
- preteklosti
- pot
- za
- odstotek
- performance
- platon
- Platonova podatkovna inteligenca
- PlatoData
- Točka
- točke
- politike
- politika
- Popular
- mogoče
- Prispevek
- vaje
- predstaviti
- zasebna
- verjetno
- Postopek
- Procesi
- proizvodnjo
- proizvodnja
- profil
- projekti
- Lastnosti
- zagotavljajo
- če
- zagotavlja
- proxy
- objavljeno
- vlečenje
- Namen
- Push
- potisnilo
- potiska
- dal
- Python
- pitorha
- območje
- pravo
- v realnem času
- Priporočamo
- priporočeno
- Zabeležena
- odražajo
- okolica
- relativno
- zanašajo
- zanašanje
- ostanki
- odstrani
- zamenjajte
- Skladišče
- zahteva
- obvezna
- Zahteve
- Raziskave
- spominja
- Reserve
- pridržane
- viri
- Odgovor
- odgovorna
- REST
- rezultat
- za večkratno uporabo
- Riž
- vloga
- vloge
- Run
- tek
- deluje
- žrtvovanje
- Enako
- Shrani
- Lestvica
- Scenarij
- skripte
- SDK
- glej
- izbor
- pošiljanja
- višji
- občutljiva
- ločena
- Brez strežnika
- Strežniki
- Storitev
- Storitve
- služijo
- nastavite
- nastavitev
- nastavitev
- Oblike
- Delite s prijatelji, znanci, družino in partnerji :-)
- deli
- shouldnt
- Prikaži
- je pokazala,
- pokazale
- Razstave
- strani
- Podoben
- podobno
- preprosto
- SIX
- Velikosti
- velikosti
- manj
- So
- Rešitev
- rešitve
- nekaj
- specializirano
- specifična
- določeno
- govorijo
- stabilna
- sveženj
- Začetek
- zagon
- Ustanavljanjem
- navedla
- Koraki
- ustavil
- shranjeni
- trgovine
- Močno
- Študije
- Uspešno
- taka
- Vrhovi
- podpora
- Podprti
- Preverite
- sistem
- miza
- Bodite
- sprejeti
- meni
- skupina
- Tehnologija
- začasna
- tensorflo
- terminal
- Test
- Testiranje
- testi
- texas
- kot
- da
- O
- njihove
- Njih
- POTEM
- zato
- te
- jih
- stvari
- ta
- tisti,
- skozi
- pretočnost
- vezana
- čas
- do
- danes
- orodje
- orodja
- vrh
- baklo
- Skupaj za plačilo
- Trace
- Sledenje
- tradicionalna
- Vlak
- usposabljanje
- transformatorji
- zaupa
- poskusite
- OBRAT
- Twins
- dva
- tip
- Ubuntu
- pod
- osnovni
- univerza
- unix
- po nepotrebnem
- naprej
- us
- Uporaba
- uporaba
- Rabljeni
- uporabnik
- Uporabniki
- uporablja
- uporabo
- uporabiti
- izkorišča
- Uporaben
- vrednost
- Vrednote
- različica
- zelo
- vidna
- Vizija
- Obseg
- želeli
- je
- način..
- we
- web
- spletni strežnik
- spletne storitve
- Dobro
- so bili
- kdaj
- ki
- zakaj
- pogosto
- bo
- z
- v
- brez
- delavec
- delavci
- bi
- pisanje
- pisni
- Vi
- Vaša rutina za
- sami
- zefirnet
- nič