Welkom terug bij de DNN-modeloptimalisatiereeks! Ons recente artikel over de unieke optimalisatiesoftware van Deeplite, Neutrino™, heeft de prijs “Best Deployed System” gewonnen op Innovatieve toepassingen van kunstmatige intelligentie 2021. Voor deze gelegenheid hebben we besloten om dit nummer van de serie DNN-modeloptimalisatie te wijden aan een diepe duik in de kampioen onderzoekspaper.

AI en deep learning, met name voor edge-apparaten, winnen aan kracht en beloven de digitalisering van veel verticale markten mogelijk te maken. Ondanks alle opwinding is het inzetten van deep learning makkelijker gezegd dan gedaan! In een van onze vorige blogposts hebben we al gekeken waarom je je DNN-modellen moet optimaliseren. Laten we eens kijken naar 'hoe' het Neutrino™-framework van Deeplite de optimalisatie van de steeds grotere AI-modellen aanpakt en de weg vrijmaakt voor eenvoudige implementaties in randapparaten met steeds meer beperkingen.

Neutrino™ is een end-to-end black-box-platform voor volledig geautomatiseerde DNN-modelcompressie die de modelnauwkeurigheid handhaaft. Het kan naadloos en soepel worden geïntegreerd in elke ontwikkelings- en implementatiepijplijn, zoals weergegeven in de onderstaande afbeelding. Geleid door de beperkingen en vereisten van de eindgebruiker, produceert Neutrino™ het geoptimaliseerde model dat verder kan worden gebruikt voor inferentie, ofwel direct geïmplementeerd op het edge-apparaat of in een cloudomgeving.

Deeplite's unieke manier om DNN-modellen te comprimeren

Wat heb je nodig om te beginnen?

  1. Je vooraf getrainde DNN-model, M,
  2. De feitelijke splitsing van treintestgegevens die u hebt gebruikt om het model, DLtrain en DLtest te trainen, en
  3. De volgende reeks vereisten om de optimalisatie te begeleiden:
  • Delta: De acceptabele tolerantie van nauwkeurigheidsdaling ten opzichte van het originele model, bijvoorbeeld 1%.
  • Stage: De twee verschillende compressiefasen, terwijl fase 1 minder intensieve compressie vereist minder rekenbronnen, fase 2 biedt agressievere compressie met meer bronnen en tijd.
  • Apparaat: voer de volledige optimalisatie en modelinferentie uit in CPU, GPU of multi-GPU ( gedistribueerde GPU-omgeving).
  • Modulariteit: De eindgebruiker kan meerdere delen van het optimalisatieproces voor Neutrino™ aanpassen aan complexere scenario's. Deze aanpassing omvat gespecialiseerde data-loaders, aangepaste backpropagation-optimizers en ingewikkelde verliesfuncties die hun eigen bibliotheekimplementatie mogelijk maakt.

Het algoritme dat we hebben gebruikt om het DNN-model automatisch te begrijpen, analyseren en comprimeren voor een bepaalde dataset wordt hieronder uitgelegd.

De vier componenten van Neutrino™

  1. Neutrino™ Model Zoo: om het gebruik voor de eindgebruiker te vergemakkelijken, een verzameling populaire DNN-architecturen met getrainde gewichten op verschillende benchmark-datasets worden geleverd als Neutrino™ Zoo.
  2. Dirigent: Het doel van de dirigent is om alle geleverde inputs te verzamelen, de gegeven vereisten te begrijpen en de hele optimalisatiepijplijn dienovereenkomstig te orkestreren.
  3. Verkenning: het is een grove compressiefase op hoog niveau, waar de componist selecteert verschillende transformatiefuncties voor de verschillende lagen in het DNN-model.
  4. Uitgloeien: het is een fijnkorrelige agressieve compressiefase om de maximaal mogelijke compressie te verkrijgen binnen de vereiste tolerantie van nauwkeurigheid.

Het proces

In een van onze blogposts hebben we de top 10 vragen over het modelcompressieproces al beantwoord. Om het kort uit te leggen, bij Deeplite combineren we dynamisch verschillende optimalisatiemethoden voor verschillende lagen in een model om een ​​prachtig resultaat te creëren, waarbij maximale compressie wordt bereikt met minimaal nauwkeurigheidsverlies (en als we minimaal zeggen, menen we het! Bekijk de resultaten hieronder).

