A Deep Learning modellek nagyszabású üzembe helyezésekor kulcsfontosságú az alapul szolgáló hardver hatékony felhasználása a teljesítmény és a költségelőnyök maximalizálása érdekében. Nagy áteresztőképességet és alacsony késleltetést igénylő termelési munkaterhelések esetén a Amazon rugalmas számítási felhő Az (EC2) példány, a modellkiszolgáló verem és a telepítési architektúra nagyon fontos. A nem hatékony architektúra a gyorsítók nem optimális kihasználásához és szükségtelenül magas gyártási költségekhez vezethet.
Ebben a bejegyzésben végigvezetjük a FastAPI modellszerverek AWS Inferentia eszközökön történő üzembe helyezésének folyamatán (az Amazon EC2-n található Inf1 és az Amazon EC Inf2 esetek). Bemutatjuk egy olyan mintamodell tárhelyét is, amelyet párhuzamosan telepítenek az összes NeuronCore-ra a maximális hardverkihasználás érdekében.
Megoldás áttekintése
A FastAPI egy nyílt forráskódú webes keretrendszer Python-alkalmazások kiszolgálására, amely sokkal gyorsabb, mint a hagyományos keretrendszerek, például a Flask és a Django. Kihasznál egy Aszinkron szerverátjáró interfész (ASGI) a széles körben használt helyett Webszerver átjáró interfész (WSGI). Az ASGI aszinkron módon dolgozza fel a bejövő kéréseket, szemben a WSGI-vel, amely szekvenciálisan dolgozza fel a kéréseket. Ez teszi a FastAPI-t ideális választássá a késleltetésre érzékeny kérések kezelésére. A FastAPI segítségével olyan kiszolgálót telepíthet, amely végpontot üzemeltet egy Inferentia (Inf1/Inf2) példányokon, amely egy kijelölt porton keresztül figyeli az ügyfelek kéréseit.
Célunk a legmagasabb teljesítmény elérése a legalacsonyabb költségek mellett a hardver maximális kihasználásával. Ez lehetővé teszi, hogy több következtetési kérést kezeljünk kevesebb gyorsítóval. Minden AWS Inferentia1 eszköz négy NeuronCores-v1-et, és minden AWS Inferentia2 eszköz két NeuronCores-v2-t tartalmaz. A AWS Neuron Az SDK lehetővé teszi, hogy az összes NeuronCore-t párhuzamosan használjuk, ami nagyobb irányítást biztosít négy vagy több modell párhuzamos betöltésében és következtetésében, anélkül, hogy az átviteli sebességet feláldoznánk.
A FastAPI segítségével választhat Python webszervert (puskaszarvú, Uvicorn, Hiperkukorica, Daphne). Ezek a webszerverek absztrakciós réteget biztosítanak az alapul szolgáló gépi tanulási (ML) modell tetején. A kérelmező ügyfélnek megvan az az előnye, hogy nem veszi figyelembe a tárolt modellt. Az ügyfélnek nem kell tudnia a kiszolgáló alatt telepített modell nevét vagy verzióját; a végpont neve most csak egy proxy egy függvényhez, amely betölti és futtatja a modellt. Ezzel szemben egy keretrendszer-specifikus kiszolgálóeszközben, például a TensorFlow Servingben, a modell neve és verziója a végpont nevének részét képezi. Ha a modell megváltozik a szerver oldalon, akkor a kliensnek ismernie kell és ennek megfelelően módosítania kell az API-hívását az új végpontra. Ezért, ha folyamatosan fejleszti a verziómodelleket, például az A/B tesztelésnél, akkor egy általános Python webszerver használata FastAPI-val kényelmes módja a modellek kiszolgálásának, mivel a végpont neve statikus.
Az ASGI-kiszolgáló szerepe az, hogy meghatározott számú dolgozót hozzon létre, akik figyelik az ügyfelek kéréseit és futtatják a következtetési kódot. A szerver fontos képessége, hogy megbizonyosodjon arról, hogy a kért számú dolgozó elérhető és aktív. Ha egy dolgozót megölnek, a szervernek új dolgozót kell indítania. Ebben az összefüggésben a szerver és a dolgozók azonosíthatók Unix folyamatazonosítójuk (PID) alapján. Ehhez a bejegyzéshez a Hiperkukorica szerver, amely népszerű választás a Python webszerverek számára.
Ebben a bejegyzésben bevált gyakorlatokat osztunk meg a mélytanulási modellek FastAPI-val történő telepítéséhez az AWS Inferentia NeuronCores rendszeren. Megmutatjuk, hogy több modellt is telepíthet különálló NeuronCore-okra, amelyek egyidejűleg hívhatók. Ez a beállítás növeli az átviteli sebességet, mivel több modellre lehet egyidejűleg következtetni, és a NeuronCore kihasználtsága teljesen optimalizált. A kód megtalálható a GitHub repo. A következő ábra a megoldás EC2 Inf2 példányon történő beállításának architektúráját mutatja be.
Ugyanez az architektúra vonatkozik az EC2 Inf1 példánytípusra is, azzal a különbséggel, hogy négy magja van. Ez egy kicsit megváltoztatja az architektúra diagramot.
AWS Inferentia NeuronCores
Nézzünk egy kicsit mélyebbre az AWS Neuron által biztosított eszközökben a NeuronCores kapcsolathoz. A következő táblázatok az egyes Inf1 és Inf2 példánytípusok neuronmagjainak számát mutatják. A gazdagép vCPU-k és a rendszermemória meg van osztva az összes elérhető NeuronCore között.
Példány mérete | # Inferentia Accelerators | # NeuronCores-v1 | vCPU-k | Memória (GiB) |
Inf1.xlarge | 1 | 4 | 4 | 8 |
Inf1.2xnagy | 1 | 4 | 8 | 16 |
Inf1.6xnagy | 4 | 16 | 24 | 48 |
Inf1.24xnagy | 16 | 64 | 96 | 192 |
Példány mérete | # Inferentia Accelerators | # NeuronCores-v2 | vCPU-k | Memória (GiB) |
Inf2.xlarge | 1 | 2 | 4 | 32 |
Inf2.8xnagy | 1 | 2 | 32 | 32 |
Inf2.24xnagy | 6 | 12 | 96 | 192 |
Inf2.48xnagy | 12 | 24 | 192 | 384 |
Az Inf2 példányok az új NeuronCores-v2-t tartalmazzák az Inf1 példányokban található NeuronCore-v1-hez képest. A kevesebb mag ellenére négyszer nagyobb átviteli sebességet és 4-szer alacsonyabb késleltetést tudnak kínálni, mint az Inf10 példányok. Az Inf1 példányok ideálisak az olyan mélytanulási munkaterhelésekhez, mint a generatív mesterséges intelligencia, a nagy nyelvi modellek (LLM) az OPT/GPT családban és a látástranszformátorok, például a Stable Diffusion.
A Neuron Runtime felelős a modellek Neuron eszközökön való futtatásáért. A Neuron Runtime meghatározza, hogy melyik NeuronCore melyik modellt és hogyan futtassa. A Neuron Runtime konfigurálása a használatával vezérelhető Környezeti változók folyamat szintjén. Alapértelmezés szerint a Neuron keretrendszer-bővítmények gondoskodnak a Neuron Runtime konfigurációjáról a felhasználó nevében; azonban explicit konfigurációk is lehetségesek optimalizáltabb viselkedés elérése érdekében.
Két népszerű környezeti változó NEURON_RT_NUM_CORES
és a NEURON_RT_VISIBLE_CORES
. Ezekkel a környezeti változókkal a Python-folyamatok egy NeuronCore-hoz köthetők. Val vel NEURON_RT_NUM_CORES
, adott számú mag lefoglalható egy folyamathoz, és azzal NEURON_RT_VISIBLE_CORES
, egy sor NeuronCore lefoglalható. Például, NEURON_RT_NUM_CORES=2 myapp.py
két magot fog lefoglalni és NEURON_RT_VISIBLE_CORES=’0-2’ myapp.py
nulla, egy és két magot fog fenntartani myapp.py
. Lefoglalhat NeuronCore-okat az eszközök között (AWS Inferentia chipek) is. Így, NEURON_RT_VISIBLE_CORES=’0-5’ myapp.py
lefoglalja az első négy magot device1
és egy mag rajta device2
egy Ec2 Inf1 példánytípusban. Hasonlóképpen, egy EC2 Inf2 példánytípuson ez a konfiguráció két magot foglal le keresztben device1
és a device2
és egy mag rajta device3
. Az alábbi táblázat összefoglalja ezen változók konfigurációját.
Név | Leírás | típus | Várható értékek | Alapértelmezett érték | RT verzió |
NEURON_RT_VISIBLE_CORES |
A folyamathoz szükséges specifikus NeuronCore-ok köre | Egész tartomány (például 1-3) | Bármilyen érték vagy tartomány 0 és Max NeuronCore között a rendszerben | Egyik sem | 2.0 + |
NEURON_RT_NUM_CORES |
A folyamathoz szükséges NeuronCore-ok száma | Egész szám | 1 és Max NeuronCore közötti érték a rendszerben | 0, amelyet „minden”-ként értelmezünk | 2.0 + |
Az összes környezeti változó listáját lásd: Neuron futásidejű konfigurációja.
Alapértelmezés szerint a modellek betöltésekor a modellek a NeuronCore 0-ra, majd a NeuronCore 1-re töltődnek be, hacsak az előző környezeti változók kifejezetten nem jelzik. A korábban meghatározottak szerint a NeuronCore-ok megosztják az elérhető vCPU-kat és a rendszermemóriát. Ezért az egyes NeuronCore-okon telepített modellek versenyezni fognak a rendelkezésre álló erőforrásokért. Ez nem jelent problémát, ha a modell nagymértékben használja a NeuronCore-okat. De ha egy modell csak részben fut a NeuronCore-eken, a többi pedig a gazdagép vCPU-kon, akkor a CPU-k NeuronCore-onkénti elérhetősége fontossá válik. Ez befolyásolja a példány kiválasztását is.
A következő táblázat a gazda vCPU-k és a rendelkezésre álló rendszermemória számát mutatja modellenként, ha egy modellt telepítettek minden NeuronCore-ra. Az alkalmazás NeuronCore-használatától, vCPU- és memóriahasználatától függően ajánlatos teszteket futtatni, hogy megtudja, melyik konfiguráció a legteljesebb az alkalmazás számára. A Neuron Top eszköz segíthet a maghasználat, valamint az eszköz és a gazdagép memória kihasználtságának megjelenítésében. Ezen mutatók alapján megalapozott döntés hozható. A blog végén bemutatjuk a Neuron Top használatát.
Példány mérete | # Inferentia Accelerators | # Modellek | vCPU-k/modell | Memória/modell (GiB) |
Inf1.xlarge | 1 | 4 | 1 | 2 |
Inf1.2xnagy | 1 | 4 | 2 | 4 |
Inf1.6xnagy | 4 | 16 | 1.5 | 3 |
Inf1.24xnagy | 16 | 64 | 1.5 | 3 |
Példány mérete | # Inferentia Accelerators | # Modellek | vCPU-k/modell | Memória/modell (GiB) |
Inf2.xlarge | 1 | 2 | 2 | 8 |
Inf2.8xnagy | 1 | 2 | 16 | 64 |
Inf2.24xnagy | 6 | 12 | 8 | 32 |
Inf2.48xnagy | 12 | 24 | 8 | 32 |
A Neuron SDK funkcióinak saját maga kipróbálásához tekintse meg a legújabbat Neuron képességek a PyTorch számára.
Rendszer telepítés
A megoldáshoz használt rendszerbeállítás a következő:
Állítsa be a megoldást
A megoldás beállításához néhány dolgot meg kell tennünk. Kezdje azzal, hogy hozzon létre egy IAM-szerepet, amelyet az EC2-példány feltételez, és amely lehetővé teszi számára a leküldést és a lehívást Amazon Elastic Container Registry.
1. lépés: Állítsa be az IAM szerepkört
- Először jelentkezzen be a konzolba, és nyissa meg az IAM > Szerepek > Szerepkör létrehozása menüpontot
- Válassza a Megbízható entitás típusát
AWS Service
- Válassza az EC2 szolgáltatást a használati eset alatt
- Kattints Következő és láthatja az összes elérhető szabályzatot
- Ennek a megoldásnak a céljából teljes hozzáférést biztosítunk az EC2 példányunkhoz az ECR-hez. Szűrés ehhez AmazonEC2ContainerRegistryFullAccess és válassza ki.
- Nyomja meg a Tovább gombot, és nevezze el a szerepet
inf-ecr-access
Megjegyzés: a mellékelt házirend teljes hozzáférést biztosít az EC2 példány számára az Amazon ECR-hez. Nyomatékosan javasoljuk követni a a legkisebb kiváltság elve termelési munkaterheléshez.
2. lépés: Az AWS CLI beállítása
Ha a fent felsorolt, előírt Deep Learning AMI-t használja, akkor az AWS CLI-vel rendelkezik. Ha másik AMI-t (Amazon Linux 2023, Base Ubuntu stb.) használ, telepítse a CLI-eszközöket a következő módon Ez az útmutató.
Miután telepítette a CLI-eszközöket, konfigurálja a CLI-t a paranccsal aws configure
. Ha rendelkezik hozzáférési kulcsokkal, hozzáadhatja őket ide, de nincs szükségük rájuk az AWS-szolgáltatásokkal való interakcióhoz. Ehhez az IAM-szerepekre támaszkodunk.
Megjegyzések: Legalább egy értéket (alapértelmezett régió vagy alapértelmezett formátum) meg kell adnunk az alapértelmezett profil létrehozásához. Ebben a példában a következővel megyünk us-east-2
mint a régió és json
alapértelmezett kimenetként.
Klónozza a Github adattárat
A GitHub repo biztosítja az összes szükséges parancsfájlt a FastAPI-t használó modellek üzembe helyezéséhez a NeuronCores-on AWS Inferentia példányokon. Ez a példa Docker-tárolókat használ annak biztosítására, hogy újrafelhasználható megoldásokat tudjunk létrehozni. Ebben a példában a következő szerepel config.properties fájl a felhasználók számára, hogy megadják a bemeneteket.
A konfigurációs fájlnak felhasználó által megadott névelőtagokra van szüksége a Docker lemezképhez és a Docker-tárolókhoz. A build.sh
forgatókönyv a fastapi
és a trace-model
mappák ezt használják a Docker-képek létrehozására.
Állítson össze egy modellt az AWS Inferentián
Kezdjük a modell nyomon követésével és egy PyTorch Torchscript .pt fájl létrehozásával. Kezdje a hozzáféréssel trace-model
könyvtárba, és módosítani kell az .env fájlt. A kiválasztott példány típusától függően módosítsa a CHIP_TYPE
belül .env
fájlt. Példaként az Inf2-t választjuk útmutatónak. Ugyanezek a lépések vonatkoznak az Inf1 telepítési folyamatára is.
Ezután állítsa be az alapértelmezett régiót ugyanabban a fájlban. Ezt a régiót használja a rendszer egy ECR-tár létrehozásához, és a Docker-képeket ebbe a tárolóba küldi a rendszer. Szintén ebben a mappában biztosítunk minden szkriptet, amely a nyomkövetéséhez szükséges bert-base-uncased
modell az AWS Inferentián. Ez a szkript a legtöbb elérhető modellhez használható Átölelő arc Az dockerfile rendelkezik minden függőséggel a modellek Neuronnal való futtatásához, és futtatja a trace-model.py kódot belépési pontként.
Neuron összeállítás magyarázta
A Neuron SDK API-ja nagyon hasonlít a PyTorch Python API-ra. A torch.jit.trace()
a PyTorch a modellt és a minta bemeneti tenzort veszi argumentumként. A mintabemenetek betáplálódnak a modellbe, és a meghívott műveletek, amikor ez a bemenet áthalad a modell rétegein, mint TorchScript. Ha többet szeretne megtudni a PyTorch JIT nyomkövetéséről, tekintse meg a következőket dokumentáció.
Csakúgy, mint torch.jit.trace()
, ellenőrizheti, hogy a modellje lefordítható-e AWS Inferentián a következő kóddal az inf1 példányokhoz.
Az inf2 esetén a könyvtárat hívják torch_neuronx
. Így tesztelheti a modell-összeállítást az inf2 példányokkal szemben.
A nyomkövetési példány létrehozása után átadhatjuk a példa tenzor bemenetet a következőképpen:
És végül mentse a kapott TorchScript kimenetet a helyi lemezre
Amint az az előző kódban látható, használhatja compiler_args
és a optimizations
a telepítés optimalizálása érdekében. A melletti érvek részletes listája torch.neuron.trace
API, lásd PyTorch-Neuron nyomkövetési python API.
Tartsa szem előtt a következő fontos szempontokat:
- A Neuron SDK jelenleg nem támogatja a dinamikus tenzor alakzatokat. Ezért egy modellt külön kell összeállítani a különböző bemeneti alakzatokhoz. A változó bemeneti alakzatokon a gyűjtőkötözéssel végzett következtetések futtatásával kapcsolatos további információkért lásd: Következtetés futtatása változó bemeneti alakzatokra vödörbe rendezéssel.
- Ha memóriaproblémákkal szembesül egy modell fordításakor, próbálja meg a modellt több vCPU-val vagy memóriával rendelkező AWS Inferentia-példányra fordítani, vagy akár egy nagy c6i- vagy r6i-példányra is, mivel a fordítás csak CPU-kat használ. A lefordítás után a nyomon követett modell valószínűleg futtatható kisebb AWS Inferentia példányméreteken.
Folyamatmagyarázat felépítése
Most futással fogjuk megépíteni ezt a tárolót build.sh. A build szkriptfájl egyszerűen létrehozza a Docker-képet egy alap Deep Learning Container Image lehúzásával és a HuggingFace telepítésével. transformers
csomag. Alapján CHIP_TYPE
pontjában meghatározott .env
fájl, a docker.properties
fájl dönti el a megfelelőt BASE_IMAGE
. Ezt BASE_IMAGE
rámutat az AWS által biztosított Deep Learning Container képre a Neuron Runtime számára.
Egy privát ECR adattáron keresztül érhető el. Mielőtt lehívhatnánk a képet, be kell jelentkeznünk, és ideiglenes AWS-hitelesítési adatokat kell szereznünk.
Megjegyzések: le kell cserélnünk a régiójelző által megadott parancsban felsorolt régiót és a lerakat URI-n belül az általunk megadott régióra. .NS fájlt.
Ennek a folyamatnak a megkönnyítése érdekében használhatjuk a fetch-credentials.sh
fájlt. A régió automatikusan lekerül az .env fájlból.
Ezután a szkript segítségével továbbítjuk a képet nyomja.sh. A push script létrehoz egy tárat az Amazon ECR-ben, és leküldi a tárolóképet.
Végül, amikor a kép meg van építve és tolva, futtatással konténerként futtathatjuk fuss.sh és farokfutó naplók -val logs.sh. A fordítónaplókban (lásd a következő képernyőképet) látni fogja a Neuronon lefordított aritmetikai operátorok százalékos arányát és a Neuronon sikeresen lefordított modell-algráfok százalékos arányát. A képernyőképen a fordítónaplók láthatók bert-base-uncased-squad2
modell. A naplók azt mutatják, hogy az aritmetikai operátorok 95.64%-a le lett fordítva, és felsorolja azokat az operátorokat is, amelyek a Neuronon lettek lefordítva, és amelyek nem támogatottak.
Itt van egy lista az összes támogatott operátor közül a legújabb PyTorch Neuron csomagban. Hasonlóképpen, itt a lista az összes támogatott operátor közül a legújabb PyTorch Neuronx csomagban.
Telepítsen modelleket FastAPI-val
A modellek összeállítása után a nyomon követett modell jelen lesz a trace-model
mappát. Ebben a példában a nyomon követett modellt 1-es kötegmérethez helyeztük el. Az 1-es kötegméretet itt figyelembe vesszük, hogy figyelembe vegyük azokat a felhasználási eseteket, amikor nagyobb kötegméret nem kivitelezhető vagy nem szükséges. Olyan felhasználási esetekben, amikor nagyobb tételméretre van szükség, a fáklya.neuron.DataParallel (Inf1-hez) ill torch.neuronx.DataParallel (Inf2 esetén) Az API is hasznos lehet.
A fast-api mappa tartalmazza az összes szükséges szkriptet a modellek FastAPI-val történő üzembe helyezéséhez. A modellek változtatás nélküli üzembe helyezéséhez egyszerűen futtassa a telepíteni.sh parancsfájlt, és létrehoz egy FastAPI tárolóképet, futtatja a tárolókat a megadott számú magon, és telepíti a megadott számú modellt kiszolgálónként minden FastAPI modellkiszolgálón. Ebben a mappában található még a .env
fájlt, módosítsa úgy, hogy a helyes legyen CHIP_TYPE
és a AWS_DEFAULT_REGION
.
Megjegyzések: A FastAPI szkriptek ugyanazokra a környezeti változókra támaszkodnak, amelyeket a képek konténerként való felépítéséhez, leküldéséhez és futtatásához használnak. A FastAPI telepítési szkriptek ezeknek a változóknak az utolsó ismert értékeit fogják használni. Tehát, ha utoljára nyomon követte az Inf1 példánytípus modelljét, akkor a modell ezeken a parancsfájlokon keresztül lesz üzembe helyezve.
A fastapi-server.py A szerver üzemeltetéséért és a kéréseknek a modellnek való elküldéséért felelős fájl a következőket teszi:
- Beolvassa a modellek számát szerverenként és a lefordított modell helyét a tulajdonságfájlból
- Beállítja a látható NeuronCore-okat környezeti változóként a Docker-tárolóban, és beolvassa a környezeti változókat, hogy meghatározza, melyik NeuronCore-okat használja.
- Következtetési API-t biztosít a
bert-base-uncased-squad2
modell - A
jit.load()
, betölti a konfigurációban megadott számú modellt szerverenként, és globális szótárakba tárolja a modelleket és a szükséges tokenizátorokat
Ezzel a beállítással viszonylag egyszerű lenne olyan API-kat beállítani, amelyek felsorolják, hogy mely modellek és hány modell található az egyes NeuronCore-ban. Hasonlóképpen API-k írhatók a modellek bizonyos NeuronCore-okból való törlésére.
A dockerfile A FastAPI konténerek építéséhez a modellek nyomon követésére épített Docker image-re épül. Éppen ezért a dokkoló.tulajdonságok fájl megadja a Docker-kép ECR-útvonalát a modellek nyomon követéséhez. A mi beállításunkban a Docker-tárolók az összes NeuronCore-ban hasonlóak, így egyetlen képet készíthetünk, és több tárolót futtathatunk egy képből. A belépési pontok hibáinak elkerülése érdekében megadjuk ENTRYPOINT ["/usr/bin/env"]
a Dockerfile-ban, mielőtt futtatná a startup.sh
script, ami úgy néz ki hypercorn fastapi-server:app -b 0.0.0.0:8080
. Ez az indítási szkript minden tárolóhoz ugyanaz. Ha ugyanazt az alapképet használja, mint a modellek nyomkövetéséhez, akkor a build.sh szkript futtatásával összeállíthatja ezt a tárolót. A push.sh
script ugyanaz marad, mint korábban a nyomkövetési modelleknél. A módosított Docker-képet és a tároló nevét a docker.properties
fájlt.
A run.sh file
a következőket teszi:
- Beolvassa a Docker-képet és a tároló nevét a ingatlanait fájl, amely viszont beolvassa a
config.properties
fájl, amely anum_cores
felhasználói beállítás - Elindít egy hurkot 0-tól
num_cores
és minden maghoz:- Beállítja a port számát és az eszköz számát
- Beállítja a
NEURON_RT_VISIBLE_CORES
környezeti változó - Meghatározza a kötet rögzítését
- Docker-tárolót futtat
Az egyértelműség kedvéért a Docker run parancs a NeuronCore 0 for Inf1 rendszerben történő telepítéséhez a következő kódhoz hasonlóan néz ki:
A NeuronCore 5-ben történő telepítéshez szükséges futtatási parancs a következő kódhoz hasonlóan néz ki:
A konténerek telepítése után használjuk a run_apis.py script, amely párhuzamos szálakban hívja meg az API-kat. A kód úgy van beállítva, hogy hat telepített modellt hívjon meg, egyet minden NeuronCore-on, de könnyen módosítható más beállításra. Az API-kat kliens oldalról a következőképpen hívjuk:
Monitor NeuronCore
A modellkiszolgálók üzembe helyezése után a NeuronCore kihasználtságának nyomon követésére használhatjuk neuron-top
hogy valós időben figyelje meg az egyes NeuronCore kihasználtságát. neuron-top egy CLI-eszköz a Neuron SDK-ban, amely információkat szolgáltat, például a NeuronCore-ról, a vCPU-ról és a memóriahasználatról. Egy külön terminálba írja be a következő parancsot:
A kimenetnek hasonlónak kell lennie az alábbi ábrához. Ebben a forgatókönyvben két NeuronCore és két modell használatát határoztuk meg kiszolgálónként egy Inf2.xlarge példányon. A következő képernyőkép azt mutatja, hogy két, egyenként 287.8 MB méretű modell két NeuronCore-ra van betöltve. Ha összesen 4 modellt tölt be, láthatja, hogy a készülék memóriája 1.3 GB-ot tesz ki. A nyílbillentyűkkel mozoghat a NeuronCore-ok között a különböző eszközökön
Hasonlóképpen, egy Inf1.16xlarge példánytípuson összesen 12 modellt látunk betöltve (2 modell magonként 6 mag felett). A teljes memória 2.1 GB-ot fogyaszt, és minden modell 177.2 MB méretű.
Miután lefuttatta a run_apis.py szkriptet, láthatja mind a hat NeuronCore kihasználtságának százalékos arányát (lásd a következő képernyőképet). Megtekintheti a rendszer vCPU-használatát és a futásidejű vCPU-használatot is.
A következő képernyőkép az Inf2 példány maghasználati százalékát mutatja.
Hasonlóképpen, ez a képernyőkép a maghasználatot mutatja egy inf1.6xlarge példánytípusban.
Tisztítsuk meg
Az Ön által létrehozott összes Docker-tároló megtisztításához biztosítunk a tisztítás.sh szkript, amely eltávolítja az összes futó és leállított tárolót. Ez a szkript eltávolítja az összes tárolót, ezért ne használja, ha továbbra is futni szeretne néhány tárolót.
Következtetés
A termelési munkaterhelések gyakran nagy átviteli sebességgel, alacsony késleltetéssel és költségigényekkel rendelkeznek. A nem hatékony architektúrák, amelyek szuboptimálisan használják a gyorsítókat, szükségtelenül magas gyártási költségekhez vezethetnek. Ebben a bejegyzésben megmutattuk, hogyan lehet optimálisan kihasználni a NeuronCore-okat a FastAPI-val az átviteli sebesség maximalizálása érdekében minimális késleltetés mellett. Az utasításokat a mi oldalon tettük közzé GitHub repo. Ezzel a megoldási architektúrával több modellt telepíthet minden NeuronCore-ba, és több modellt üzemeltethet párhuzamosan különböző NeuronCore-okon a teljesítmény elvesztése nélkül. További információ a modellek nagyszabású üzembe helyezéséről olyan szolgáltatásokkal, mint a Amazon Elastic Kubernetes szolgáltatás (Amazon EKS), lásd 3,000 mély tanulási modell kiszolgálása az Amazon EKS-en az AWS Inferentiával óránként 50 dollár alatt.
A szerzőkről
Ankur Srivastava Sr. Solutions Architect az ML Frameworks csapatában. Arra összpontosít, hogy segítse az ügyfeleket a saját maga által irányított, elosztott képzéssel és az AWS-re vonatkozó széles körű következtetésekkel. Tapasztalatai közé tartozik az ipari prediktív karbantartás, a digitális ikrek, a valószínűségi tervezés optimalizálása, doktori tanulmányait a Rice Egyetem gépészmérnöki szakán, valamint a Massachusetts Institute of Technology posztdoktori kutatását végezte.
KC Tung az AWS Annapurna Labs vezető megoldástervezője. Szakterülete a nagy mélységű tanulási modellek képzése és a felhőben történő nagyszabású telepítés. Ph.D fokozata van. molekuláris biofizikában a Texasi Egyetem Délnyugati Orvosi Központjában, Dallasiban. Felszólalt az AWS Summits és az AWS Reinvent rendezvényeken. Ma segít ügyfeleinek a nagy PyTorch és TensorFlow modellek betanításában és üzembe helyezésében az AWS felhőben. Két könyv szerzője: Ismerje meg a TensorFlow Enterprise-t és a TensorFlow 2 Pocket Reference.
Pronoy Chopra az AWS Startups Generative AI csapatának vezető megoldástervezője. Szakterülete az IoT és a Machine Learning megoldások tervezése és fejlesztése. A múltban két startup társalapítója volt, és szívesen foglalkozik az IoT, az AI/ML és a Serverless tartomány projektjeivel.
- SEO által támogatott tartalom és PR terjesztés. Erősödjön még ma.
- PlatoData.Network Vertical Generative Ai. Erősítse meg magát. Hozzáférés itt.
- PlatoAiStream. Web3 Intelligence. Felerősített tudás. Hozzáférés itt.
- PlatoESG. Autóipar / elektromos járművek, Carbon, CleanTech, Energia, Környezet, Nap, Hulladékgazdálkodás. Hozzáférés itt.
- BlockOffsets. A környezetvédelmi ellentételezési tulajdon korszerűsítése. Hozzáférés itt.
- Forrás: https://aws.amazon.com/blogs/machine-learning/optimize-aws-inferentia-utilization-with-fastapi-and-pytorch-models-on-amazon-ec2-inf1-inf2-instances/
- :van
- :is
- :nem
- :ahol
- $ UP
- 000
- 1
- 1.3
- 10
- 100
- 12
- 13
- 15%
- 2023
- 7
- 8
- 91
- a
- Képes
- Rólunk
- felett
- absztrakció
- gyorsítók
- hozzáférés
- Hozzáférés
- Eszerint
- Fiók
- Elérése
- át
- aktív
- hozzá
- ellen
- AI
- AI / ML
- Minden termék
- lehetővé
- lehetővé teszi, hogy
- Is
- amazon
- Amazon EC2
- Az Amazon Web Services
- an
- és a
- bármilyen
- api
- API-k
- app
- Alkalmazás
- alkalmazások
- alkalmaz
- megfelelő
- építészet
- VANNAK
- érvek
- AS
- feltételezni
- At
- szerző
- automatikusan
- elérhetőség
- elérhető
- elkerülése érdekében
- AWS
- AWS Inferentia
- bázis
- alapján
- BE
- mert
- válik
- óta
- előtt
- nevében
- viselkedés
- hogy
- haszon
- Előnyök
- BEST
- legjobb gyakorlatok
- között
- Biofizika
- Bit
- Blog
- Könyvek
- épít
- Épület
- épült
- de
- by
- hívás
- hívott
- kéri
- TUD
- képességek
- képesség
- ami
- eset
- esetek
- Központ
- változik
- megváltozott
- Változások
- ellenőrizze
- játékpénz
- választás
- A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a
- választotta
- világosság
- vásárló
- szorosan
- felhő
- kód
- jön
- összehasonlítás
- versenyez
- Befejezett
- Kiszámít
- Configuration
- Fontolja
- figyelembe véve
- Konzol
- fogyasztott
- tartalmaz
- Konténer
- Konténerek
- tartalmaz
- kontextus
- folyamatosan
- kontraszt
- ellenőrzés
- vezérelt
- Kényelmes
- Mag
- kijavítására
- Költség
- kiadások
- tudott
- Pár
- teremt
- készítette
- teremt
- létrehozása
- Hitelesítő adatok
- kritikus
- Ügyfelek
- Dallas
- döntés
- mély
- mély tanulás
- mélyebb
- alapértelmezett
- bizonyítani
- attól
- telepíteni
- telepített
- bevezetéséhez
- bevetés
- Design
- kijelölt
- Ellenére
- részletes
- meghatározza
- fejlesztése
- eszköz
- Eszközök
- különböző
- Diffusion
- DIG
- digitális
- Digitális ikrek
- megosztott
- elosztott képzés
- Django
- do
- Dokkmunkás
- nem
- Nem
- domain
- ne
- dinamikus
- minden
- Korábban
- könnyebb
- könnyen
- könnyű
- EC
- hatékonyan
- végén
- Endpoint
- vegyenek
- Mérnöki
- biztosítására
- belép
- egység
- belépés
- Környezet
- hibák
- stb.
- Még
- Minden
- fejlődik
- példa
- Kivéve
- tapasztalat
- kiterjesztések
- Arc
- család
- gyorsabb
- megvalósítható
- Jellemzők
- Fed
- kevesebb
- Ábra
- filé
- szűrő
- Végül
- Találjon
- vezetéknév
- koncentrál
- következő
- következik
- A
- formátum
- talált
- négy
- Keretrendszer
- keretek
- ból ből
- Tele
- teljesen
- funkció
- gateway
- nemző
- Generatív AI
- kap
- GitHub
- Ad
- ad
- Globális
- megy
- útmutató
- fogantyú
- hands-on
- hardver
- Legyen
- he
- segít
- segít
- segít
- itt
- Magas
- <p></p>
- legnagyobb
- övé
- vendéglátó
- házigazdája
- tárhely
- hosts
- Hogyan
- How To
- azonban
- HTML
- http
- HTTPS
- HuggingFace
- ID
- ideális
- azonosított
- if
- kép
- képek
- importál
- fontos
- in
- beleértve
- magában foglalja a
- Bejövő
- Növeli
- ipari
- nem hatékony
- információ
- tájékoztatták
- bemenet
- bemenet
- telepíteni
- telepítve
- telepítése
- példa
- helyette
- Intézet
- utasítás
- kölcsönhatásba
- bele
- hivatkozni
- tárgyak internete
- kérdés
- kérdések
- IT
- ITS
- JIT
- jpg
- éppen
- Tart
- kulcsok
- Ismer
- ismert
- Labs
- nyelv
- nagy
- keresztnév
- Késleltetés
- legutolsó
- indít
- réteg
- tojók
- vezet
- TANUL
- tanulás
- szint
- könyvtár
- mint
- linux
- Lista
- Listázott
- kis
- kicsit mélyebben
- LLM
- betöltés
- terhelések
- helyi
- elhelyezkedés
- fakitermelés
- Belépés
- néz
- hasonló
- MEGJELENÉS
- vesztes
- Elő/Utó
- alacsonyabb
- legalacsonyabb
- gép
- gépi tanulás
- készült
- karbantartás
- csinál
- KÉSZÍT
- Gyártás
- sok
- Massachusetts
- Massachusetts Institute of Technology
- max
- Maximize
- maximális
- Lehet..
- mechanikai
- orvosi
- Memory design
- Metrics
- bánja
- minimum
- ML
- modell
- modellek
- módosított
- módosítása
- molekuláris
- monitor
- több
- a legtöbb
- mozog
- sok
- többszörös
- kell
- név
- szükségszerűen
- elengedhetetlen
- Szükség
- szükséges
- igények
- Új
- következő
- Most
- szám
- célkitűzés
- megfigyelni
- of
- ajánlat
- gyakran
- on
- egyszer
- ONE
- csak
- -ra
- nyílt forráskódú
- működik
- Művelet
- üzemeltetők
- ellentétes
- optimalizálás
- Optimalizálja
- optimalizált
- or
- mi
- ki
- teljesítmény
- felett
- csomag
- Párhuzamos
- rész
- elhalad
- múlt
- ösvény
- mert
- százalék
- teljesítmény
- Plató
- Platón adatintelligencia
- PlatoData
- pont
- pont
- Politikák
- politika
- Népszerű
- lehetséges
- állás
- gyakorlat
- be
- magán
- valószínűleg
- folyamat
- Folyamatok
- termelő
- Termelés
- profil
- projektek
- ingatlanait
- ad
- feltéve,
- biztosít
- meghatalmazott
- közzétett
- vontatás
- cél
- Nyomja
- meglökött
- kitolja
- tesz
- Piton
- pytorch
- hatótávolság
- igazi
- real-time
- ajánl
- ajánlott
- feljegyzett
- tükröznie
- vidék
- viszonylag
- támaszkodnak
- támaszkodva
- maradványok
- eltávolítása
- cserélni
- raktár
- kéri
- kötelező
- követelmények
- kutatás
- hasonlít
- Tartalék
- fenntartott
- Tudástár
- válasz
- felelős
- REST
- kapott
- újrahasználható
- Rizs
- Szerep
- szerepek
- futás
- futás
- fut
- feláldozása
- azonos
- Megtakarítás
- Skála
- forgatókönyv
- szkriptek
- sdk
- lát
- kiválasztás
- elküldés
- idősebb
- érzékeny
- különálló
- vagy szerver
- Szerverek
- szolgáltatás
- Szolgáltatások
- szolgáló
- készlet
- beállítás
- felépítés
- formák
- Megosztás
- megosztott
- kellene
- előadás
- kimutatta,
- mutatott
- Műsorok
- oldal
- hasonló
- Hasonlóképpen
- egyszerűen
- SIX
- Méret
- méretek
- kisebb
- So
- megoldások
- Megoldások
- néhány
- specializálódott
- különleges
- meghatározott
- beszélt
- stabil
- verem
- kezdet
- indítás
- Startups
- meghatározott
- Lépései
- megállt
- memorizált
- árnyékolók
- erősen
- tanulmányok
- sikeresen
- ilyen
- Csúcstalálkozók
- támogatás
- Támogatott
- biztos
- rendszer
- táblázat
- Vesz
- meghozott
- tart
- csapat
- Technológia
- ideiglenes
- tensorflow
- terminál
- teszt
- Tesztelés
- tesztek
- Texas
- mint
- hogy
- A
- azok
- Őket
- akkor
- ebből adódóan
- Ezek
- ők
- dolgok
- ezt
- azok
- Keresztül
- áteresztőképesség
- Bekötött
- idő
- nak nek
- Ma
- szerszám
- szerszámok
- felső
- fáklya
- Végösszeg
- Nyom
- nyomkövetés
- hagyományos
- Vonat
- Képzések
- transzformerek
- Megbízható
- megpróbál
- FORDULAT
- Ikrek
- kettő
- típus
- Ubuntu
- alatt
- mögöttes
- egyetemi
- unix
- szükségtelenül
- upon
- us
- Használat
- használ
- használt
- használó
- Felhasználók
- használ
- segítségével
- hasznosít
- hasznosítja
- kihasználva
- érték
- Értékek
- változat
- nagyon
- látható
- látomás
- kötet
- akar
- volt
- Út..
- we
- háló
- webszerver
- webes szolgáltatások
- JÓL
- voltak
- amikor
- ami
- miért
- széles körben
- lesz
- val vel
- belül
- nélkül
- munkás
- dolgozók
- lenne
- írás
- írott
- te
- A te
- magad
- zephyrnet
- nulla