Tämä on vieraspostaus, joka on kirjoitettu yhdessä Intelin Antony Vancen kanssa.
Asiakkaat etsivät jatkuvasti tapoja parantaa koneoppimisen (ML) päättelytyökuormituksen suorituskykyä ja vasteaikoja ilman, että tapahtumakohtaiset kustannukset nousevat ja tulosten tarkkuudesta tinkimättä. ML-työkuormien suorittaminen päällä Amazon Sage Maker juoksu Amazonin elastinen laskentapilvi (Amazon EC2) C6i tapauksia kanssa Intelin INT8:n päättelyn käyttöönotto voi auttaa parantamaan yleistä suorituskykyä jopa neljä kertaa käytettyä dollaria kohden samalla, kun johtopäätöstarkkuuden menetys pysyy alle 1 %:ssa verrattuna FP32:een, kun sitä käytetään tietyissä ML-työkuormissa. Kvantisointi voi auttaa mallien käyttämisessä sulautetuissa laitteissa, joissa mallin muoto ja koko ovat tärkeitä.
Kvantisointi on tekniikka, jolla vähennetään johtopäätöksen suorittamisen laskenta- ja muistikustannuksia esittämällä painotukset ja aktivaatiot matalan tarkkuuden tietotyypeillä, kuten 8-bittisellä kokonaisluvulla (INT8) tavanomaisen 32-bittisen liukupisteen (FP32) sijaan. Seuraavassa esimerkkikuvassa näytämme INT8-päättelyn suorituskyvyn C6i:ssä BERT-perusmallille.
BERT-pohjaa hienosäädettiin SQuAD v1.1:llä, jolloin PyTorch (v1.11) oli Intel® Extension for PyTorchin kanssa käytetty ML-kehys. Vertailussa käytettiin eräkokoa 1. Suuremmat eräkoot tarjoavat erilaiset kustannukset miljoonaa päätelmää kohden.
Tässä viestissä näytämme sinulle, kuinka voit rakentaa ja ottaa käyttöön INT8-päätelmän oma käsittelysäiliö PyTorchille. Käytämme Intelin PyTorchin laajennuksia tehokkaaseen INT8-käyttöönoton työnkulkuun.
Yleiskatsaus teknologiaan
EC2 C6i -esiintymiä niissä on kolmannen sukupolven Intel Xeon Scalable -prosessorit (jota kutsutaan myös Ice Lakeksi), joiden kaikkien ytimen turbotaajuus on 3.5 GHz.
Syväoppimisen yhteydessä vallitseva numeerinen muoto tutkimuksessa ja käyttöönotossa on tähän asti ollut 32-bittinen liukuluku eli FP32. Tarve pienentää syväoppimismallien kaistanleveyttä ja laskentavaatimuksia on kuitenkin ajanut tutkimuksen käyttämään alhaisemman tarkkuuden numeerisia muotoja. On osoitettu, että painotukset ja aktivaatiot voidaan esittää käyttämällä 8-bittisiä kokonaislukuja (tai INT8) ilman merkittävää tarkkuuden menetystä.
EC2 C6i -esiintymät tarjoavat monia uusia ominaisuuksia, jotka parantavat AI- ja ML-työkuormien suorituskykyä. C6i-esiintymät tarjoavat suorituskykyetuja FP32- ja INT8-mallien käyttöönotoissa. FP32-päättely on otettu käyttöön AVX-512-parannuksilla, ja INT8-päättely on otettu käyttöön AVX-512 VNNI -ohjeilla.
C6i on nyt saatavilla SageMaker-päätepisteissä, ja kehittäjien pitäisi odottaa sen tarjoavan yli kaksinkertaisia hinta-suorituskykyparannuksia INT8-päätelmään verrattuna FP32-päätelmään ja jopa neljä kertaa suorituskyvyn parannuksia verrattuna C5-instanssin FP32-päätelmään. Katso liitteestä esimerkiksi yksityiskohdat ja vertailutiedot.
Syvä oppimisen käyttöönotto reaaliaikaista päättelyä varten on avain monille sovellusalueille. Se vähentää merkittävästi pilven kanssa viestimisen kustannuksia verkon kaistanleveyden, verkon viiveen ja virrankulutuksen osalta. Reunalaitteilla on kuitenkin rajallinen muisti, laskentaresurssit ja teho. Tämä tarkoittaa, että syväoppimisverkko on optimoitava sulautettua käyttöönottoa varten. INT8-kvantisoinnista on tullut suosittu lähestymistapa tällaisiin optimointiin ML-kehyksille, kuten TensorFlow ja PyTorch. SageMaker tarjoaa sinulle BYOC-lähestymistavan ja integroidut työkalut, joiden avulla voit suorittaa kvantisoinnin.
Lisätietoja on Matalampi numeerinen tarkkuus syväoppimisen päättely ja koulutus.
Ratkaisun yleiskatsaus
Vaiheet ratkaisun toteuttamiseksi ovat seuraavat:
- Luo EC2 C6i -ilmentymä ML-mallin kvantisoimiseksi ja luomiseksi.
- Käytä mukana toimitettuja Python-skriptejä kvantisointiin.
- Luo Docker-kuva ottaaksesi mallin käyttöön SageMakerissa käyttämällä BYOC-lähestymistapaa.
- Käytä Amazonin yksinkertainen tallennuspalvelu (Amazon S3) -ämpäri mallin ja koodin kopioimiseksi SageMaker-käyttöä varten.
- Käyttää Amazonin elastisten säiliörekisteri (Amazon ECR) Docker-kuvan isännöimiseksi.
- Käytä AWS-komentoriviliitäntä (AWS CLI) luodaksesi päättelypäätepisteen SageMakerissa.
- Suorita mukana toimitetut Python-testikomentosarjat kutsuaksesi SageMaker-päätepisteen sekä INT8- että FP32-versioille.
Tämä päättelyn käyttöönottoasetus käyttää BERT-pohjaista mallia Hugging Face -muuntajavarastosta (csarron/bert-base-uncased-squad-v1).
Edellytykset
Seuraavat ovat käyttöönottoasetusten luomisen edellytyksiä:
- Linuxin komentotulkkipääte, johon on asennettu AWS CLI
- AWS-tili, jolla on pääsy EC2-ilmentymän luomiseen (C6i-ilmentymätyyppi)
- SageMakerin käyttöoikeus SageMaker-mallin, päätepisteen määrityksen ja päätepisteen käyttöönottamiseksi
- AWS-henkilöllisyyden ja käyttöoikeuksien hallinta (IAM) pääsy IAM-roolin ja -käytännön määrittämiseen
- Pääsy Amazon ECR:ään
- SageMakerin käyttöoikeus muistikirjan luomiseen, jossa on ohjeet päätepisteen käynnistämiseen
Luo ja ota käyttöön kvantisoitu INT8-malli SageMakerissa
Avaa EC2-ilmentymä kvantisoidun mallin luomiseksi ja työnnä mallin artefaktit Amazon S3:een. Päätepisteen käyttöönottoa varten luo mukautettu säilö PyTorchilla ja Intel® Extension for PyTorchilla optimoidun INT8-mallin käyttöönottamiseksi. Säiliö työnnetään Amazon ECR:ään ja C6i-pohjainen päätepiste luodaan palvelemaan FP32- ja INT8-malleja.
Seuraava kaavio havainnollistaa korkean tason virtausta.
Katso koodia ja dokumentaatiota kohdasta GitHub repo.
Esimerkki käyttötapauksesta
Stanford Question Answering Dataset (SQuAD) on luetun ymmärtämisen tietojoukko, joka koostuu Wikipedia-artikkeleissa joukkotyöntekijöiden esittämistä kysymyksistä, joissa vastaus jokaiseen kysymykseen on tekstiosio tai tekstiosa. jänneväli, vastaavasta lukukohdasta, tai kysymys saattaa olla vastaamaton.
Seuraava esimerkki on kysymykseen vastausalgoritmi käyttäen BERT-perusmallia. Kun syötteenä on dokumentti, malli vastaa yksinkertaisiin kysymyksiin syöttödokumentin oppimisen ja kontekstien perusteella.
Seuraavassa on esimerkki syöttöasiakirjasta:
Amazonin sademetsä (portugaliksi: Floresta Amazônica tai Amazônia; espanjaksi: Selva Amazónica, Amazonía tai yleensä Amazonia; ranskaksi: Forêt amazonienne; hollanniksi: Amazoneregenwoud), joka tunnetaan myös englanniksi nimellä Amazonia tai Amazon Jungle, on kostea leveälehtinen metsä, joka peittää suurimman osan. Etelä-Amerikan Amazonin altaalla. Tämä altaan pinta-ala on 7,000,000 2,700,000 5,500,000 neliökilometriä (2,100,000 XNUMX XNUMX neliökilometriä), josta XNUMX XNUMX XNUMX neliökilometriä (XNUMX XNUMX XNUMX neliökilometriä) peittää sademetsä.
Kysymykseen "Mitä nimeä käytetään myös kuvaamaan Amazonin sademetsiä englanniksi?" saamme vastauksen:
Kysymykseen "Kuinka monta neliökilometriä sademetsää altaassa on?" saamme vastauksen:
Mallin kvantisointi PyTorchissa
Tämä osio antaa nopean yleiskatsauksen mallin kvantisoinnin vaiheista PyTorch- ja Intel-laajennuksilla.
Koodinpätkät on johdettu SageMaker-esimerkistä.
Käydään läpi yksityiskohtaisesti quantize.py-tiedoston IPEX_quantize-funktion muutokset.
- Tuo PyTorchin Intel-laajennukset kvantisoinnin ja optimoinnin avuksi ja tuo taskulamppu taulukoiden käsittelyä varten:
- Käytä mallin kalibrointia 100 iteraatiolle. Tässä tapauksessa olet kalibroimassa mallia SQuAD-tietojoukolla:
- Valmistele näytesyöttö:
- Muunna malli INT8-malliksi käyttämällä seuraavaa kokoonpanoa:
- Suorita kaksi iteraatiota eteenpäin siirtymistä mahdollistaaksesi fuusiot:
- Viimeisenä vaiheena tallenna TorchScript-malli:
Puhdistaa
Viittaavat Github-repo ohjeita luotujen AWS-resurssien puhdistamiseksi.
Yhteenveto
Uudet EC2 C6i -esiintymät SageMaker-päätepisteessä voivat nopeuttaa päätelmien käyttöönottoa jopa 2.5 kertaa nopeammin INT8-kvantisoinnilla. Mallin kvantisointi PyTorchissa on mahdollista muutamalla Intel PyTorch -laajennusten API:lla. On suositeltavaa kvantisoida malli C6i-esiintymissä, jotta mallin tarkkuus säilyy päätepisteen käyttöönotossa. Esimerkkejä SageMakerista GitHub repo tarjoaa nyt päästä-päähän käyttöönoton esimerkkiputken INT8-mallien kvantisointia ja isännöintiä varten.
Suosittelemme luomaan uuden mallin tai siirtämään olemassa olevan mallin käyttämällä INT8-kvantisointia EC2 C6i -ilmentymätyypin avulla ja katsomaan suorituskyvyn parannuksia itse.
Huomautus ja vastuuvapauslausekkeet
Tämä asiakirja ei myönnä lisenssiä (suoraa tai epäsuoraa, estoppelilla tai muuten) immateriaalioikeuksiin, paitsi että tähän asiakirjaan sisältyvä koodi on lisensoitu Zero-Clause BSD avoimen lähdekoodin lisenssi (0BSD)
Liite
Uudet AWS-instanssit SageMakerissa INT8-käyttöönoton tuella
Seuraavassa taulukossa on lueteltu SageMaker-instanssit, joissa on ja ilman DL Boost Tukea.
Ilmentymän nimi | Xeon Gen koodinimi | INT8 käytössä? | DL Boost käytössä? |
ml.c5. xlarge – ml.c5.9xlarge | Skylake/1st | Kyllä | Ei |
ml. 5.18x suuruinen | Skylake/1st | Kyllä | Ei |
ml.c6i.1x – 32xlarge | Jääjärvi/3rd | Kyllä | Kyllä |
Yhteenvetona voidaan todeta, että INT8 käytössä tukee INT8-tietotyyppiä ja laskentaa; DL Boost käytössä tukee Deep Learning Boostia.
Vertailutiedot
Seuraavassa taulukossa verrataan c5- ja c6-instanssien kustannuksia ja suhteellista suorituskykyä.
Latenssi ja suorituskyky mitattuna 10000 päättelykyselyllä Sage Maker -päätepisteisiin.
E2E:n päätepisteen latenssi ja kustannusanalyysi | |||||
P50 (ms) | P90 (ms) | Kyselyt/sek | $/1M kyselyä | Suhteellinen $/suorituskyky | |
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 |
INT8-mallien odotetaan parantavan 2–4 kertaa käytännöllistä suorituskykyä alle 1 %:n tarkkuushäviöllä useimmissa malleissa. Yllä oleva taulukko kattaa yläviiveen (NW ja demosovellus)
Tarkkuus BERT-perusmallille
Seuraavassa taulukossa on yhteenveto INT8-mallin tarkkuudesta SQUaD v1.1 -tietojoukon kanssa.
metrinen | FP32 | INT8 |
Tarkka ottelu | 85.8751 | 85.5061 |
F1 | 92.0807 | 91.8728 |
- GitHub repo mukana tulee komentosarjat SQuAD-tietojoukon tarkkuuden tarkistamiseksi. Viitata invoke-INT8.py ja invoke-FP32.py skriptit testausta varten.
Intel-laajennus PyTorchille
Intel® Extension for PyTorch* (avoimen lähdekoodin projekti GitHubissa) laajentaa PyTorchia optimoinnilla Intel-laitteiston suorituskyvyn parantamiseksi. Suurin osa optimoinneista sisällytetään lopulta PyTorchin varastossa oleviin julkaisuihin, ja laajennuksen tarkoituksena on toimittaa ajantasaiset ominaisuudet ja optimoinnit PyTorchille Intel-laitteistolla. Esimerkkejä ovat AVX-512 Vector Neural Network Instructions (AVX512 VNNI) ja Intel® Advanced Matrix Extensions (Intel® AMX).
Seuraava kuva havainnollistaa Intelin laajennusta PyTorch-arkkitehtuurille.
Tarkempia ohjeita (ominaisuudet, suorituskyvyn viritys ja paljon muuta) Intel® Extension for PyTorchille saat osoitteesta Intel® Extension for PyTorch* käyttöopas.
Tietoja Tekijät
Rohit Chowdhary on vanhempi ratkaisuarkkitehti AWS:n Strategic Accounts -tiimissä.
Aniruddha Kappagantu on ohjelmistokehitysinsinööri AWS:n AI Platforms -tiimissä.
Antony Vance on Intelin tekoälyarkkitehti, jolla on 19 vuoden kokemus tietokonenäöstä, koneoppimisesta, syväoppimisesta, sulautetuista ohjelmistoista, GPU:sta ja FPGA:sta.
- SEO-pohjainen sisällön ja PR-jakelu. Vahvista jo tänään.
- Platoblockchain. Web3 Metaverse Intelligence. Tietoa laajennettu. Pääsy tästä.
- Lähde: https://aws.amazon.com/blogs/machine-learning/accelerate-amazon-sagemaker-inference-with-c6i-intel-based-amazon-ec2-instances/
- :On
- $ YLÖS
- 000
- 1
- 100
- 11
- 7
- 8
- 9
- a
- edellä
- kiihdyttää
- pääsy
- Tili
- Tilit
- tarkkuus
- aktivoinnit
- kehittynyt
- etuja
- AI
- algoritmi
- aina
- Amazon
- Amazon EC2
- Amazon Sage Maker
- Amerikka
- ja
- vastaus
- API
- Hakemus
- sovellettu
- lähestymistapa
- arkkitehtuuri
- OVAT
- alueet
- Ryhmä
- artikkelit
- AS
- At
- saatavissa
- AWS
- kaistanleveys
- perustua
- BE
- tulevat
- ovat
- benchmark
- välillä
- edistää
- tuoda
- rakentaa
- by
- nimeltään
- CAN
- kyvyt
- tapaus
- tietty
- Muutokset
- tarkastaa
- pilvi
- koodi
- viestiä
- verrattuna
- vertailu
- laskeminen
- Laskea
- tietokone
- Tietokoneen visio
- tietojenkäsittely
- Konfigurointi
- Koostuu
- kulutus
- Kontti
- tausta
- yhteyksissä
- vastaava
- Hinta
- kustannukset
- katettu
- Covers
- luoda
- luotu
- Luominen
- luominen
- asiakassuhde
- tiedot
- syvä
- syvä oppiminen
- toimittaa
- osoittivat
- sijoittaa
- käyttöönotto
- käyttöönotot
- johdettu
- kuvata
- yksityiskohta
- yksityiskohtainen
- yksityiskohdat
- kehittäjille
- Kehitys
- Laitteet
- eri
- Satamatyöläinen
- asiakirja
- dokumentointi
- tekee
- dollari
- ajanut
- Dutch
- reuna
- Tehokas
- upotettu
- mahdollistaa
- käytössä
- kattaa
- kannustaa
- päittäin
- päätepiste
- insinööri
- Englanti
- lopulta
- Joka
- esimerkki
- Esimerkit
- poikkeus
- olemassa
- odottaa
- odotettu
- experience
- ilmaista
- laajentaminen
- laajennukset
- lisää
- Kasvot
- Ominaisuudet
- harvat
- Kuva
- filee
- kelluva
- virtaus
- jälkeen
- seuraa
- varten
- metsä
- muoto
- muoto
- Eteenpäin
- FPGA
- Puitteet
- puitteet
- Ranskan
- Taajuus
- alkaen
- toiminto
- voitto
- Gen
- saada
- GitHub
- tietty
- antaa
- Go
- GPU
- myönnetty
- suurempi
- vieras
- vieras Lähetä
- ohjaus
- Palvelimet
- Olla
- auttaa
- korkean tason
- korkeampi
- isäntä
- hotellit
- Miten
- Miten
- Kuitenkin
- HTML
- http
- HTTPS
- ICE
- Identiteetti
- kuva
- toteuttaa
- epäsuora
- tuoda
- tärkeä
- parantaa
- parannus
- parannuksia
- in
- sisältää
- mukana
- lisää
- tiedot
- panos
- esimerkki
- sen sijaan
- ohjeet
- integroitu
- Intel
- henkinen
- tekijänoikeuksien
- Tarkoitus
- IT
- toistojen
- jpg
- pito
- avain
- tunnettu
- järvi
- Sukunimi
- Viive
- käynnistää
- oppiminen
- Lisenssi
- Licensed
- pitää
- rajallinen
- linja
- linux
- Listat
- näköinen
- pois
- kone
- koneoppiminen
- valmistaja
- monet
- Matriisi
- välineet
- Muisti
- ehkä
- vaeltaa
- miljoona
- ML
- malli
- mallit
- lisää
- eniten
- MS
- nimi
- Tarve
- verkko
- neuroverkkomallien
- Uusi
- muistikirja
- of
- kampanja
- on
- avata
- avoimen lähdekoodin
- optimointi
- optimoitu
- OS
- muuten
- yleinen
- yleiskatsaus
- oma
- polku
- suorituskyky
- putki
- Platforms
- Platon
- Platonin tietotieto
- PlatonData
- Kohta
- Suosittu
- Portugalin
- mahdollinen
- Kirje
- teho
- powered
- Käytännön
- Tarkkuus
- edellytyksiä
- käsittely
- prosessorit
- projekti
- omaisuus
- Omistus oikeudet
- toimittaa
- mikäli
- tarjoaa
- Työnnä
- työntää
- Python
- pytorch
- kysymys
- kysymykset
- nopea
- Lukeminen
- reaaliaikainen
- suositeltu
- vähentää
- Vähentynyt
- vähentää
- Tiedotteet
- säilytyspaikka
- edustettuina
- edustavat
- vaatimukset
- tutkimus
- Esittelymateriaalit
- vastaus
- johtua
- tulokset
- oikeudet
- Rooli
- ajaa
- juoksu
- uhraa
- sagemaker
- SageMaker-johtopäätös
- Säästä
- skaalautuva
- skriptejä
- Osa
- segmentti
- palvella
- setti
- setup
- Kuori
- shouldnt
- näyttää
- merkittävä
- merkittävästi
- Yksinkertainen
- Koko
- koot
- So
- niin kaukana
- Tuotteemme
- ohjelmistokehitys
- ratkaisu
- Ratkaisumme
- lähde
- Etelä
- Etelä-Amerikassa
- Espanjan
- käytetty
- SQ
- neliö
- Vaihe
- Askeleet
- Varastossa
- Levytila
- Strateginen
- aihe
- niin
- yhteenveto
- toimitetaan
- tuki
- Tukee
- taulukko
- joukkue-
- tensorflow
- terminaali
- ehdot
- testi
- Testaus
- että
- -
- heidän
- suoritusteho
- kertaa
- että
- työkalut
- taskulamppu
- kauppa
- muuntajat
- tyypit
- ajanmukainen
- käyttää
- käyttäjä
- yleensä
- visio
- tavalla
- joka
- vaikka
- wikipedia
- tulee
- with
- ilman
- vuotta
- Voit
- Sinun
- itse
- zephyrnet