Laten we hier een voorbeeld bekijken. Ons vooraf getrainde model heeft Noptimaliseerbare lagen: {L1, L2, …, LN}. In een typisch CNN-model kunnen de convolutionele lagen en de volledig verbonden lagen worden geoptimaliseerd, terwijl de rest van de lagen worden genegeerd in het optimalisatieproces. De dirigent analyseert de grootte van de trainingsgegevens, het aantal uitvoerklassen, de modelarchitectuur en optimalisatiecriteria, delta, en produceert een samengestelde lijst, CL = {c1, c2, …, cN} van verschillende transformatiefuncties voor verschillende lagen in het model. Voor elke laag, Li, in het model, ziet de samengestelde functie ci er als volgt uit:

De uitdaging is om een ​​ideale maat r te vindendat zorgt voor een goede compressie met behoud van de robuustheid van het model. Wanneer r gelijk is aan de werkelijke grootte van de gewichtstensor van de laag, r = grootte (Wi), is er een overmatige benadering van de transformatie met een zeer lage compressie. Een zeer kleine afmeting, r → 0, produceert echter een hoge compressie met een verliesgevende reconstructie van de transformatie.

Fase 2 optimalisatie is gericht op het uitvoeren van agressieve compressie en het verkrijgen van de maximaal mogelijke compressie in de vereiste nauwkeurigheidstolerantie. Als de delta van nauwkeurigheid bijvoorbeeld 1% is en fase 1 een compressie van 4x produceert met een nauwkeurigheidsdaling van 0,6%, probeert fase 2 de compressie te bevorderen met een delta die zo dicht mogelijk bij 1% komt.

Hoe meten we de optimalisatie- en compressieprestaties?

Hier zijn de statistieken die we gebruiken om de mate van optimalisatie en prestaties van Neutrino™ te meten.

Nauwkeurigheid: We meten de top-1 nauwkeurigheid (%) van het model. Succesvolle optimalisatie behoudt de nauwkeurigheid van het oorspronkelijke model.

Modelgrootte: We meten de schijfgrootte (MB) die wordt ingenomen door de trainbare parameters van het model. Dankzij de kleinere modelgrootte kunnen modellen worden geïmplementeerd in apparaten met geheugenbeperkingen.

MAC's: we meten de rekencomplexiteit van het model aan de hand van het aantal (miljarden) Multiply-Accumulate Operation (MAC) berekend over de lagen van het model. Hoe lager het aantal MAC's, hoe beter het model is geoptimaliseerd.

Aantal parameters: We meten het totale aantal (miljoenen) trainbare parameters (gewichten en biases) in het model. Optimalisatie is bedoeld om het aantal parameters te verminderen.

Geheugenvoetafdruk: we meten het totale geheugen (MB) dat nodig is om de inferentie uit te voeren op een batch gegevens, inclusief het geheugen dat nodig is voor de trainbare parameters en de laagactiveringen. Een lagere geheugenvoetafdruk wordt bereikt door betere optimalisatie.

Uitvoertijd: We meten de tijd (ms) die nodig is om een ​​voorwaartse pass op een batch gegevens uit te voeren. Geoptimaliseerde modellen hebben een kortere uitvoeringstijd.

DNN-modelcompressieresultaten met Neutrino™

Alle optimalisatie-experimenten worden uitgevoerd met een eindgebruikerseis van nauwkeurigheidsdelta van 1%. De experimenten worden uitgevoerd met een mini-batchgrootte van 1024, terwijl de statistieken zijn genormaliseerd voor een mini-batchgrootte van 1. Alle experimenten worden uitgevoerd op vier parallelle GPU's, met behulp van Horovod, en elke GPU is een Tesla V100 SXM2 met 32GB geheugen.

< td>0.2067

