A mesterséges intelligencia elterjedése az iparágban egyre gyorsul, az ügyfelek olyan kifinomult modelleket építenek, amelyek kihasználják a mély tanulás új tudományos áttöréseit. Ezek a következő generációs modellek lehetővé teszik a legmodernebb, emberhez hasonló teljesítmény elérését a természetes nyelvi feldolgozás (NLP), a számítógépes látás, a beszédfelismerés, az orvosi kutatás, a kiberbiztonság, a fehérjeszerkezet előrejelzése és sok más területén. . Például az olyan nagy nyelvi modellek, mint a GPT-3, az OPT és a BLOOM képesek lefordítani, összefoglalni és emberszerű árnyalatokkal írni szöveget. A számítógépes látástérben a szöveg-kép diffúziós modellek, mint például a DALL-E és az Imagen fotorealisztikus képeket hozhatnak létre természetes nyelvből, magasabb szintű vizuális és nyelvi megértéssel a körülöttünk lévő világból. Ezek a multimodális modellek gazdagabb funkciókat biztosítanak a különféle downstream feladatokhoz, és finomhangolásukat is lehetővé teszik bizonyos tartományokhoz, és hatékony üzleti lehetőségeket kínálnak ügyfeleinknek.
Ezek a mélytanulási modellek méretüket tekintve folyamatosan növekszenek, és jellemzően több milliárd modellparamétert tartalmaznak a modell teljesítményének skálázásához számos feladathoz, például képgeneráláshoz, szövegösszegzéshez, nyelvi fordításhoz stb. Szükség van ezeknek a modelleknek a testreszabására is, hogy hiperszemélyre szabott élményt nyújtsanak az egyéneknek. Ennek eredményeként több modellt fejlesztenek ki, finomhangolva ezeket a modelleket különféle downstream feladatokhoz. Az AI-alkalmazások késleltetési és átviteli céljainak teljesítése érdekében a GPU-példányokat részesítik előnyben a CPU-példányokkal szemben (a GPU-k által kínált számítási teljesítmény miatt). A GPU-példányok azonban drágák, és a költségek összeadódnak, ha 10-nél több modellt telepít. Bár ezek a modellek potenciálisan hatásos mesterségesintelligencia-alkalmazásokat hozhatnak létre, méretük és modellek száma miatt nehéz lehet ezeket a mély tanulási modelleket költséghatékony módon skálázni.
Amazon SageMaker A többmodell végpontok (MME) méretezhető és költséghatékony módot kínálnak számos mély tanulási modell telepítésére. Az MME-k népszerű tárhelyválasztások több száz CPU-alapú modell fogadására olyan ügyfelek körében, mint a Zendesk, a Veeva és az AT&T. Korábban korlátozott lehetőségei voltak több száz mély tanulási modell üzembe helyezésére, amelyek gyorsított számítást igényeltek GPU-kkal. Ma bejelentettük az MME támogatását a GPU-hoz. Mostantól több ezer mély tanulási modellt telepíthet egyetlen SageMaker-végpont mögé. Az MME-k mostantól több modellt is futtathatnak egy GPU-magon, megoszthatják a GPU-példányokat egy végpont mögött több modell között, és dinamikusan betölthetik és törölhetik a modelleket a bejövő forgalom alapján. Ezzel jelentősen megtakaríthatja a költségeket és a legjobb árteljesítményt érheti el.
Ebben a bejegyzésben bemutatjuk, hogyan lehet több mély tanulási modellt futtatni GPU-n SageMaker MME-kkel.
SageMaker MME-k
A SageMaker MME-k lehetővé teszik több modell telepítését egyetlen következtetési végpont mögé, amely egy vagy több példányt tartalmazhat. Az MME-kkel minden példány több modellt is betölthet és kiszolgálhat. Az MME-k lehetővé teszik, hogy megtörje a több modell hosztolásának lineárisan növekvő költségeit, és az infrastruktúrát az összes modellben újra felhasználja.
A következő diagram egy SageMaker MME architektúráját mutatja be.
A SageMaker MME dinamikusan letölti a modelleket innen Amazon egyszerű tárolási szolgáltatás (Amazon S3) meghívásakor, ahelyett, hogy a végpont első létrehozásakor letöltené az összes modellt. Ennek eredményeként egy modell kezdeti meghívása magasabb következtetési késleltetést láthat, mint a későbbi következtetések, amelyek alacsony késleltetéssel fejeződnek be. Ha a modell meghívásakor már be van töltve a tárolóba, akkor a letöltési és betöltési lépés kimarad, és a modell alacsony késleltetéssel adja vissza a következtetéseket. Tegyük fel például, hogy van egy modellje, amelyet naponta csak néhány alkalommal használnak. Igény szerint automatikusan betöltődik, míg a gyakran használt modellek a memóriában maradnak, és következetesen alacsony késleltetéssel hívódnak meg.
SageMaker MME-k GPU-támogatással
A SageMaker MME-k GPU-val működnek NVIDIA Triton következtetés szerver. Az NVIDIA Triton Inference Server egy nyílt forráskódú következtetéskiszolgáló szoftver, amely leegyszerűsíti a következtetések kiszolgálásának folyamatát, és nagy következtetési teljesítményt biztosít. A Triton támogatja az összes főbb képzési és következtetési keretrendszert, mint például a TensorFlow, NVIDIA® TensorRT™, PyTorch, MXNet, Python, ONNX, XGBoost, Scikit-learn, RandomForest, OpenVINO, egyéni C++ stb. Dinamikus kötegelést, párhuzamos futtatásokat, edzés utáni kvantálást és optimális modellkonfigurációt kínál a nagy teljesítményű következtetések eléréséhez. Ezenkívül az NVIDIA Triton Inference Servert kiterjesztették a megvalósításra MME API szerződés, integrálni az MME-vel.
A következő diagram egy MME munkafolyamatot mutat be.
A munkafolyamat lépései a következők:
- A SageMaker MME HTTP-hívási kérelmet kap egy adott modellhez
TargetModel
a kérésben a hasznos teherrel együtt. - A SageMaker a forgalmat a megfelelő példányhoz irányítja a végpont mögött, ahol a célmodell betöltődik. A SageMaker megérti az MME mögött álló összes modell forgalmi mintáját, és okosan irányítja a kéréseket.
- A SageMaker gondoskodik a végpont mögötti modellkezelésről, dinamikusan betölti a modellt a tároló memóriájába, és a GPU-példányok megosztott flottájából eltávolítja a modellt a legjobb árteljesítmény érdekében.
- A SageMaker dinamikusan tölti le a modelleket az Amazon S3-ból a példány tárhelyére. Ha a meghívott modell nem érhető el a példánytároló köteten, a modell letöltődik a példánytároló kötetre. Ha a példány tárolási kötete eléri a kapacitást, a SageMaker törli a nem használt modelleket a tárolókötetről.
- A SageMaker betölti a modellt az NVIDIA Triton tároló memóriájába egy GPU-gyorsított példányon, és kiszolgálja a következtetési kérést. A GPU magot egy példányban lévő összes modell megosztja. Ha a modell már be van töltve a tárolómemóriába, a következő kérések gyorsabban kerülnek kiszolgálásra, mivel a SageMakernek nem kell letöltenie és újra betöltenie.
- A SageMaker gondoskodik az MME végpont felé irányuló forgalom alakításáról, és optimális modellpéldányokat tart fenn a GPU-példányokon a legjobb árteljesítmény érdekében. Továbbra is arra a példányra irányítja a forgalmat, ahol a modell betöltődik. Ha a példányerőforrások a magas kihasználtság miatt elérik a kapacitást, a SageMaker kirakja a legkevésbé használt modelleket a tárolóból, hogy erőforrásokat szabadítson fel a gyakrabban használt modellek betöltéséhez.
A SageMaker MME-k vízszintesen skálázhatnak egy automatikus skálázási házirend segítségével, és további GPU-számítási példányokat állíthatnak elő olyan metrikák alapján, mint például a példányonkénti meghívások és a GPU-használat, hogy kiszolgálják az MME-végpontok felé irányuló forgalomnövekedést.
Megoldás áttekintése
Ebben a bejegyzésben megmutatjuk, hogyan használhatod a SageMaker MME-k új funkcióit GPU-val számítógépes látáshasználattal. Demonstrációs célokra egy ResNet-50 konvolúciós neurális hálózat előre betanított modellt használunk, amely 1,000 kategóriába sorolja a képeket. Megbeszéljük, hogyan kell a következőket tenni:
- Használjon NVIDIA Triton következtetési tárolót a SageMaker MME-ken, különböző Triton modell keretrendszer-háttérprogramokkal, például PyTorch és TensorRT használatával
- Alakítsa át a ResNet-50 modelleket optimalizált TensorRT motorformátumra, és helyezze üzembe a SageMaker MME segítségével
- Állítsa be az automatikus méretezési házirendeket az MME számára
- A használatával betekintést nyerhet a példányok és hívási metrikákba amazonfelhőóra
Modelltermékek létrehozása
Ez a szakasz végigvezeti a ResNet-50 előre betanított modell előkészítésének lépéseit a SageMaker MME-n, a Triton Inference Server modellkonfigurációit használva. Az összes lépést reprodukálhatja a lépésről-lépésre beépített notebook segítségével GitHub.
Ebben a bejegyzésben két modellel mutatjuk be a telepítést. Azonban több száz modellt készíthet elő és telepíthet. A modellek megoszthatják ugyanazt a keretet, vagy nem.
Készítsen PyTorch modellt
Először egy előre betanított ResNet50 modellt töltünk be a torchvision model csomag segítségével. A modellt model.pt fájlként mentjük TorchScript optimalizált és szerializált formátumban. A TorchScript összeállítja a ResNet50 modell előrehaladását eger módban példabemenetekkel, így egy RGB-kép egy példányát adjuk át három, 224 x 224 méretű színcsatornával.
Ezután fel kell készítenünk a modelleket a Triton Inference Server számára. A következő kód a PyTorch keretrendszer háttérrendszerének modelltárát mutatja. A Triton a modelltárban elhelyezett model.pt fájlt használja az előrejelzések kiszolgálására.
A modell konfigurációs fájlja config.pbtxt
meg kell adni a modell nevét (resnet
), a platform és a háttértulajdonságok (pytorch_libtorch
), max_batch_size
(128
), valamint a bemeneti és kimeneti tenzorokat, valamint az adattípust (TYPE_FP32
) információ. Ezenkívül megadhatja instance_group
és a dynamic_batching
tulajdonságai a nagy teljesítményű következtetések eléréséhez. Lásd a következő kódot:
Készítse elő a TensorRT modellt
NVIDIA TensorRT egy SDK a nagy teljesítményű mély tanulási következtetésekhez, és tartalmaz egy mély tanulási következtetés optimalizálót és futási időt, amely alacsony késleltetést és nagy átviteli sebességet biztosít a következtetési alkalmazások számára. A parancssori eszközt használjuk trtexec
hogy egy TensorRT soros motort állítsunk elő egy ONNX modell formátum. Hajtsa végre a következő lépéseket egy ResNet-50 előre betanított modell NVIDIA TensorRT formátumra konvertálásához:
- Exportálja az előre betanított ResNet-50 modellt ONNX formátumba a használatával fáklya.onnx.Ez a lépés egyszer lefuttatja a modellt, hogy egy mintabemenettel nyomon kövesse a futtatását, majd exportálja a követett modellt a megadott fájlba
model.onnx
. - A trtexec használatával hozzon létre egy TensorRT motortervet a
model.onnx
fájlt. Opcionálisan csökkentheti a lebegőpontos számítások pontosságát, vagy egyszerűen 16 bites lebegőpontos futtatással, vagy a lebegőpontos értékek kvantálásával, így a számítások 8 bites egész számok használatával hajthatók végre.
A következő kód a TensorRT modell modelltár struktúráját mutatja:
A TensorRT modellnél megadjuk tensorrt_plan
platformként, és adja meg a színcsatornákkal rendelkező 224 x 224 méretű kép Tensor specifikációit. Az 1,000 dimenziós kimeneti Tensor típusú TYPE_FP32
, amely megfelel a különböző objektumkategóriáknak. Lásd a következő kódot:
Tárolja modelltermékeket az Amazon S3-ban
A SageMaker a modell műtermékeit várja .tar.gz
formátum. Meg kell felelniük a Triton tárolókra vonatkozó követelményeknek is, mint például a modell neve, verziója, config.pbtxt
fájlok és még sok más. tar
a modellfájlt tartalmazó mappa as .tar.gz
és töltse fel az Amazon S3-ra:
Most, hogy feltöltöttük a modelltermékeket az Amazon S3-ra, létrehozhatunk egy SageMaker MME-t.
Telepítsen modelleket MME-vel
Most egy ResNet-50 modellt telepítünk két különböző keretrendszerrel (PyTorch és TensorRT) a SageMaker MME-ben.
Vegye figyelembe, hogy több száz modellt telepíthet, és a modellek ugyanazt a keretrendszert használhatják. Különféle kereteket is használhatnak, amint az ebben a bejegyzésben látható.
Az általunk használt AWS SDK Pythonhoz (Boto3) API-k model_modell létrehozása, create_endpoint_configés létrehozás_végpont MME létrehozásához.
Határozza meg a kiszolgáló edényt
A tároló definíciójában adja meg a model_data_url
az S3 könyvtár megadásához, amely tartalmazza az összes modellt, amelyet a SageMaker MME használ az előrejelzések betöltésére és kiszolgálására. Készlet Mode
nak nek MultiModel
jelzi, hogy a SageMaker az MME-tároló specifikációival hozza létre a végpontot. A tárolót olyan képpel állítjuk be, amely támogatja az MME-k GPU-val történő telepítését. Lásd a következő kódot:
Hozzon létre egy több modellből álló objektumot
A SageMaker Boto3 kliens segítségével hozza létre a modellt a create_model
API. A tároló definícióját együtt adjuk át a Create model API-nak ModelName
és a ExecutionRoleArn
:
MME konfigurációk meghatározása
Hozzon létre MME konfigurációkat a create_endpoint_config
Boto3 API. Adjon meg egy gyorsított GPU számítási példányt InstanceType
(a g4dn.4xlarge példánytípust használjuk). Javasoljuk, hogy a végpontokat legalább két példányban konfigurálja. Ez lehetővé teszi a SageMaker számára, hogy rendkívül elérhető előrejelzéseket biztosítson a modellek több rendelkezésre állási zónájában.
Eredményeink alapján jobb árteljesítmény érhető el az ML-optimalizált példányokon egyetlen GPU maggal. Ezért a GPU-funkció MME-támogatása csak egy GPU-magos példányok esetén engedélyezett. A támogatott példányok teljes listáját lásd: Támogatott GPU-példánytípusok.
Hozzon létre egy MME-t
Az előző végpont-konfigurációval létrehozunk egy SageMaker MME-t a létrehozás_végpont API. A SageMaker létrehozza az MME-t, elindítja a g4dn.4xlarge ML számítási példányt, és telepíti rájuk a PyTorch és TensorRT ResNet-50 modelleket. Lásd a következő kódot:
Hívja meg a célmodellt az MME-n
A végpont létrehozása után következtetési kérelmet küldhetünk az MME-nek a segítségével invoke_enpoint
API. Meghatározzuk a TargetModel
az invocation hívásban, és adja át a hasznos terhet minden modelltípushoz. A következő kód a PyTorch modell és a TensorRT modell mintahívása:
Állítsa be az automatikus skálázási házirendeket a GPU MME-hez
A SageMaker MME-k támogatják a hosztolt modellek automatikus méretezését. Az automatikus méretezés dinamikusan módosítja a modellhez kiépített példányok számát a munkaterhelés változásai alapján. Amikor a munkaterhelés növekszik, az automatikus méretezés több példányt tesz elérhetővé. Amikor a munkaterhelés csökken, az automatikus méretezés eltávolítja a szükségtelen példányokat, így nem kell fizetnie a nem használt példányokért.
A következő méretezési szabályzatban az egyéni mérőszámot használjuk GPUUtilization
a TargetTrackingScalingPolicyConfiguration
konfigurációt és állítsa be a TargetValue
of 60.0
az adott mérőszám célértékéhez. Ez az automatikus skálázási szabályzat további példányokat biztosít legfeljebb MaxCapacity
ha a GPU kihasználtsága több mint 60%.
Javasoljuk a használatát GPUUtilization
or InvocationsPerInstance
az MME automatikus méretezési házirendjének konfigurálásához. További részletekért lásd Állítsa be az automatikus skálázási házirendeket a többmodell végponti telepítésekhez
CloudWatch mérőszámai GPU MME-khez
A SageMaker MME-k a következő példányszintű mérőszámokat biztosítják a figyeléshez:
- LoadedModelCount – A konténerekbe töltött modellek száma
- GPUU-felhasználás – A tárolók által használt GPU-egységek százalékos aránya
- GPU memóriahasználat – A tárolók által használt GPU-memória százalékos aránya
- DiskUtilization – A tárolók által felhasznált lemezterület százalékos aránya
Ezek a mérőszámok lehetővé teszik a GPU-példányerőforrások hatékony felhasználásának megtervezését. A következő grafikonon azt látjuk GPUMemoryUtilization
38.3% volt, amikor több mint 16 ResNet-50 modellt töltöttek be a konténerbe. Az egyes CPU magok kihasználtságának összege (CPUUtilization
) 60.9% volt, és a tárolók által használt memória százalékos aránya (MemoryUtilization
) 9.36% volt.
A SageMaker MME-k modellbetöltési mérőszámokat is biztosítanak, hogy modellhívási szintű betekintést kapjanak:
- ModelLoadingWaitTime – Időintervallum a modell letöltéséhez vagy betöltéséhez
- ModelUnloadingTime – Időintervallum a modellnek a konténerből való kirakodásához
- Modelletöltési idő – Ideje letölteni a modellt az Amazon S3-ról
- ModelCacheHit – A tárolóba már betöltött modellhívások száma
A következő grafikonon megfigyelhetjük, hogy 8.22 másodpercbe telt, mire egy modell válaszolt egy következtetési kérésre (ModelLatency
), és 24.1 ezredmásodperc hozzáadódott a végpontok közötti késleltetéshez a SageMaker többletköltségei miatt (OverheadLatency
). A végponti API-hívások meghívására irányuló hívásokból származó hibametrikákat is láthatjuk, például Invocation4XXErrors
és a Invocation5XXErrors
.
Az MME CloudWatch mérőszámaival kapcsolatos további információkért lásd: CloudWatch metrikák többmodell végpont-telepítésekhez.
Összegzésként
Ebben a bejegyzésben megismerkedhetett az új SageMaker többmodell támogatásával a GPU-hoz, amely lehetővé teszi több száz mély tanulási modell költséghatékony üzemeltetését gyorsított számítási hardveren. Megtanulta az NVIDIA Triton Inference Server használatát, amely modelltár-konfigurációt hoz létre a különböző keretrendszer-háttérrendszerekhez, és hogyan telepíthet MME-t automatikus skálázással. Ez a funkció lehetővé teszi több száz hiper-személyre szabott modell méretezését, amelyek finomhangolása az AI-alkalmazások egyedi végfelhasználói élményeinek megfelelő. Ezt a funkciót a töredékes GPU-kat használó következtetési alkalmazás megfelelő árteljesítményének eléréséhez is kihasználhatja.
A GPU MME-támogatásának megkezdéséhez lásd: Többmodell végpont támogatása a GPU-hoz.
A szerzőkről
Dhawal Patel az AWS vezető gépi tanulási építésze. Az elosztott számítástechnikával és a mesterséges intelligenciával kapcsolatos problémákon a nagyvállalatoktól a közepes méretű startupokig számos szervezettel dolgozott együtt. A mély tanulásra összpontosít, beleértve az NLP-t és a számítógépes látást. Segít az ügyfeleknek abban, hogy nagy teljesítményű modellkövetkeztetést érjenek el az Amazon SageMakeren.
Vikram Elango az Amazon Web Services vezető mesterséges intelligencia/ML-megoldások szakértője, székhelye Virginia államban (USA). A Vikram a globális pénzügyi és biztosítási ágazat ügyfeleit tervezési, megvalósítási és gondolati vezető szerepben segíti a gépi tanulási alkalmazások széles körű kiépítésében és üzembe helyezésében. Jelenleg a természetes nyelvi feldolgozásra, a felelős AI-re, a következtetések optimalizálására és az ML méretezésére összpontosít a vállalaton belül. Szabadidejében szeret utazni, kirándulni, főzni és kempingezni a családjával.
Saurabh Trikande az Amazon SageMaker Inference vezető termékmenedzsere. Szenvedélyesen dolgozik az ügyfelekkel, és a gépi tanulás demokratizálásának célja motiválja. A komplex ML-alkalmazások telepítésével, a több bérlős ML-modellekkel, a költségoptimalizálással és a mély tanulási modellek bevezetésének elérhetőbbé tételével kapcsolatos alapvető kihívásokra összpontosít. Szabadidejében Saurabh szeret túrázni, innovatív technológiákat tanulni, követi a TechCrunch-ot, és a családjával tölt időt.
Deepti Ragha az Amazon SageMaker csapat szoftverfejlesztő mérnöke. Jelenlegi munkája a gépi tanulási modellek hatékony tárolására szolgáló funkciók létrehozására összpontosít. Szabadidejében szeret utazni, túrázni és növényt termeszteni.
Nikhil Kulkarni az AWS Machine Learning szoftverfejlesztője, aki arra összpontosít, hogy a gépi tanulási munkaterheléseket hatékonyabbá tegye a felhőben, és társalkotója az AWS Deep Learning Containers képzési és következtetések levonásához. Szenvedélye az elosztott Deep Learning Systems. A munkán kívül szívesen olvas könyveket, gitároz és pizzát készít.
Jiahong Liu az NVIDIA Cloud Service Provider csapatának megoldástervezője. Segíti az ügyfeleket a gépi tanulási és mesterséges intelligencia-megoldások elfogadásában, amelyek az NVIDIA gyorsított számítástechnikáját használják ki a képzési és következtetési kihívások megoldására. Szabadidejében szereti az origamit, a barkácsprojekteket és a kosárlabdát.
Eliuth Triana az NVIDIA-AWS csapat fejlesztői kapcsolatok menedzsere. Összeköti az Amazon és az AWS termékvezetőit, fejlesztőit és tudósait az NVIDIA technológusaival és termékvezetőivel, hogy felgyorsítsa az Amazon ML/DL munkaterhelését, az EC2-termékeket és az AWS AI-szolgáltatásokat. Ezenkívül Eliuth szenvedélyes hegyikerékpáros, síelő és pókerjátékos.
Maximiliano Maccanti az AWS vezető mérnöke, jelenleg a DynamoDB-nél, a SageMaker indítócsapatában voltam a re:Invent 2017-nél, és a következő 5 évet a tárhelyplatformban töltöttem, és mindenféle szolgáltatással bővítettem az ügyfeleket. Szabadidőmben gyűjtögetem, javítom és játszom a régi videojáték-konzolokat.
- Haladó (300)
- AI
- ai művészet
- ai art generátor
- van egy robotod
- Amazon SageMaker
- mesterséges intelligencia
- mesterséges intelligencia tanúsítás
- mesterséges intelligencia a bankszektorban
- mesterséges intelligencia robot
- mesterséges intelligencia robotok
- mesterséges intelligencia szoftver
- AWS gépi tanulás
- blockchain
- blokklánc konferencia ai
- coingenius
- társalgási mesterséges intelligencia
- kriptokonferencia ai
- dall's
- mély tanulás
- google azt
- gépi tanulás
- Plató
- plato ai
- Platón adatintelligencia
- Platón játék
- PlatoData
- platogaming
- skála ai
- szintaxis
- zephyrnet