Ez egy vendégblogbejegyzés, amelyet Minghui Yu-val és Jianzhe Xiao-val közösen írt a Bytedance-től.
ByteDance egy technológiai vállalat, amely számos tartalomplatformot üzemeltet az emberek tájékoztatása, oktatása, szórakoztatása és inspirációja céljából különböző nyelveken, kultúrákon és földrajzi területeken. A felhasználók bíznak tartalomplatformjainkban, és élvezik azokat, az általuk nyújtott gazdag, intuitív és biztonságos élménynek köszönhetően. Ezeket a tapasztalatokat gépi tanulási (ML) háttérmotorunk teszi lehetővé, tartalommoderálásra, keresésre, ajánlásra, hirdetésre és újszerű vizuális effektusokra épített ML modellekkel.
A ByteDance AML (Applied Machine Learning) csapata nagy teljesítményű, megbízható és méretezhető ML rendszereket és végpontok közötti ML szolgáltatásokat biztosít a vállalat üzleti tevékenysége számára. Azt kutattuk, hogyan optimalizálhatjuk ML következtetési rendszereinket a költségek csökkentése érdekében a válaszidő növelése nélkül. Amikor az AWS elindult AWS Inferentia, az AWS által kifejezetten erre a célra épített nagy teljesítményű ML következtetési chip, együttműködtünk AWS-fiókkal, hogy teszteljük, az AWS Inferentia képes-e elérni optimalizálási céljainkat. Számos elméleti bizonyítást futtattunk, ami akár 60%-kal alacsonyabb következtetési költséget eredményezett a T4 GPU-alapú EC2 G4dn példányokhoz képest, és akár 25%-kal alacsonyabb következtetési késleltetést. A költségmegtakarítás és a teljesítménynövekedés megvalósítása érdekében úgy döntöttünk, hogy az AWS Inferentia alapú modelleket telepítjük. Amazon rugalmas számítási felhő (Amazon EC2) Inf1 példányok gyártásban.
A következő diagram az egyik arcfelismerő modellünk késleltetési idejét mutatja, amelyet korábban a Tensor RT-vel rendelkező GPU-kon telepítettek. Az átlagos várakozási idő 20%-kal (50 ezredmásodpercről 40 ezredmásodpercre), a p99 késleltetése pedig 25%-kal (200 ezredmásodpercről 150 ezredmásodpercre) csökkent.
Ebben a bejegyzésben megosztjuk, hogyan spóroltunk meg a következtetési költségeken, miközben csökkentjük a késéseket és növeljük az átviteli sebességet az AWS Inferentia használatával.
Nagy teljesítményű, költséghatékony számítástechnika keresése
A ByteDance AML csapata az élvonalbeli ML-rendszerek és az általuk igényelt heterogén számítási erőforrások kutatására és megvalósítására összpontosít. Nagyszabású képzési és következtetési rendszereket készítünk a legkülönfélébb ajánló, természetes nyelvi feldolgozás (NLP) és számítógépes látás (CV) modellekhez. Ezek a modellek rendkívül összetettek, és hatalmas mennyiségű adatot dolgoznak fel a ByteDance által működtetett számos tartalomplatformról. Ezeknek a modelleknek az üzembe helyezése jelentős GPU-erőforrást igényel, akár a felhőben, akár a helyszínen. Ezért ezeknek a következtetési rendszereknek a számítási költségei meglehetősen magasak.
Arra törekedtünk, hogy csökkentsük ezeket a költségeket az átviteli sebesség vagy a késleltetés befolyásolása nélkül. A felhő rugalmasságát és gyorsabb szállítási ciklusát szerettük volna, ami sokkal rövidebb, mint a helyszíni beállításhoz szükséges. És bár nyitottak voltunk a gyorsított ML új lehetőségeinek felfedezésére, zökkenőmentes fejlesztői élményt is szerettünk volna.
AWS-csapatunktól megtudtuk, hogy az AWS Inferentia alapú EC2 Inf1 példányok nagy teljesítményű ML-következtetést biztosítanak a legalacsonyabb következtetésenkénti költséggel a felhőben. Kíváncsiak voltunk ezek felfedezésére, és azt találtuk, hogy jól illeszkednek a mi használati esetünkhöz, mivel jelentős gépi tanulást futtatunk nagy mennyiségű kép-, tárgy-, beszéd- és szövegadaton. Határozottan megfeleltek a céljainknak, mert modelljeink összetettsége és a napi előrejelzések mennyisége miatt hatalmas költségmegtakarítást érhettünk el. Ezenkívül az AWS Inferentia nagy mennyiségű chipen belüli memóriával rendelkezik, amelyet a nagy modellek gyorsítótárazására használhat, ahelyett, hogy chipen tárolná azokat. Felismertük, hogy ez jelentős hatással lehet a következtetések késleltetésének csökkentésére, mivel az AWS Inferentia feldolgozó magjai, az úgynevezett NeuronCores nagysebességű hozzáféréssel rendelkeznek a chipen belüli memóriában tárolt modellekhez, amelyeket nem korlátoz a chipen kívüli memória. sávszélesség.
Végül több lehetőség kiértékelése után az EC2 Inf1 példányokat választottuk jobb teljesítmény/ár arányuk miatt, mint a G4dn példányok és a helyszíni NVIDIA T4. Folyamatos iterációs ciklust folytattunk az AWS csapatával, hogy kiaknázzuk az Inf1 ár- és teljesítményelőnyeit.
Következtetési munkaterhelések telepítése az AWS Inferentián
Az AWS Inferentia használatának megkezdése az AWS Neuron SDK használatával két fázisból állt: a modellkód összeállításából és az Inf1 példányokon történő telepítésből. Az ML-modellek bármely új infrastruktúrába való áthelyezésekor szokásos, itt is volt néhány kihívás, amellyel szembenéztünk. Ezeket a kihívásokat szorgalommal és AWS csapatunk támogatásával tudtuk leküzdeni. A következő szakaszokban számos hasznos tippet és észrevételt osztunk meg az AWS Inferentián a következtetési munkaterhelések telepítésével kapcsolatos tapasztalataink alapján.
Konformer modell az OCR-hez
Optikai karakterfelismerő (OCR) konformer modellünk észleli és beolvassa a szöveget a képeken belül. Számos optimalizáláson dolgoztunk, hogy nagy teljesítményt (QPS) érjünk el különféle kötegméretekhez, miközben a késleltetést alacsonyan tartottuk. Néhány kulcsfontosságú optimalizálás az alábbiakban található:
- Fordító optimalizálás – Alapértelmezés szerint az Inferentia a rögzített sorozathosszúságú bemeneteken teljesít a legjobban, ami kihívást jelentett, mivel a szöveges adatok hossza nem rögzített. Ennek kiküszöbölésére a modellünket két részre osztottuk: egy kódolóra és egy dekóderre. Ezt a két almodellt külön-külön állítottuk össze, majd TorchScript segítségével egyetlen modellbe egyesítettük. A for hurok vezérlési folyamatának CPU-kon való futtatásával ez a megközelítés lehetővé tette a változó sorozathosszúságok támogatását az Inferentián.
- Mélységi konvolúciós teljesítmény – DMA szűk keresztmetszetet találtunk a mélységi konvolúciós műveletben, amelyet a konformer modellünk erősen használ. Szorosan együttműködtünk az AWS Neuron csapatával, hogy azonosítsuk és feloldjuk a DMA-hozzáférési teljesítmény szűk keresztmetszetét, ami javította ennek a műveletnek a teljesítményét és javította az OCR-modellünk általános teljesítményét.
Két új modellváltozatot hoztunk létre, hogy optimalizáljuk az Inferentián való telepítésünket:
- Kombinált és kibontott kódoló/dekódoló – Egy önállóan lefordított kódoló és dekódoló használata helyett egyetlen modellben egyesítettük a kódolót és a teljesen kibontott dekódert, és ezt a modellt egyetlen NEFF-ként fordítottuk le. A dekóder kibontása lehetővé teszi az összes dekódoló vezérlési folyamat futtatását az Inferentián CPU műveletek használata nélkül. Ezzel a megközelítéssel a dekódoló minden iterációja pontosan annyi számítási mennyiséget használ, amennyi az adott tokenhez szükséges. Ez a megközelítés javítja a teljesítményt, mivel jelentősen csökkentjük a korábban a kitöltési bemenetek által bevezetett felesleges számítási mennyiséget. Ezenkívül nincs szükség adatátvitelre az Inferentiáról a CPU-ra a dekóder iterációi között, ami drasztikusan csökkenti az I/O időt. A modell ezen verziója nem támogatja a korai leállítást.
- Partícionált, tekercselt dekóder – Hasonlóan a kombinált, teljesen kibontott modellhez, a modellnek ez a változata a dekóder több iterációját bontja ki és egyetlen végrehajtásként fordítja le (de nem tartalmazza a kódolót). Például 75-ös maximális sorozathosszúság esetén a dekódert 3 partícióra bonthatjuk, amelyek az 1-25, 26-50 és 51-75 tokeneket számítják ki. Az I/O szempontjából ez is lényegesen gyorsabb, mert nem kell minden iterációnként egyszer átvinnünk a kódoló kimenetét. Ehelyett a kimenetek csak egyszer kerülnek átvitelre minden dekódoló partíciónként. A modell ezen verziója támogatja a korai leállítást, de csak a partíció határain. A partícióhatárok minden egyes alkalmazáshoz hangolhatók, így biztosítva, hogy a kérések többsége csak egy partíciót hajtson végre.
A teljesítmény további javítása érdekében a következő optimalizálásokat hajtottuk végre a memóriahasználat csökkentése vagy a hozzáférés hatékonyságának javítása érdekében:
- Tenzor deduplikáció és kicsinyített másolatok – Ez egy olyan fordítóoptimalizálás, amely jelentősen csökkenti a kiterített modellek méretét és az utasítások/memória-hozzáférés számát a tenzorok újrafelhasználásával a térhatékonyság javítása érdekében.
- Csökkentett utasítások – Ez egy olyan fordítóoptimalizálás, amelyet a dekóder nem párnázott változatával használnak, hogy jelentősen csökkentsék az utasítások számát.
- Többmagos deduplikáció – Ez egy futásidejű optimalizálás, amely a tenzor deduplikáció alternatívája. Ezzel az opcióval minden többmagos modell lényegesen helytakarékosabb lesz.
ResNet50 modell a képosztályozáshoz
A ResNet-50 egy előre betanított mély tanulási modell a képosztályozáshoz. Ez egy konvolúciós neurális hálózat (CNN vagy ConvNet), amelyet leggyakrabban vizuális képek elemzésére alkalmaznak. A következő technikákat alkalmaztuk a modell teljesítményének javítására az Inferentián:
- Modell transzformáció – A ByteDance számos modellje ONNX formátumban van exportálva, amit az Inferentia jelenleg natívan nem támogat. Ezen ONNX modellek kezeléséhez az AWS Neuron csapata szkripteket biztosított a modelljeink ONNX formátumról PyTorch modellekre való átalakításához, amelyek közvetlenül fordíthatók az Inferentiához a torch-neuron segítségével.
- Teljesítmény optimalizálás – Szorosan együttműködtünk a AWS Neuron csapata, hogy hangolja az ütemezési heurisztikát a fordítóprogramban, hogy optimalizálja ResNet-50 modelljeink teljesítményét.
Multimodális modell a tartalom moderálásához
Multimodális mély tanulási modellünk több különálló modell kombinációja. Ennek a modellnek a mérete viszonylag nagy, ami modellbetöltési hibákat okozott az Inferentián. Az AWS Neuron csapata sikeresen megoldotta ezt a problémát azáltal, hogy súlymegosztással csökkentette az eszköz memóriahasználatát. A Neuron csapata kiadta ezt a súly-duplikációs funkciót a Neuron libnrt könyvtárában, és továbbfejlesztette a Neuron Tools-t is a pontosabb mutatók érdekében. A futásidejű súly-duplikáció-mentesítő szolgáltatás a következő környezeti változó beállításával engedélyezhető a következtetés futtatása előtt:
NEURON_RT_MULTI_INSTANCE_SHARED_WEIGHTS=1
A frissített Neuron SDK csökkentette a duplikált modelljeink teljes memóriafelhasználását, ami lehetővé tette, hogy multimodális modellünket alkalmazzuk többmagos következtetésekhez.
További modellek áttelepítése az AWS Inferentiába
A ByteDance-nél továbbra is innovatív mély tanulási modelleket alkalmazunk, hogy elragadó felhasználói élményt biztosítsunk közel 2 milliárd havi aktív felhasználónak. Tekintettel a nagy léptékű működésre, folyamatosan keressük a költségek megtakarításának és a teljesítmény optimalizálásának módjait. Folytatjuk a modellek áttelepítését az AWS Inferentiára, hogy kihasználhassuk annak nagy teljesítményét és költséghatékonyságát. Azt is szeretnénk, hogy az AWS több AWS Inferentia alapú példánytípust indítson el, például olyanokat, amelyek több vCPU-val rendelkeznek az előfeldolgozási feladatokhoz. A ByteDance a jövőben további szilícium-innovációt remél az AWS-től, hogy a legjobb ár-teljesítményt nyújtsa az ML alkalmazásokhoz.
Ha többet szeretne megtudni arról, hogyan segíthet az AWS Inferentia költségmegtakarításban, miközben optimalizálja következtetési alkalmazásai teljesítményét, látogassa meg a Amazon EC2 Inf1 példányok termékoldal.
A szerzőkről
Minghui Yu a ByteDance vezető gépi tanulási csapatának vezetője a következtetésekért. Fókuszterülete az AI Computing Acceleration és a Machine Learning System. Nagyon érdekli a heterogén számítástechnika és a számítógép-architektúra a Moore utáni korszakban. Szabadidejében szereti a kosárlabdát és az íjászatot.
Jianzhe Xiao a ByteDance AML csapatának vezető szoftvermérnöki csapatának vezetője. Jelenlegi munkája arra összpontosít, hogy segítse az üzleti csapatot a modell telepítési folyamatának felgyorsításában és a modell következtetési teljesítményének javításában. A munkán kívül szívesen zongorázik.
Tian Shi az AWS vezető megoldási építésze. Fókuszterülete az adatelemzés, a gépi tanulás és a szerver nélküli. Szenvedélyesen segít ügyfeleinek megbízható és méretezhető megoldások tervezésében és felépítésében a felhőben. Szabadidejében szívesen úszik és olvas.
Jia Dong az AWS ügyfélmegoldásokért felelős vezetője. Szereti megismerni az AWS AI/ML szolgáltatásait, és megoldások kidolgozásával segíti ügyfeleit üzleti eredményeik elérésében. A munkán kívül Jia élvezi az utazást, a jógát és a filmeket.
Jonathan Lunt az Amazon szoftvermérnöke, aki az ML keretrendszer fejlesztésére összpontosít. Pályafutása során az adattudományi szerepkörök széles skáláján dolgozott, beleértve a modellfejlesztést, az infrastruktúra telepítését és a hardver-specifikus optimalizálást.
Joshua Hannan gépi tanulási mérnök az Amazonnál. A mély tanulási modellek optimalizálásával foglalkozik nagyszabású számítógépes látás és természetes nyelvi feldolgozó alkalmazások számára.
Shruti Koparkar az AWS vezető termékmarketing-menedzsere. Segít az ügyfeleknek az EC2 gyorsított számítási infrastruktúra felfedezésében, értékelésében és gépi tanulási igényeik kielégítésében.
- AI
- ai művészet
- ai art generátor
- van egy robotod
- 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 Inferentia
- 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