Boog Model Nauwkeurigheid (%) Grootte (MB) FLOP's (miljarden) #Params (miljoenen) Geheugen (MB) Uitvoeringstijd (ms)
Resnet 18 Origineel 76.8295 42.8014 0.5567 11.2201 48.4389 0.0594
Fase 1 76.7871 7,5261 0,1824 1,9729 15,3928 0,0494
Fase 2 75.8008 3.4695 0.0790 0.9095 10.3965 0.0376
Verbeteren -0.9300x 12.34x 7,05x 12,34x 4,66x 1,58x
Resnet50 Origineel 78.0657 90.4284 1.3049 23.7053 123.5033 3.9926
Fase 1 78.7402 25.5877 0.6852 6.7077 65.2365 0.2444
Fase 2 77.1680 8.4982 2.2278 43.7232 0.1772
Verbeteren -0.9400 10.64x 6,31x 10,64x 2,82x 1,49x
VGG19 Origineel 72.3794 76.6246 0.3995 20.0867 80.2270 1.4238
Fase 1 71.5918 3.3216 0.0631 0.8707 7.5440 0,0278
Fase 2 71,6602 2,6226 0,0479< 0,6875 6.7399 0.0263
Verbeteren -0.8300 29,22x 8,34x 29,22x 11,90x 1,67x

&nbsp ;

< td>Geheugen (MB)

< td>0.2372

Boog Model Nauwkeurigheid (%) Grootte (MB) FLOP's (miljarden) #Params (miljoenen) Uitvoertijd (ms)
DenseNet121 Origineel 78.4612 26.8881 0.8982 7.0485 66.1506 10.7240
Fase 1 79.0348 15.7624 0.5477 4.132 61.8052 0.2814
Fase 2 77,8085 6,4246 0,1917 1,6842 48,3280
Verbeteren -0.6500 4,19x 4,69x 4,19x 1,37 x 1,17x
GoogleNet Origineel 79.3513 23.8743 1.5341 6.2585 64.5977 5.7186
Fase 1 79.4922 12.6389 0.8606 3.3132 62.1568 0.2856
Fase 2 78.8086 6.1083 0.3860 1.6013 51.3652 0.2188
Verbeteren -0.4900 3.91x 3,97x 3,91x 1,26x 1,28x
MobileNet v1 Origineel 66.8414 12.6246 0.0473 3.3095 16.6215 1.8147
Etage 1 66,4355 6,4211 0,0286 1,6833 10,5500 0.0306
Fase 2 66.6211 3.2878 0.0170 0.8619 7.3447 0.0286
Verbeteren -0.4000 3,84x 2,78x 3,84x 2,26x 1,13x

 

< td>0.1606

Boog: Resnet18

Dataset

Model Nauwkeurigheid (%) Grootte (MB) FLOP's (miljarden) #Params (miljoenen) Geheugen (MB) Uitvoertijd ( ms)
Imagenet16 Origineel 94.4970 42.6663 1.8217 11.1847 74.6332 0.2158
Fase 1 93.8179 3.3724 0.5155 0.8840 41.0819
Fase 2 93.6220 1.8220 0.3206 0.4776 37.4608 0.1341
Verbeteren -0.8800 23,42x 5,68x 23,42x 1,99x 1,61x
VWW (Visual Wake Words) Origineel 93.5995 42.6389 1.8217 11.1775 74.6057 0.2149
Fase 1 93,8179 3,3524 0,4014 0,8788 39,8382 0,1445
Fase 2 92,6220 1,8309 0,2672 0.4800 36.6682 0.1296
Verbeteren <-0.9800 23.29x 6.82x 23,29x 2,03x 1,66x

Afhankelijk van de architectuur van het originele model, kan worden vastgesteld dat de modelgrootte ergens tussen ∼3x en ∼30x kan worden gecomprimeerd. VGG19 staat bekend als een van de sterk overgeparametriseerde CNN-modellen. Zoals verwacht, bereikte het een 29,22x reductie in het aantal parameters met bijna ∼12x compressie in de totale geheugenvoetafdruk en ∼een 8,3x reductie in rekencomplexiteit. Het resulterende VGG19-model neemt slechts 2,6 MB in beslagin vergelijking met het oorspronkelijke model dat 76,6 MB vereist.

De prestaties van Neutrino™ op grootschalige vision-datasets produceren ongeveer ∼23,5x compressie van ResNet18 op Imagenet16- en VWW-datasets. Het geoptimaliseerde model vereist slechts 1,8 MB in vergelijking met de 42,6 MB die nodig is voor het originele model.

Stage 1 vs. Stage 2 compressie

