Ez egy vendégbejegyzés, amelyet Antony Vance-szel az Inteltől közösen írtunk.
Az ügyfelek mindig keresik a módját, hogy javítsák gépi tanulási (ML) következtetési munkaterheléseik teljesítményét és válaszidejét anélkül, hogy növelnék a tranzakciónkénti költséget és anélkül, hogy feláldoznák az eredmények pontosságát. ML munkaterhelések futtatása Amazon SageMaker futás Amazon rugalmas számítási felhő (Amazon EC2) C6i példányokkal Intel Az INT8 következtetés telepítése akár négyszeresére is növelheti az általános teljesítményt elköltött dolláronként, miközben a következtetési pontosság vesztesége 1%-nál kisebb az FP32-höz képest, ha bizonyos ML munkaterhelésekre alkalmazzák. Amikor a modellek beágyazott eszközökön való futtatásáról van szó, ahol fontos a modell alaktényezője és mérete, a kvantálás segíthet.
A kvantálás egy olyan technika, amely csökkenti a következtetések futtatásával járó számítási és memóriaköltségeket azáltal, hogy a súlyokat és az aktiválásokat alacsony pontosságú adattípusokkal, például 8 bites egész számmal (INT8) ábrázolja a szokásos 32 bites lebegőpontos (FP32) helyett. A következő példa ábrán az INT8 következtetési teljesítményt mutatjuk be C6i-ben egy BERT-alapmodellhez.
A BERT-alapot az SQuAD v1.1-gyel finomították, a PyTorch (v1.11) pedig az Intel® Extension for PyTorch-hez használt ML keretrendszere. Az összehasonlításhoz 1-es tételméretet használtunk. A nagyobb tételméretek eltérő költséget eredményeznek 1 millió következtetésenként.
Ebben a bejegyzésben megmutatjuk, hogyan hozhat létre és telepíthet INT8 következtetést a sajátjával saját feldolgozó tartály a PyTorch számára. Intel-bővítményeket használunk a PyTorch számára a hatékony INT8 üzembe helyezési munkafolyamat érdekében.
A technológia áttekintése
EC2 C6i példányok harmadik generációs Intel Xeon Scalable processzorok (más néven Ice Lake) hajtják, 3.5 GHz-es minden magos turbófrekvenciával.
A mély tanulással összefüggésben a kutatáshoz és telepítéshez használt domináns numerikus formátum eddig a 32 bites lebegőpontos vagy FP32 volt. A mély tanulási modellek csökkentett sávszélessége és számítási követelményei azonban a kisebb pontosságú numerikus formátumok használatára ösztönözték a kutatást. Bebizonyosodott, hogy a súlyozások és az aktiválások 8 bites egész számokkal (vagy INT8-al) ábrázolhatók anélkül, hogy jelentős pontosságveszteséget okoznánk.
Az EC2 C6i példányok számos új képességet kínálnak, amelyek teljesítményjavulást eredményeznek az AI és az ML munkaterheléseknél. A C6i példányok teljesítményelőnyöket biztosítanak az FP32 és INT8 modellek telepítésében. Az FP32 következtetést az AVX-512 fejlesztésekkel, az INT8 következtetést pedig az AVX-512 VNNI utasításai engedélyezik.
A C6i már elérhető a SageMaker végpontokon, és a fejlesztőknek több mint kétszeres ár-teljesítménybeli javulást kell elérniük az INT8 következtetéshez az FP32 következtetéshez képest, és akár négyszeres teljesítményjavulást a C5 példány FP32 következtetéséhez képest. Tekintse meg a függeléket a részletekért és a benchmark adatokért.
Sok alkalmazási területen kulcsfontosságú a valós idejű következtetések levonására alkalmas, mély tanulási telepítés. Jelentősen csökkenti a felhővel való kommunikáció költségeit a hálózati sávszélesség, a hálózati késleltetés és az energiafogyasztás tekintetében. Az éleszközök azonban korlátozott memóriával, számítási erőforrásokkal és teljesítménnyel rendelkeznek. Ez azt jelenti, hogy a mély tanulási hálózatot optimalizálni kell a beágyazott telepítéshez. Az INT8 kvantálás népszerű megközelítéssé vált az ML keretrendszerek, például a TensorFlow és a PyTorch optimalizálása során. A SageMaker saját konténer (BYOC) megközelítést és integrált eszközöket biztosít a kvantálás futtatásához.
További információ: Alacsonyabb numerikus pontosságú mély tanulási következtetés és képzés.
Megoldás áttekintése
A megoldás megvalósításának lépései a következők:
- Gondoskodjon egy EC2 C6i példányról az ML modell kvantálásához és létrehozásához.
- A kvantáláshoz használja a mellékelt Python-szkripteket.
- Hozzon létre egy Docker-lemezképet a modell SageMakerben való üzembe helyezéséhez a BYOC megközelítés használatával.
- Használja a Amazon egyszerű tárolási szolgáltatás (Amazon S3) vödör a modell és a SageMaker hozzáférési kód másolásához.
- Felhasználás Amazon Elastic Container Registry (Amazon ECR) a Docker-kép tárolására.
- Használja a AWS parancssori interfész (AWS CLI) következtetési végpont létrehozásához a SageMakerben.
- Futtassa a rendelkezésre álló Python tesztparancsfájlokat a SageMaker végpont meghívásához mind az INT8, mind az FP32 verziókhoz.
Ez a következtetési telepítési beállítás a Hugging Face transzformátorok adattárából származó BERT-alapú modellt használ (csarron/bert-base-uncased-squad-v1).
Előfeltételek
A telepítési beállítás létrehozásának előfeltételei a következők:
- Linux shell terminál telepítve az AWS CLI-vel
- Egy AWS-fiók hozzáféréssel az EC2 példány létrehozásához (C6i példánytípus)
- SageMaker-hozzáférés SageMaker-modell, végpont-konfiguráció, végpont üzembe helyezéséhez
- AWS Identity and Access Management (IAM) hozzáférés egy IAM-szerep és házirend konfigurálásához
- Hozzáférés az Amazon ECR-hez
- SageMaker hozzáférés egy jegyzetfüzet létrehozásához a végpont indítására vonatkozó utasításokkal
Kvantizált INT8 modell létrehozása és üzembe helyezése a SageMakeren
Nyisson meg egy EC2-példányt a kvantált modell létrehozásához, és küldje el a modell melléktermékeit az Amazon S3-ra. A végpontok üzembe helyezéséhez hozzon létre egy egyéni tárolót PyTorch és Intel® Extension for PyTorch segítségével az optimalizált INT8 modell üzembe helyezéséhez. A konténer az Amazon ECR-be kerül, és egy C6i alapú végpont jön létre az FP32 és INT8 modellek kiszolgálására.
A következő diagram a magas szintű áramlást szemlélteti.
A kód és a dokumentáció eléréséhez tekintse meg a GitHub repo.
Példa használati esetre
A Stanford Question Answering Dataset (SQuAD) egy szövegértési adatkészlet, amely a tömegmunkások által feltett kérdésekből áll egy sor Wikipédia-cikkben, ahol minden kérdésre a válasz egy szövegszegmens, ill. arasz, a megfelelő olvasmányrészletből, vagy a kérdés megválaszolhatatlan.
A következő példa egy BERT-alapú modellt használó kérdésmegválaszoló algoritmus. Ha egy dokumentumot bemenetként adunk meg, a modell egyszerű kérdésekre válaszol a bemeneti dokumentumból származó tanulás és kontextusok alapján.
A következő példa egy beviteli dokumentumot mutat be:
Az Amazonas esőerdője (portugálul: Floresta Amazônica vagy Amazônia; spanyolul: Selva Amazónica, Amazonía vagy általában Amazonia; franciául: Forêt amazonienne; hollandul: Amazoneregenwoud), angolul Amazonia vagy Amazon Jungle néven is ismert, nedves, széles levelű erdő, amely a legtöbbet borítja. a dél-amerikai Amazonas-medencében. Ez a medence 7,000,000 2,700,000 5,500,000 négyzetkilométert foglal magában, amelyből 2,100,000 XNUMX XNUMX négyzetkilométert (XNUMX XNUMX XNUMX négyzetmérföldet) borít az esőerdő.
Arra a kérdésre, hogy „Melyik elnevezést használják angolul az Amazonas esőerdőjének leírására?” megkapjuk a választ:
Arra a kérdésre, hogy „Hány négyzetkilométer esőerdő található a medencében?” megkapjuk a választ:
A modell kvantálása PyTorch-ban
Ez a szakasz gyors áttekintést nyújt a modellkvantálás lépéseiről a PyTorch és az Intel bővítményekkel.
A kódrészletek egy SageMaker példából származnak.
Nézzük meg részletesen a quantize.py fájl IPEX_quantize függvényének módosításait.
- Importáljon intel-bővítményeket a PyTorch számára a kvantálás és optimalizálás segítéséhez, valamint importáljon fáklyát a tömbkezeléshez:
- Alkalmazza a modell kalibrálását 100 iterációhoz. Ebben az esetben a modellt az SQuAD adatkészlettel kalibrálja:
- Mintabevitel előkészítése:
- Konvertálja a modellt INT8 modellre a következő konfigurációval:
- Futtasson két iterációt az előrelépéshez a fúziók engedélyezéséhez:
- Utolsó lépésként mentse el a TorchScript modellt:
Tisztítsuk meg
Utal Github repo a létrehozott AWS-erőforrások megtisztításának lépéseiért.
Következtetés
Az új EC2 C6i példányok egy SageMaker végpontban akár 2.5-szeresére is felgyorsíthatják a következtetések telepítését az INT8 kvantálás segítségével. A modell PyTorch programban történő kvantálása lehetséges néhány API-val az Intel PyTorch bővítményekből. Javasoljuk, hogy kvantálja a modellt a C6i-példányokban, hogy a modell pontossága megmaradjon a végpontok üzembe helyezésekor. A SageMaker példák GitHub repo most egy végponttól végpontig terjedő üzembe helyezési példafolyamatot biztosít az INT8 modellek kvantálásához és üzemeltetéséhez.
Javasoljuk, hogy hozzon létre egy új modellt vagy helyezzen át egy meglévő modellt az INT8 kvantálás segítségével az EC2 C6i példánytípus használatával, és nézze meg a teljesítménynövekedést.
Figyelmeztetés és felelősségkizárások
Ez a dokumentum nem ad engedélyt (kifejezetten vagy hallgatólagosan, tiltással vagy más módon) semmilyen szellemi tulajdonjogra, azzal az egyetlen kivétellel, hogy a jelen dokumentumban szereplő kód licence a Zero-Clause BSD nyílt forráskódú licenc (0BSD)
Függelék
Új AWS-példányok a SageMakerben INT8 telepítési támogatással
Az alábbi táblázat felsorolja a SageMaker-példányokat együtt és anélkül DL Boost támogatást.
Példány neve | Xeon Gen kódnév | INT8 engedélyezve? | DL Boost engedélyezve? |
ml.c5. xlarge – ml.c5.9xlarge | Skylake/1st | Igen | Nem |
ml.c5.18xnagy | Skylake/1st | Igen | Nem |
ml.c6i.1x – 32xnagy | Jégtó/3rd | Igen | Igen |
Összefoglalva, az INT8 engedélyezett támogatja az INT8 adattípust és számítást; A DL Boost engedélyezve támogatja a Deep Learning Boost funkciót.
Összehasonlító adatok
Az alábbi táblázat összehasonlítja a költségeket és a relatív teljesítményt a c5 és a c6 példányok között.
A késleltetés és az átviteli sebesség 10000 XNUMX következtetés lekérdezéssel mérve a Sage maker végpontjaihoz.
E2E Következtetési végpont késleltetése és költségelemzés | |||||
P50 (ms) | P90 (ms) | Lekérdezések/Sec | $/1M lekérdezések | Relatív $/teljesítmény | |
C5.2xLarge-FP32 | 76.6 | 125.3 | 11.5 | $10.2 | 1.0x |
c6i.2xLarge-FP32 | 70 | 110.8 | 13 | $9.0 | 1.1x |
c6i.2xLarge-INT8 | 35.7 | 48.9 | 25.56 | $4.5 | 2.3x |
Az INT8 modellek várhatóan 2–4-szeres gyakorlati teljesítménynövekedést tesznek lehetővé, és a legtöbb modellnél kevesebb, mint 1%-os pontosságveszteséggel járnak. A fenti táblázat tartalmazza a rezsi késleltetést (NW és demó alkalmazás)
Pontosság a BERT-alapmodellhez
Az alábbi táblázat összefoglalja az INT8 modell pontosságát az SQUaD v1.1 adatkészlettel.
Metric | FP32 | INT8 |
Pontos egyezés | 85.8751 | 85.5061 |
F1 | 92.0807 | 91.8728 |
A GitHub repo a SQuAD adatkészlet pontosságának ellenőrzésére szolgáló szkriptekkel érkezik. Hivatkozni invoke-INT8.py és a invoke-FP32.py szkriptek a teszteléshez.
Intel bővítmény a PyTorch számára
Az Intel® Extension for PyTorch* (a GitHub nyílt forráskódú projektje) a PyTorch optimalizálásával bővíti ki az Intel hardverének további teljesítményét. Az optimalizálások nagy része végül a PyTorch készletkiadásaiba is bekerül, és a bővítés célja, hogy naprakész funkciókat és optimalizálásokat biztosítson a PyTorch számára Intel hardveren. Ilyen például az AVX-512 Vector Neural Network Instructions (AVX512 VNNI) és az Intel® Advanced Matrix Extensions (Intel® AMX).
A következő ábra a PyTorch architektúrához készült Intel-bővítményt mutatja be.
A PyTorch Intel® Extension for PyTorch-hez készült részletes felhasználói útmutatásaiért (szolgáltatások, teljesítményhangolás stb.) lásd: Intel® Extension for PyTorch* felhasználói útmutató.
A szerzőkről
Rohit Chowdhary az AWS Strategic Accounts csapatának Sr. Solutions Architect tagja.
Aniruddha Kappagantu az AWS AI Platforms csapatának szoftverfejlesztő mérnöke.
Antony Vance az Intel mesterséges intelligencia építésze, 19 éves tapasztalattal a számítógépes látás, a gépi tanulás, a mély tanulás, a beágyazott szoftverek, a GPU és az FPGA területén.
- SEO által támogatott tartalom és PR terjesztés. Erősödjön még ma.
- Platoblockchain. Web3 metaverzum intelligencia. Felerősített tudás. Hozzáférés itt.
- Forrás: https://aws.amazon.com/blogs/machine-learning/accelerate-amazon-sagemaker-inference-with-c6i-intel-based-amazon-ec2-instances/
- :is
- $ UP
- 000
- 1
- 100
- 11
- 7
- 8
- 9
- a
- felett
- gyorsul
- hozzáférés
- Fiók
- Fiókok
- pontosság
- aktiválások
- fejlett
- előnyei
- AI
- algoritmus
- mindig
- amazon
- Amazon EC2
- Amazon SageMaker
- Amerika
- és a
- válasz
- API-k
- Alkalmazás
- alkalmazott
- megközelítés
- építészet
- VANNAK
- területek
- Sor
- cikkek
- AS
- At
- elérhető
- AWS
- Sávszélesség
- alapján
- BE
- válik
- hogy
- benchmark
- között
- fellendítésére
- hoz
- épít
- by
- hívott
- TUD
- képességek
- eset
- bizonyos
- Változások
- ellenőrizze
- felhő
- kód
- kommunikáció
- képest
- összehasonlítás
- számítás
- Kiszámít
- számítógép
- Számítógépes látás
- számítástechnika
- Configuration
- Összeáll
- fogyasztás
- Konténer
- kontextus
- kontextusok
- Megfelelő
- Költség
- kiadások
- fedett
- Covers
- teremt
- készítette
- létrehozása
- teremtés
- szokás
- dátum
- mély
- mély tanulás
- szállít
- igazolták
- telepíteni
- bevetés
- bevetések
- Származtatott
- leírni
- részlet
- részletes
- részletek
- fejlesztők
- Fejlesztés
- Eszközök
- különböző
- Dokkmunkás
- dokumentum
- dokumentáció
- Ennek
- Dollár
- hajtott
- Holland
- él
- Hatékony
- beágyazott
- lehetővé
- engedélyezve
- felöleli
- ösztönzése
- végtől végig
- Endpoint
- mérnök
- Angol
- végül is
- Minden
- példa
- példák
- kivétel
- létező
- vár
- várható
- tapasztalat
- expressz
- kiterjesztés
- kiterjesztések
- külön-
- Arc
- Jellemzők
- kevés
- Ábra
- filé
- úszó
- áramlási
- következő
- következik
- A
- erdő
- forma
- formátum
- Előre
- FPGA
- Keretrendszer
- keretek
- francia
- Frekvencia
- ból ből
- funkció
- Nyereség
- Gen
- kap
- GitHub
- adott
- ad
- Go
- GPU
- megadott
- nagyobb
- Vendég
- Vendég bejegyzés
- útmutatást
- hardver
- Legyen
- segít
- magas szinten
- <p></p>
- vendéglátó
- tárhely
- Hogyan
- How To
- azonban
- HTML
- http
- HTTPS
- ICE
- Identitás
- kép
- végre
- hallgatólagos
- importál
- fontos
- javul
- javulás
- fejlesztések
- in
- tartalmaz
- beleértve
- növekvő
- információ
- bemenet
- példa
- helyette
- utasítás
- integrált
- Intel
- szellemi
- szellemi tulajdon
- Szándék
- IT
- iterációk
- jpg
- tartás
- Kulcs
- ismert
- tó
- keresztnév
- Késleltetés
- indít
- tanulás
- Engedély
- Engedélyezett
- mint
- Korlátozott
- vonal
- linux
- listák
- keres
- le
- gép
- gépi tanulás
- készítő
- sok
- Mátrix
- eszközök
- Memory design
- esetleg
- vándorol
- millió
- ML
- modell
- modellek
- több
- a legtöbb
- MS
- név
- Szükség
- hálózat
- neurális hálózat
- Új
- jegyzetfüzet
- of
- ajánlat
- on
- nyitva
- nyílt forráskódú
- optimalizálás
- optimalizált
- OS
- másképp
- átfogó
- áttekintés
- saját
- ösvény
- teljesítmény
- csővezeték
- Platformok
- Plató
- Platón adatintelligencia
- PlatoData
- pont
- Népszerű
- portugál
- lehetséges
- állás
- hatalom
- powered
- Gyakorlati
- Pontosság
- előfeltételek
- feldolgozás
- processzorok
- program
- ingatlan
- Tulajdonjogok
- ad
- feltéve,
- biztosít
- Nyomja
- meglökött
- Piton
- pytorch
- kérdés
- Kérdések
- Quick
- Olvasás
- real-time
- ajánlott
- csökkenteni
- Csökkent
- csökkenti
- Releases
- raktár
- képviselők
- képviselő
- követelmények
- kutatás
- Tudástár
- válasz
- eredményez
- Eredmények
- jogok
- Szerep
- futás
- futás
- feláldozása
- sagemaker
- SageMaker következtetés
- Megtakarítás
- skálázható
- szkriptek
- Rész
- részes
- szolgál
- készlet
- felépítés
- Héj
- kellene
- előadás
- jelentős
- jelentősen
- Egyszerű
- Méret
- méretek
- So
- eddig
- szoftver
- szoftverfejlesztés
- megoldások
- Megoldások
- forrás
- Dél
- Dél-Amerika
- spanyol
- költött
- SQ
- négyzet
- Lépés
- Lépései
- készlet
- tárolás
- Stratégiai
- tárgy
- ilyen
- összegez
- mellékelt
- támogatás
- Támogatja
- táblázat
- csapat
- tensorflow
- terminál
- feltételek
- teszt
- Tesztelés
- hogy
- A
- azok
- áteresztőképesség
- alkalommal
- nak nek
- szerszámok
- fáklya
- tranzakció
- transzformerek
- típusok
- up-to-date
- használ
- használó
- rendszerint
- látomás
- módon
- ami
- míg
- Wikipedia
- lesz
- val vel
- nélkül
- év
- te
- A te
- magad
- zephyrnet