Kun Deep Learning -malleja otetaan käyttöön laajassa mittakaavassa, on ratkaisevan tärkeää hyödyntää tehokkaasti taustalla olevaa laitteistoa suorituskyvyn ja kustannushyötyjen maksimoimiseksi. Tuotantotyökuormituksille, jotka vaativat suurta suorituskykyä ja pientä latenssia, valitaan Amazonin elastinen laskentapilvi (EC2) ilmentymä, mallin käyttöpino ja käyttöönottoarkkitehtuuri ovat erittäin tärkeitä. Tehoton arkkitehtuuri voi johtaa kiihdyttimien epäoptimaaliseen käyttöön ja tarpeettoman korkeisiin tuotantokustannuksiin.
Tässä viestissä opastamme sinut FastAPI-mallipalvelimien käyttöönottoprosessin läpi AWS Inferentia -laitteissa (löytyy Amazon EC2:sta Info1 ja Amazon EC Info2 tapaukset). Esittelemme myös mallimallin isännöintiä, joka on otettu käyttöön rinnakkain kaikissa NeuronCore-yksiköissä laitteiston maksimaalisen käytön takaamiseksi.
Ratkaisun yleiskatsaus
FastAPI on avoimen lähdekoodin verkkokehys Python-sovellusten palvelemiseen, joka on paljon nopeampi kuin perinteiset puitteet, kuten Flask ja Django. Se käyttää a Asynkroninen palvelinyhdyskäytäväliitäntä (ASGI) laajalti käytetyn sijaan Web-palvelimen yhdyskäytävän käyttöliittymä (WSGI). ASGI käsittelee saapuvat pyynnöt asynkronisesti toisin kuin WSGI, joka käsittelee pyynnöt peräkkäin. Tämä tekee FastAPI:sta ihanteellisen vaihtoehdon latenssiherkkien pyyntöjen käsittelemiseen. FastAPI:n avulla voit ottaa käyttöön palvelimen, joka isännöi päätepistettä Inferentia (Inf1/Inf2) -esiintymissä, joka kuuntelee asiakkaan pyyntöjä määritetyn portin kautta.
Tavoitteemme on saavuttaa paras suorituskyky alhaisin kustannuksin käyttämällä laitteistoa mahdollisimman paljon. Tämän ansiosta voimme käsitellä enemmän päättelypyyntöjä vähemmillä kiihdyttimillä. Jokainen AWS Inferentia1 -laite sisältää neljä NeuronCores-v1:tä ja jokainen AWS Inferentia2 -laite sisältää kaksi NeuronCores-v2:ta. The AWS Neuron SDK antaa meille mahdollisuuden käyttää kaikkia NeuronCoreja rinnakkain, mikä antaa meille paremman hallinnan neljän tai useamman mallin lataamisessa ja päättelyssä rinnakkain suorituskyvystä tinkimättä.
FastAPI:n avulla voit valita Python-verkkopalvelimen (Gunicorn, Uvicorn, Hypermaissi, Daphne). Nämä verkkopalvelimet tarjoavat abstraktiokerroksen taustalla olevan koneoppimismallin (ML) päälle. Pyynnön pyytävällä asiakkaalla on se etu, että hän ei huomaa isännöityä mallia. Asiakkaan ei tarvitse tietää mallin nimeä tai versiota, joka on otettu käyttöön palvelimen alla. päätepisteen nimi on nyt vain välityspalvelin funktiolle, joka lataa ja suorittaa mallin. Sitä vastoin kehyskohtaisessa palvelutyökalussa, kuten TensorFlow Serving, mallin nimi ja versio ovat osa päätepisteen nimeä. Jos malli muuttuu palvelinpuolella, asiakkaan on tiedettävä ja muutettava API-kutsunsa uuteen päätepisteeseen vastaavasti. Siksi, jos kehität jatkuvasti versiomalleja, kuten A/B-testauksen tapauksessa, yleisen Python-verkkopalvelimen käyttäminen FastAPI:n kanssa on kätevä tapa palvella malleja, koska päätepisteen nimi on staattinen.
ASGI-palvelimen tehtävänä on luoda tietty määrä työntekijöitä, jotka kuuntelevat asiakkaan pyyntöjä ja suorittavat päättelykoodin. Palvelimen tärkeä ominaisuus on varmistaa, että pyydetty määrä työntekijöitä on käytettävissä ja aktiivisia. Jos työntekijä kuolee, palvelimen on käynnistettävä uusi työntekijä. Tässä yhteydessä palvelin ja työntekijät voidaan tunnistaa niiden Unix-prosessitunnuksella (PID). Tässä viestissä käytämme a Hypermaissi palvelin, joka on suosittu valinta Python-verkkopalvelimille.
Tässä viestissä jaamme parhaita käytäntöjä syväoppimismallien käyttöönottamiseksi FastAPI:n kanssa AWS Inferentia NeuronCoresissa. Näytämme, että voit ottaa käyttöön useita malleja erillisiin NeuronCoresiin, joita voidaan kutsua samanaikaisesti. Tämä asetus lisää suorituskykyä, koska useita malleja voidaan päätellä samanaikaisesti ja NeuronCore-käyttö on täysin optimoitu. Koodi löytyy osoitteesta GitHub repo. Seuraavassa kuvassa näkyy arkkitehtuuri, jolla ratkaisu määritetään EC2 Inf2 -esiintymään.
Sama arkkitehtuuri koskee EC2 Inf1 -ilmentymätyyppiä, paitsi että siinä on neljä ydintä. Joten se muuttaa arkkitehtuurikaaviota hieman.
AWS Inferentia NeuronCores
Kaivataanpa hieman syvemmälle AWS Neuronin tarjoamia työkaluja NeuronCoresin käyttämiseen. Seuraavissa taulukoissa näkyy NeuronCore-en määrä kussakin Inf1- ja Inf2-ilmentymätyypissä. Isäntä vCPU:t ja järjestelmämuisti jaetaan kaikkien käytettävissä olevien NeuronCore-yksiköiden kesken.
Esineen koko | # Inferentia Accelerators | # NeuronCores-v1 | vCPU: t | Muisti (GiB) |
Inf1.xlarge | 1 | 4 | 4 | 8 |
Inf 1.2xsuuri | 1 | 4 | 8 | 16 |
Inf 1.6xsuuri | 4 | 16 | 24 | 48 |
Inf 1.24xsuuri | 16 | 64 | 96 | 192 |
Esineen koko | # Inferentia Accelerators | # NeuronCores-v2 | vCPU: t | Muisti (GiB) |
Inf2.xlarge | 1 | 2 | 4 | 32 |
Inf 2.8xsuuri | 1 | 2 | 32 | 32 |
Inf 2.24xsuuri | 6 | 12 | 96 | 192 |
Inf 2.48xsuuri | 12 | 24 | 192 | 384 |
Inf2-instanssit sisältävät uuden NeuronCores-v2:n verrattuna Inf1-esiintymien NeuronCore-v1:een. Huolimatta siitä, että ytimiä on vähemmän, ne pystyvät tarjoamaan 4 kertaa suuremman suorituskyvyn ja 10 kertaa pienemmän latenssin kuin Inf1-esiintymät. Inf2-instanssit sopivat ihanteellisesti Deep Learning -työkuormille, kuten Generative AI, Large Language Models (LLM) OPT/GPT-perheessä ja näkömuuntajille, kuten Stable Diffusion.
Neuron Runtime vastaa mallien käynnistämisestä Neuron-laitteissa. Neuron Runtime määrittää, mikä NeuronCore käyttää mitäkin mallia ja miten sitä käytetään. Neuron Runtime -sovelluksen konfigurointia ohjataan käyttämällä ympäristömuuttujat prosessin tasolla. Oletusarvoisesti Neuron-kehyksen laajennukset huolehtivat Neuron Runtime -määrityksistä käyttäjän puolesta. eksplisiittiset konfiguraatiot ovat kuitenkin myös mahdollisia optimoidun toiminnan saavuttamiseksi.
Kaksi suosittua ympäristömuuttujaa ovat NEURON_RT_NUM_CORES
ja NEURON_RT_VISIBLE_CORES
. Näillä ympäristömuuttujilla Python-prosessit voidaan sitoa NeuronCoreen. Kanssa NEURON_RT_NUM_CORES
, tietty määrä ytimiä voidaan varata prosessille ja kanssa NEURON_RT_VISIBLE_CORES
, valikoima NeuronCores voidaan varata. Esimerkiksi, NEURON_RT_NUM_CORES=2 myapp.py
varaa kaksi ydintä ja NEURON_RT_VISIBLE_CORES=’0-2’ myapp.py
varaa nollan, yhden ja kaksi ydintä myapp.py
. Voit varata myös NeuronCoreja eri laitteille (AWS Inferentia -sirut). Niin, NEURON_RT_VISIBLE_CORES=’0-5’ myapp.py
varaa neljä ensimmäistä ydintä päälle device1
ja yksi ydin päällä device2
Ec2 Inf1 -esiintymätyypissä. Vastaavasti EC2 Inf2 -ilmentymätyypissä tämä kokoonpano varaa kaksi ydintä poikki device1
ja device2
ja yksi ydin päällä device3
. Seuraavassa taulukossa on yhteenveto näiden muuttujien kokoonpanosta.
Nimi | Kuvaus | Tyyppi | Odotetut arvot | Oletusarvo | RT versio |
NEURON_RT_VISIBLE_CORES |
Prosessin tarvitsemat erityiset neuronytimet | Kokonaislukualue (kuten 1-3) | Mikä tahansa arvo tai alue välillä 0 - Max NeuronCore järjestelmässä | Ei eristetty | 2.0+ |
NEURON_RT_NUM_CORES |
Prosessin edellyttämien NeuronCore-osien määrä | Kokonaisluku | Arvo 1 - Max NeuronCore järjestelmässä | 0, joka tulkitaan "kaikkiksi" | 2.0+ |
Katso luettelo kaikista ympäristömuuttujista kohdasta Neuron Runtime Configuration.
Oletuksena malleja ladattaessa mallit ladataan NeuronCore 0:aan ja sitten NeuronCore 1:een, ellei edellisissä ympäristömuuttujissa ole nimenomaisesti mainittu. Kuten aiemmin mainittiin, NeuronCores jakavat käytettävissä olevat isäntä-vCPU:t ja järjestelmämuistin. Siksi kuhunkin NeuronCoreen asennetut mallit kilpailevat käytettävissä olevista resursseista. Tämä ei ole ongelma, jos malli käyttää suuressa määrin NeuronCoresia. Mutta jos malli toimii vain osittain NeuronCore-yksiköillä ja loput isäntävCPU:illa, CPU-käytettävyyden huomioon ottaminen NeuronCorea kohti tulee tärkeäksi. Tämä vaikuttaa myös esiintymän valintaan.
Seuraavassa taulukossa näkyy käytettävissä olevien isäntä-vCPU:iden ja järjestelmämuistin lukumäärä mallia kohti, jos jokaiseen NeuronCoreen otettiin käyttöön yksi malli. Riippuen sovelluksesi NeuronCore-käytöstä, vCPU:sta ja muistin käytöstä, on suositeltavaa suorittaa testejä selvittääksesi, mikä kokoonpano on tehokkain sovelluksellesi. The Neuron Top työkalu voi auttaa visualisoimaan ydinkäyttöä sekä laitteen ja isäntämuistin käyttöä. Näiden mittareiden perusteella voidaan tehdä tietoinen päätös. Esittelemme Neuron Topin käytön tämän blogin lopussa.
Esineen koko | # Inferentia Accelerators | #malleja | vCPU:t/malli | Muisti/malli (GiB) |
Inf1.xlarge | 1 | 4 | 1 | 2 |
Inf 1.2xsuuri | 1 | 4 | 2 | 4 |
Inf 1.6xsuuri | 4 | 16 | 1.5 | 3 |
Inf 1.24xsuuri | 16 | 64 | 1.5 | 3 |
Esineen koko | # Inferentia Accelerators | #malleja | vCPU:t/malli | Muisti/malli (GiB) |
Inf2.xlarge | 1 | 2 | 2 | 8 |
Inf 2.8xsuuri | 1 | 2 | 16 | 64 |
Inf 2.24xsuuri | 6 | 12 | 8 | 32 |
Inf 2.48xsuuri | 12 | 24 | 8 | 32 |
Voit testata Neuron SDK -ominaisuudet itse tutustumalla uusimpaan PyTorchin neuroniominaisuudet.
Järjestelmän asennus
Tässä ratkaisussa käytetty järjestelmäasetus on seuraava:
Määritä ratkaisu
Ratkaisun määrittämiseksi meidän on tehtävä pari asiaa. Aloita luomalla IAM-rooli, jonka EC2-ilmentymäsi olettaa ja jonka avulla se voi työntää ja vetää siitä Amazonin elastisten säiliörekisteri.
Vaihe 1: Määritä IAM-rooli
- Aloita kirjautumalla konsoliin ja valitsemalla IAM > Roolit > Luo rooli
- Valitse Luotetun entiteetin tyyppi
AWS Service
- Valitse käyttötapauksessa palveluksi EC2
- Napauta seuraava ja näet kaikki saatavilla olevat käytännöt
- Tätä ratkaisua varten aiomme antaa EC2-instanssillemme täyden pääsyn ECR:ään. Suodata varten AmazonEC2ContainerRegistryFullAccess ja valitse se.
- Paina seuraava ja nimeä rooli
inf-ecr-access
Huomautus: liittämämme käytäntö antaa EC2-instanssille täyden pääsyn Amazon ECR:ään. Suosittelemme noudattamaan vähiten etuuksien periaate tuotannon työmääriä varten.
Vaihe 2: Määritä AWS CLI
Jos käytät yllä lueteltua Deep Learning AMI:tä, siihen on asennettu AWS CLI. Jos käytät toista AMI:tä (Amazon Linux 2023, Base Ubuntu jne.), asenna CLI-työkalut seuraavasti: Tämän oppaan.
Kun olet asentanut CLI-työkalut, määritä CLI komennolla aws configure
. Jos sinulla on pääsyavaimia, voit lisätä ne tähän, mutta et välttämättä tarvitse niitä ollaksesi vuorovaikutuksessa AWS-palvelujen kanssa. Luotamme IAM-rooleihin tehdäksemme sen.
Huomautuksia: Meidän on syötettävä vähintään yksi arvo (oletusalue tai oletusmuoto) luodaksemme oletusprofiilin. Tässä esimerkissä lähdemme mukaan us-east-2
kuin alue ja json
oletuslähtönä.
Kloonaa Githubin arkisto
- GitHub repo tarjoaa kaikki komentosarjat, jotka tarvitaan mallien käyttöönottoon FastAPI:n avulla NeuronCoresissa AWS Inferentia -esiintymissä. Tämä esimerkki käyttää Docker-säiliöitä varmistaakseen, että voimme luoda uudelleenkäytettäviä ratkaisuja. Tässä esimerkissä on seuraava config.properties tiedosto, jonka käyttäjät voivat syöttää.
Määritystiedosto tarvitsee käyttäjän määrittämät nimietuliitteet Docker-kuvalle ja Docker-säilöille. The build.sh
käsikirjoitus fastapi
ja trace-model
kansiot käyttävät tätä Docker-kuvien luomiseen.
Kokoa malli AWS Inferentiaan
Aloitamme mallin jäljittämisestä ja PyTorch Torchscript .pt -tiedoston tuottamisesta. Aloita avaamalla trace-model
hakemistoon ja muokkaamalla .env-tiedostoa. Muokkaa valitsemasi ilmentymän tyypistä riippuen CHIP_TYPE
puitteissa .env
tiedosto. Esimerkkinä valitsemme oppaaksi Inf2. Samat vaiheet koskevat Inf1:n käyttöönottoprosessia.
Aseta seuraavaksi oletusalue samassa tiedostossa. Tätä aluetta käytetään ECR-arkiston luomiseen ja Docker-kuvat työnnetään tähän arkistoon. Tässä kansiossa on myös kaikki komentosarjat, joita tarvitaan a bert-base-uncased
malli AWS Inferentiassa. Tätä komentosarjaa voidaan käyttää useimmissa malleissa, jotka ovat saatavilla Halaaminen kasvot. Dockerfile sisältää kaikki riippuvuudet Neuron-mallien ajamiseen ja käyttää trace-model.py koodi sisääntulopisteeksi.
Neuronin kokoelma selitetty
Neuron SDK:n API muistuttaa läheisesti PyTorch Python API:ta. The torch.jit.trace()
PyTorch ottaa mallin ja näytesyöttötensorin argumentteina. Näytesyötteet syötetään malliin ja toiminnot, jotka kutsutaan, kun tämä syöte kulkee mallin kerrosten läpi, kirjataan TorchScript. Lisätietoja JIT Tracingista PyTorchissa on seuraavassa dokumentointi.
Ihan kuin torch.jit.trace()
, voit tarkistaa, voidaanko mallisi kääntää AWS Inferentiassa seuraavalla inf1-instanssien koodilla.
Inf2:lle kirjastoa kutsutaan torch_neuronx
. Näin voit testata mallikokoelmaasi inf2-ilmentymiä vastaan.
Jäljitysesiintymän luomisen jälkeen voimme välittää esimerkkitensorisyötteen seuraavasti:
Ja lopuksi tallenna tuloksena oleva TorchScript-tuloste paikalliselle levylle
Kuten edellisessä koodissa näkyy, voit käyttää compiler_args
ja optimizations
käyttöönoton optimoimiseksi. Yksityiskohtainen luettelo argumenteista torch.neuron.trace
API, katso PyTorch-Neuron Trace Python API.
Pidä seuraavat tärkeät kohdat mielessä:
- Neuron SDK ei tue dynaamisia tensorimuotoja tätä kirjoitettaessa. Siksi eri syöttömuodoille on laadittava malli erikseen. Lisätietoja päättelyn suorittamisesta muuttuvien syöttömuotojen kanssa segmentoinnilla on kohdassa Muuttuvien syöttömuotojen päättelyn suorittaminen ryhmittelyllä.
- Jos kohtaat muistiongelmia mallia kääntäessäsi, yritä kääntää malli AWS Inferentia -esiintymään, jossa on enemmän vCPU:ita tai muistia, tai jopa suuri c6i- tai r6i-instanssi, koska käännös käyttää vain suorittimia. Kun jäljitetty malli on käännetty, sitä voidaan todennäköisesti ajaa pienemmillä AWS Inferentia -ilmentymien kokoilla.
Rakenna prosessin selitys
Nyt rakennamme tämän kontin ajamalla build.sh. Rakennusskriptitiedosto luo yksinkertaisesti Docker-kuvan vetämällä Deep Learning Container -pohjakuvan ja asentamalla HuggingFacen transformers
paketti. Perustuu CHIP_TYPE
määritelty kohdassa .env
tiedosto, docker.properties
tiedosto päättää sopivan BASE_IMAGE
. Tämä BASE_IMAGE
osoittaa AWS:n tarjoamaan Deep Learning Container Image for Neuron Runtime -sovelluksen.
Se on saatavilla yksityisen ECR-arkiston kautta. Ennen kuin voimme vetää kuvan, meidän on kirjauduttava sisään ja hankittava väliaikaiset AWS-tunnistetiedot.
Huomautuksia: meidän on korvattava aluelipun määrittämässä komennossa oleva alue ja arkiston URI:ssa alue, jonka laitamme .env tiedosto.
Tämän prosessin helpottamiseksi voimme käyttää fetch-credentials.sh
tiedosto. Alue otetaan .env-tiedostosta automaattisesti.
Seuraavaksi työnnämme kuvan skriptin avulla push.sh. Push-skripti luo arkiston Amazon ECR:ään sinulle ja työntää säilön kuvan.
Lopuksi, kun kuva on rakennettu ja työnnetty, voimme ajaa sen konttina suorittamalla run.sh ja hännän juoksutukit logs.sh. Kääntäjän lokeissa (katso seuraava kuvakaappaus) näet Neuronille koottujen aritmeettisten operaattoreiden prosenttiosuuden ja Neuronilla onnistuneesti koottujen mallien aligraafien prosenttiosuuden. Kuvakaappaus näyttää kääntäjän lokit bert-base-uncased-squad2
malli. Lokit osoittavat, että 95.64% aritmeettisista operaattoreista on koottu, ja se antaa myös luettelon Neuronilla käännetyistä operaattoreista ja niistä, joita ei tueta.
Tässä on luettelo kaikista tuetuista operaattoreista uusimmassa PyTorch Neuron -paketissa. Samalla lailla, tässä on lista kaikista tuetuista operaattoreista uusimmassa PyTorch Neuronx -paketissa.
Ota mallit käyttöön FastAPI:lla
Sen jälkeen, kun mallit on koottu, jäljitetty malli on läsnä trace-model
kansio. Tässä esimerkissä olemme sijoittaneet jäljitetyn mallin eräkokoon 1. Käsittelemme tässä eräkokoa 1 ottaaksemme huomioon ne käyttötapaukset, joissa suurempi eräkoko ei ole mahdollista tai vaadittu. Käyttötapauksissa, joissa tarvitaan suurempia eräkokoja, torch.neuron.DataParallel (Inf1:lle) tai torch.neuronx.DataParallel (Inf2) API voi myös olla hyödyllinen.
- nopea api kansio sisältää kaikki tarvittavat komentosarjat mallien käyttöönottoon FastAPI:lla. Jos haluat ottaa mallit käyttöön ilman muutoksia, suorita yksinkertaisesti deploy.sh komentosarjan ja se rakentaa FastAPI-säilökuvan, ajaa säilöjä määritetyllä määrällä ytimiä ja ottaa käyttöön määritetyn määrän malleja palvelinta kohti kussakin FastAPI-mallipalvelimessa. Tämä kansio sisältää myös a .env
tiedostoa, muokkaa sitä vastaamaan oikeaa CHIP_TYPE
ja AWS_DEFAULT_REGION
.
Huomautuksia: FastAPI-skriptit perustuvat samoihin ympäristömuuttujiin, joita käytetään kuvien rakentamiseen, työntämiseen ja suorittamiseen säilöinä. FastAPI-käyttöönottokomentosarjat käyttävät viimeisimpiä tunnettuja arvoja näistä muuttujista. Joten jos jäljitit Inf1-instanssityypin mallin viimeksi, kyseinen malli otetaan käyttöön näiden komentosarjojen kautta.
- fastapi-server.py tiedosto, joka vastaa palvelimen isännöinnistä ja pyyntöjen lähettämisestä mallille, toimii seuraavasti:
- Lukee mallien määrän palvelinta kohti ja käännetyn mallin sijainnin ominaisuustiedostosta
- Asettaa näkyvät NeuronCoret ympäristömuuttujiksi Docker-säilöön ja lukee ympäristömuuttujat määrittääkseen käytettävät NeuronCores
- Tarjoaa päättelysovellusliittymän
bert-base-uncased-squad2
malli - Kanssa
jit.load()
, lataa konfiguraatiossa määritetyn määrän malleja per palvelin ja tallentaa mallit ja tarvittavat tokenisaattorit globaaleihin sanakirjoihin
Tällä asetuksella olisi suhteellisen helppoa määrittää API:t, jotka listaavat, mitkä mallit ja kuinka monta mallia kuhunkin NeuronCoreen on tallennettu. Samoin API-liittymiä voitaisiin kirjoittaa poistamaan malleja tietyistä NeuronCoresista.
- Dockerfile FastAPI-konttien rakentamiseen on rakennettu mallien jäljittämiseksi rakentamamme Docker-kuvan pohjalta. Tästä syystä docker.properties tiedosto määrittää ECR-polun Docker-kuvaan mallien jäljittämiseksi. Asetuksissamme Docker-säilöt kaikissa NeuronCoreissa ovat samanlaisia, joten voimme rakentaa yhden kuvan ja käyttää useita säilöjä yhdestä kuvasta. Määritämme sisääntulopistevirheiden välttämiseksi ENTRYPOINT ["/usr/bin/env"]
Docker-tiedostossa ennen tiedoston suorittamista startup.sh
käsikirjoitus, joka näyttää hypercorn fastapi-server:app -b 0.0.0.0:8080
. Tämä käynnistyskoodi on sama kaikille säilöille. Jos käytät samaa peruskuvaa kuin mallien jäljittämiseen, voit rakentaa tämän säilön yksinkertaisesti suorittamalla build.sh-komentosarjan. The push.sh
skripti pysyy samana kuin aiemmin jäljitysmalleissa. Muokatun Docker-kuvan ja säilön nimen tarjoaa docker.properties
tiedosto.
- run.sh file
tekee seuraavaa:
- Lukee Docker-kuvan ja säilön nimen tiedostosta ominaisuudet tiedosto, joka puolestaan lukee
config.properties
tiedosto, jossa on anum_cores
käyttäjän asetus - Aloittaa silmukan 0 -
num_cores
ja jokaiselle ytimelle:- Asettaa portin numeron ja laitenumeron
- Asettaa
NEURON_RT_VISIBLE_CORES
ympäristömuuttuja - Määrittää äänenvoimakkuuden kiinnityksen
- Käyttää Docker-säilöä
Selvyyden vuoksi Docker run -komento Inf0:n NeuronCore 1:ssa käyttöönottamiseksi näyttää seuraavalta koodilta:
NeuronCore 5:ssä käyttöönoton suorittamiskomento näyttää seuraavalta koodilta:
Kun kontit on otettu käyttöön, käytämme run_apis.py komentosarja, joka kutsuu sovellusliittymiä rinnakkaisissa säikeissä. Koodi on asetettu kutsumaan kuutta käyttöön otettua mallia, yksi jokaisessa NeuronCoressa, mutta se voidaan helposti muuttaa eri asetuksiksi. Kutsumme API:ita asiakaspuolelta seuraavasti:
Monitor NeuronCore
Mallipalvelimien käyttöönoton jälkeen voimme käyttää NeuronCoren käytön seurantaan neuron-top
tarkkailla reaaliajassa kunkin NeuronCoren käyttöprosenttia. neuroni-top on Neuron SDK:n CLI-työkalu, joka tarjoaa tietoja, kuten NeuronCore, vCPU ja muistin käyttö. Kirjoita erilliseen päätteeseen seuraava komento:
Tulostuksesi pitäisi olla seuraavan kuvan mukainen. Tässä skenaariossa olemme määrittäneet käyttämään kahta NeuronCorea ja kahta mallia palvelinta kohden Inf2.xlarge-esiintymässä. Seuraavassa kuvakaappauksessa näkyy, että kaksi 287.8 Mt:n mallia on ladattu kahdelle NeuronCorelle. Kun yhteensä 4 mallia on ladattu, näet laitteen käytetyn muistin olevan 1.3 Gt. Käytä nuolinäppäimiä liikkuaksesi NeuronCoresin välillä eri laitteissa
Vastaavasti Inf1.16xlarge-ilmentymätyypissä on ladattu yhteensä 12 mallia (2 mallia ydintä kohden yli 6 ytimen). Muistia kuluu yhteensä 2.1 Gt ja jokaisen mallin koko on 177.2 Mt.
Kun olet suorittanut run_apis.py skripti, voit nähdä kunkin kuuden NeuronCoren käyttöasteen (katso seuraava kuvakaappaus). Voit myös nähdä järjestelmän vCPU-käytön ja ajonaikaisen vCPU-käytön.
Seuraavassa kuvakaappauksessa näkyy Inf2-ilmentymän ydinkäyttöprosentti.
Samoin tämä kuvakaappaus näyttää ydinkäytön inf1.6xlarge-instanssityypissä.
Puhdistaa
Kaikkien luomiesi Docker-säiliöiden puhdistamiseksi tarjoamme a cleanup.sh komentosarja, joka poistaa kaikki käynnissä olevat ja pysäytetyt säilöt. Tämä komentosarja poistaa kaikki säilöt, joten älä käytä sitä, jos haluat pitää jotkin säilöt käynnissä.
Yhteenveto
Tuotantotyökuormilla on usein korkea suorituskyky, alhainen latenssi ja kustannusvaatimukset. Tehottomat arkkitehtuurit, jotka käyttävät kiihdyttimiä huonommin, voivat johtaa tarpeettoman korkeisiin tuotantokustannuksiin. Tässä viestissä osoitimme, kuinka NeuronCoresia voidaan käyttää optimaalisesti FastAPI:n kanssa suorituskyvyn maksimoimiseksi vähimmäisviiveellä. Olemme julkaisseet ohjeet sivuillamme GitHub repo. Tämän ratkaisuarkkitehtuurin avulla voit ottaa käyttöön useita malleja jokaisessa NeuronCoressa ja käyttää useita malleja rinnakkain eri NeuronCoreissa menettämättä suorituskykyä. Saat lisätietoja mallien käyttöönotosta laajassa mittakaavassa palveluilla, kuten Amazonin elastisten kuberneettien palvelu (Amazon EKS), katso Tarjoa 3,000 syväoppimismallia Amazon EKS: ssä AWS Inferentian kanssa alle 50 dollarilla tunnissa.
Tietoja kirjoittajista
Ankur Srivastava on vanhempi ratkaisuarkkitehti ML Frameworks -tiimissä. Hän keskittyy auttamaan asiakkaita itseohjatulla hajautetulla koulutuksella ja laajamittaisten päätelmien tekemisessä AWS:stä. Hänen kokemuksensa sisältää teollisen ennakoivan ylläpidon, digitaaliset kaksoset, todennäköisyyspohjaisen suunnittelun optimoinnin ja hän on suorittanut tohtorintutkinnon Rice Universityn konetekniikasta ja tohtorintutkinnon Massachusetts Institute of Technologysta.
KC Tung on vanhempi ratkaisuarkkitehti AWS Annapurna Labsissa. Hän on erikoistunut laajaan syväoppimismallien koulutukseen ja mittakaavaan pilvessä. Hän on Ph.D. molekyylibiofysiikassa Texasin yliopiston Southwestern Medical Centeristä Dallasissa. Hän on puhunut AWS Summitsissa ja AWS Reinventissä. Nykyään hän auttaa asiakkaita kouluttamaan ja ottamaan käyttöön suuria PyTorch- ja TensorFlow-malleja AWS-pilvessä. Hän on kirjoittanut kaksi kirjaa: Opi TensorFlow Enterprise ja TensorFlow 2 Pocket Reference.
Pronoy Chopra on AWS:n Startups Generative AI -tiimin vanhempi ratkaisuarkkitehti. Hän on erikoistunut IoT- ja koneoppimisratkaisujen suunnitteluun ja kehittämiseen. Hän on aiemmin ollut mukana perustamassa kahta startuppia ja nauttii käytännönläheisyydestä IoT-, AI/ML- ja Serverless-toimialueen projekteissa.
- SEO-pohjainen sisällön ja PR-jakelu. Vahvista jo tänään.
- PlatoData.Network Vertical Generatiivinen Ai. Vahvista itseäsi. Pääsy tästä.
- PlatoAiStream. Web3 Intelligence. Tietoa laajennettu. Pääsy tästä.
- PlatoESG. Autot / sähköautot, hiili, CleanTech, energia, ympäristö, Aurinko, Jätehuolto. Pääsy tästä.
- BlockOffsets. Ympäristövastuun omistuksen nykyaikaistaminen. Pääsy tästä.
- Lähde: https://aws.amazon.com/blogs/machine-learning/optimize-aws-inferentia-utilization-with-fastapi-and-pytorch-models-on-amazon-ec2-inf1-inf2-instances/
- :on
- :On
- :ei
- :missä
- $ YLÖS
- 000
- 1
- 1.3
- 10
- 100
- 12
- 13
- 15%
- 2023
- 7
- 8
- 91
- a
- pystyy
- Meistä
- edellä
- abstraktio
- kiihdyttimiä
- pääsy
- Pääsy
- sen mukaisesti
- Tili
- Saavuttaa
- poikki
- aktiivinen
- lisätä
- vastaan
- AI
- AI / ML
- Kaikki
- sallia
- mahdollistaa
- Myös
- Amazon
- Amazon EC2
- Amazon Web Services
- an
- ja
- Kaikki
- api
- API
- sovelluksen
- Hakemus
- sovellukset
- käyttää
- sopiva
- arkkitehtuuri
- OVAT
- perustelut
- AS
- olettaa
- At
- kirjoittaja
- automaattisesti
- saatavuus
- saatavissa
- välttää
- AWS
- AWS Inferencia
- pohja
- perustua
- BE
- koska
- tulevat
- ollut
- ennen
- puolesta
- käyttäytyminen
- ovat
- hyödyttää
- Hyödyt
- PARAS
- parhaat käytännöt
- välillä
- Biofysiikka
- Bitti
- Blogi
- Kirjat
- rakentaa
- Rakentaminen
- rakennettu
- mutta
- by
- soittaa
- nimeltään
- Puhelut
- CAN
- kyvyt
- valmiudet
- joka
- tapaus
- tapauksissa
- keskus
- muuttaa
- muuttunut
- Muutokset
- tarkastaa
- sirut
- valinta
- Valita
- valitsi
- selkeys
- asiakas
- tarkasti
- pilvi
- koodi
- tulee
- vertailu
- kilpailla
- Valmistunut
- Laskea
- Konfigurointi
- Harkita
- ottaen huomioon
- Console
- kulutetaan
- sisältää
- Kontti
- Kontit
- sisältää
- tausta
- jatkuvasti
- kontrasti
- ohjaus
- hallinnassa
- Mukava
- Ydin
- korjata
- Hinta
- kustannukset
- voisi
- Pari
- luoda
- luotu
- luo
- Luominen
- Valtakirja
- ratkaiseva
- Asiakkaat
- Dallas
- päätös
- syvä
- syvä oppiminen
- syvempää
- oletusarvo
- osoittaa
- Riippuen
- sijoittaa
- käyttöön
- levityspinnalta
- käyttöönotto
- Malli
- nimetty
- Huolimatta
- yksityiskohtainen
- määrittää
- kehittämällä
- laite
- Laitteet
- eri
- Diffuusio
- DIG
- digitaalinen
- Digitaaliset kaksoset
- jaettu
- hajautettu koulutus
- Django
- do
- Satamatyöläinen
- ei
- ei
- verkkotunnuksen
- Dont
- dynaaminen
- kukin
- Aikaisemmin
- helpompaa
- helposti
- helppo
- EC
- tehokkaasti
- loppu
- päätepiste
- sitoutua
- Tekniikka
- varmistaa
- enter
- kokonaisuus
- merkintä
- ympäristö
- virheet
- jne.
- Jopa
- Joka
- kehittyvä
- esimerkki
- Paitsi
- experience
- laajennukset
- Kasvot
- perhe
- nopeampi
- mahdollinen
- Ominaisuudet
- Fed
- vähemmän
- Kuva
- filee
- suodattaa
- Vihdoin
- Löytää
- Etunimi
- keskittyy
- jälkeen
- seuraa
- varten
- muoto
- löytyi
- neljä
- Puitteet
- puitteet
- alkaen
- koko
- täysin
- toiminto
- portti
- generatiivinen
- Generatiivinen AI
- saada
- GitHub
- Antaa
- antaa
- Global
- menee
- ohjaavat
- kahva
- käytännön
- Palvelimet
- Olla
- he
- auttaa
- auttaa
- auttaa
- tätä
- Korkea
- korkeampi
- suurin
- hänen
- isäntä
- isännöi
- hotellit
- isännät
- Miten
- Miten
- Kuitenkin
- HTML
- http
- HTTPS
- HalaaKasvot
- ID
- ihanteellinen
- tunnistettu
- if
- kuva
- kuvien
- tuoda
- tärkeä
- in
- mukana
- sisältää
- Saapuva
- Lisäykset
- teollinen
- tehoton
- tiedot
- tietoa
- panos
- tuloa
- asentaa
- asennetaan
- asentaminen
- esimerkki
- sen sijaan
- Instituutti
- ohjeet
- olla vuorovaikutuksessa
- tulee
- kutsuttuihin
- Esineiden internet
- kysymys
- kysymykset
- IT
- SEN
- JIT
- jpg
- vain
- Pitää
- avaimet
- Tietää
- tunnettu
- Labs
- Kieli
- suuri
- Sukunimi
- Viive
- uusin
- käynnistää
- kerros
- kerrokset
- johtaa
- OPPIA
- oppiminen
- Taso
- Kirjasto
- pitää
- linux
- Lista
- lueteltu
- vähän
- vähän syvemmälle
- OTK
- lastaus
- kuormat
- paikallinen
- sijainti
- hakkuu
- Kirjaudu sisään
- katso
- näyttää joltakin
- ulkonäkö
- menettää
- Matala
- alentaa
- alin
- kone
- koneoppiminen
- tehty
- huolto
- tehdä
- TEE
- Tekeminen
- monet
- Massachusetts
- Massachusettsin Teknologian Instituutti
- max
- Maksimoida
- maksimi
- Saattaa..
- mekaaninen
- lääketieteellinen
- Muisti
- Metrics
- mielessä
- minimi
- ML
- malli
- mallit
- muokattu
- muokata
- molekyyli-
- monitori
- lisää
- eniten
- liikkua
- paljon
- moninkertainen
- täytyy
- nimi
- välttämättä
- välttämätön
- Tarve
- tarvitaan
- tarpeet
- Uusi
- seuraava
- nyt
- numero
- tavoite
- tarkkailla
- of
- kampanja
- usein
- on
- kerran
- ONE
- vain
- päälle
- avoimen lähdekoodin
- käyttää
- Operations
- operaattorit
- vastakkainen
- optimointi
- Optimoida
- optimoitu
- or
- meidän
- ulos
- ulostulo
- yli
- paketti
- Parallel
- osa
- kulkea
- Ohi
- polku
- varten
- osuus
- suorituskyky
- Platon
- Platonin tietotieto
- PlatonData
- Kohta
- pistettä
- politiikkaa
- politiikka
- Suosittu
- mahdollinen
- Kirje
- käytännöt
- esittää
- yksityinen
- todennäköisesti
- prosessi
- Prosessit
- tuottavat
- tuotanto
- Profiili
- hankkeet
- ominaisuudet
- toimittaa
- mikäli
- tarjoaa
- valtuutettu
- julkaistu
- vetämällä
- tarkoitus
- Työnnä
- työntää
- työntää
- laittaa
- Python
- pytorch
- alue
- todellinen
- reaaliaikainen
- suositella
- suositeltu
- kirjataan
- heijastaa
- alue
- suhteellisesti
- luottaa
- luottaen
- jäännökset
- poistaa
- korvata
- säilytyspaikka
- pyynnöt
- tarvitaan
- vaatimukset
- tutkimus
- Muistuttaa
- Varanto
- varattu
- Esittelymateriaalit
- vastaus
- vastuullinen
- REST
- Saatu ja
- uudelleen käytettävä
- Riisi
- Rooli
- roolit
- ajaa
- juoksu
- toimii
- uhraa
- sama
- Säästä
- Asteikko
- skenaario
- skriptejä
- sdk
- nähdä
- valinta
- lähettäminen
- vanhempi
- sensible
- erillinen
- serverless
- servers
- palvelu
- Palvelut
- palvelevat
- setti
- asetus
- setup
- muodot
- Jaa:
- yhteinen
- shouldnt
- näyttää
- osoittivat
- esitetty
- Näytä
- puoli
- samankaltainen
- samalla lailla
- yksinkertaisesti
- SIX
- Koko
- koot
- pienempiä
- So
- ratkaisu
- Ratkaisumme
- jonkin verran
- erikoistunut
- erityinen
- määritelty
- puhuttu
- vakaa
- pino
- Alkaa
- käynnistyksen
- Startups
- totesi
- Askeleet
- pysähtynyt
- tallennettu
- varastot
- voimakkaasti
- opinnot
- Onnistuneesti
- niin
- Huippukokouksissa
- tuki
- Tuetut
- varma
- järjestelmä
- taulukko
- ottaa
- otettava
- vie
- joukkue-
- Elektroniikka
- tilapäinen
- tensorflow
- terminaali
- testi
- Testaus
- testit
- texas
- kuin
- että
- -
- heidän
- Niitä
- sitten
- siksi
- Nämä
- ne
- asiat
- tätä
- ne
- Kautta
- suoritusteho
- tied
- aika
- että
- tänään
- työkalu
- työkalut
- ylin
- taskulamppu
- Yhteensä
- Jäljittää
- jäljitys
- perinteinen
- Juna
- koulutus
- muuntajat
- luotettu
- yrittää
- VUORO
- Kaksoset
- kaksi
- tyyppi
- Ubuntu
- varten
- taustalla oleva
- yliopisto
- unix
- turhaan
- päälle
- us
- Käyttö
- käyttää
- käytetty
- käyttäjä
- Käyttäjät
- käyttötarkoituksiin
- käyttämällä
- käyttää
- hyödyntää
- Hyödyntämällä
- arvo
- arvot
- versio
- hyvin
- näkyvä
- visio
- tilavuus
- haluta
- oli
- Tapa..
- we
- verkko
- Web-palvelin
- verkkopalvelut
- HYVIN
- olivat
- kun
- joka
- miksi
- laajalti
- tulee
- with
- sisällä
- ilman
- työntekijä
- työntekijöitä
- olisi
- kirjoittaminen
- kirjallinen
- Voit
- Sinun
- itse
- zephyrnet
- nolla-