Cruciaal is dat kan worden opgemerkt dat Stage 2 het model minstens 2x meer comprimeert dan Stage 1 compressie. De totale tijd die nodig is voor optimalisatie door Neutrino™, inclusief fase 1 en fase 2, wordt weergegeven in de onderstaande afbeelding. Het kan worden opgemerkt dat de meeste modellen in minder dan ∼ 2 uur konden worden geoptimaliseerd. Complexe architecturen met langere trainingstijden, zoals Resnet50 en DenseNet121, nemen ongeveer ∼6 uur en ∼13 uur in beslag voor optimalisatie.

De vergelijking tussen de tijd die nodig is voor compressie van fase 1 en fase 2 wordt visueel weergegeven in de onderstaande afbeelding. Opgemerkt kan worden dat bijna 60-70% van de algehele optimalisatie wordt bereikt in fase 2, terwijl fase 1 minder dan ∼40% van de totale benodigde tijd in beslag neemt. Deze differentiatie fungeert als een belangrijk kenmerk van Neutrino™, waar eindgebruikers die snelle optimalisatie nodig hebben met minder hulpbronnenverbruik, kunnen kiezen voor fase 1. Daarentegen kunnen degenen die agressieve optimalisatie nodig hebben, voor fase 2 optimalisatie kiezen.

Productieresultaten van Neutrino™

Deeplite's Neutrino™ wordt ingezet in verschillende productieomgevingen en de resultaten van de verschillende verkregen use-cases zijn samengevat in de onderstaande tabel. Om de efficiëntie van de prestaties van Neutrino™ te demonstreren, worden de optimalisatieresultaten vergeleken met andere populaire frameworks op de markt, zoals (i) Microsoft's Neural Network Interface (NNI), Intel's Neural Network Distiller en (iii) Tensorflow Lite Micro. Er kan worden vastgesteld dat Neutrino™ consequent beter presteert dan de concurrenten door hogere compressie en een betere nauwkeurigheid te bereiken.

Gebruiksvoorbeeld Arch Model Nauwkeurigheid (%) Grootte (bytes) FLOP's (miljoenen) #Params (miljoenen)
Andes Technology Inc. MobileNetv1(VWW) Origineel 88.1 12.836.104 105.7 3.2085
Neutrino™ 87,6 188.000 24,6 0.1900
TensorFlow LM 84.0 860.000 0.2134
Prod #1 MobilNetV2-0.35x (Imagenet Small) Origineel 80,9 1.637,076 66,50 0,4094
Neutrino™ 80,4 675.200 50,90 0.1688
Intel Distiller 80.4 1.637.076 66.50 0.2562
Microsoft NNI 77.4 1.140.208 52.80 0.2851
Prod. #2 MobileNet v2-1.0x (Imagenet Small) Origineel 90.9 8.951.804 312.8 2.2367
Neutrino™ 82.0 1.701.864 134.0 0.4254
Intel-distilleerder 82,0 8,951,804 312,86 0,2983

Hoe Neutrino™ gebruiken?

Het Neutrino™-framework is volledig geautomatiseerd en kan elke op convolutionele neurale netwerk (CNN) gebaseerde architectuur optimaliseren zonder menselijke tussenkomst. Neutrino™-framework wordt gedistribueerd als Python PyPI-bibliotheek of Docker-container, met productieondersteuning voor PyTorch en vroege ontwikkelingsondersteuning voor TensorFlow/Keras.

Dat was het voor nu, mensen! Onthoud dat compressie een cruciale eerste stap is om deep learning toegankelijker te maken voor technici en eindgebruikers op edge-apparaten. Het ontsluiten van zeer compacte, zeer nauwkeurige intelligentie op apparaten die we elke dag gebruiken, van telefoons tot auto's en koffiezetapparaten, zal een ongekende impact hebben op hoe we nieuwe technologieën gebruiken en vormgeven.

Heb je een vraag of wens ons om naar andere AI-modeloptimalisatieonderwerpen te kijken? Laat hier een reactie achter. We helpen u graag verder!

Geïnteresseerd om u aan te melden voor een demo van Neutrino™? Raadpleeg deze link.

Anush Sankaran
Senior onderzoekswetenschapper, Deeplite

Anastasia Hamel
Digital Marketing Manager, Deeplite

0

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *