Zoals besproken in onze vorige blogpost, zal het comprimeren van grote deep learning-modellen de weg vrijmaken voor veel nieuwe AI-toepassingen en AI om ons dagelijks leven te ondersteunen. Dit maakt modelcompressie een populair onderzoeksgebied, wat aanleiding geeft tot meerdere intense online discussies, waaronder veel blogs en media-artikelen over verschillende gebruiksscenario's voor optimalisatie en compressieresultaten.

Sommige van de populaire AI-conferenties, zoals NeurIPS 2020 en CVPR 2020, hebben elk meer dan 50 onderzoekspapers in deep learning-modelcompressie geaccepteerd. In ICLR 2021 zijn er meer dan 100 papers ingediend. Dit betekent dat alleen al in 2020 meer dan 200 nieuwe onderzoekspapers over compressie van deep learning-modellen zijn gepubliceerd.

Maakt dit de compressie van deep learning-modellen tot een opgelost probleem? Helaas niet.

Professionals uit de industrie verwachten dat modelcompressie kan worden gebruikt als een kant-en-klare oplossing in de productie. Er is echter een GROTE Kloof tussen wat werkt in onderzoek en wat werkt in productie. Onderzoeksartikelen over modelcompressie vertalen zich niet in succesvolle resultaten op meerdere datasets, meerdere taken zoals classificatie, objectdetectie of vertaling, en zelfs op meerdere domeinen zoals afbeeldingen, tekst of audio. Veel bestaande benaderingen van DNN-optimalisatieoplossingen zijn ontworpen, rekening houdend met populaire deep learning-architecturen, zoals ResNet, DenseNet of BERT, in vergelijking met bestaande benchmark-datasets zoals CIFAR, ImageNet, enz. Wanneer deze benaderingen worden gebruikt in een luidruchtige aangepaste dataset in de echte -world of gebruikt in een op maat gemaakt deep learning-model, presteren de optimalisatietechnieken meestal slecht in vergelijking met wat wordt gerapporteerd in de onderzoekspapers.

Ondanks de vele beschikbare artikelen, wordt de expertise van het Deeplite-team vaak op de proef gesteld met veel open vragen over het modelcompressieproces van partners, medewerkers, klanten en investeerders.

In deze blogreeks, we <heeft al deze onzekerheden en verkeerd geïnformeerde meningen verzameld om er onze eerlijke en praktische antwoorden op te geven. We hopen dat dit meer duidelijkheid zal verschaffen over de misvattingen over compressie van deep learning-modellen.

Vraag #1: Werkt modelcompressie in het wild?

Deep learning-modelcompressie is erg ingewikkeld. In onze vorige blogpost hebben we het gehad over enkele belangrijke methoden voor het uitvoeren van compressie. Hoe veelbelovend het vandaag ook klinkt, het heeft veel uitdagingen en obstakels om te worden gebruikt in een productieomgeving of een echte toepassing. Laten we enkele van deze uitdagingen bespreken.

Ongestructureerd gewicht Snoeien: theorie versus praktijk

De huidige resultaten die kunnen worden bereikt door de onbelangrijke gewichtswaarden in een model te snoeien, leveren een schaarste van meer dan 90% op. Dit betekent dat slechts 10% van de gewichten voldoende is om het model te gebruiken. Men zou kunnen aannemen dat het model ook wordt gecomprimeerd tot 10% van de oorspronkelijke grootte.

In de praktijk is ongestructureerde gewichtssnoei een pseudo-compressiebenadering en vermindert het de grootte of computationele flops van het model niet. In plaats daarvan vervangt het ongewenste gewichtswaarden door nullen. Het aantal uitgevoerde berekeningen of de grootte van de modellen blijft dus hetzelfde. Om het model daadwerkelijk te comprimeren, moeten de bestaande bibliotheken, zoals PyTorch of Tensorflow, een `SparseConvolutional` (hypothetische) laag hebben om schaarse matrixberekeningen op een geoptimaliseerde manier uit te voeren. En om dat te bereiken, moet de onderliggende hardware schaarse matrixvermenigvuldiging ondersteunen.

Structured Weight Pruning: Theory vs Practice

In theorie verwijdert kanaalsnoei (of laagsnoei) ofwel een paar kanalen uit een laag of de hele laag zelf uit een model. In de praktijk zijn er twee uitdagingen. Ten eerste, in een zeer complexe DAG-modelarchitectuur (Directe Acyclische Grafiek) met bypass-verbindingen, moet het snoeien van een paar kanalen in een laag worden gepropageerd naar de takken. Dat is een complexe taak die voor elk black-boxmodel moet worden veralgemeend. Ten tweede zijn snoeikanalen gevoelig voor de nauwkeurigheid van het model. Het is dus een uitdaging om de kanalen van een model te snoeien zonder de werkelijke nauwkeurigheid van het model ernstig te verminderen.

Gewichtsdecompositie: theorie versus praktijk

In theorie vermindert gewichtsdecompositie het aantal modelparameters door matrixfactorisatie uit te voeren. Het ontbinden van één laag in een model introduceert in de praktijk echter drie tot vier nieuwe lagen in een model. Hoewel het aantal berekeningen in het model afneemt, neemt het aantal lagen in het model toe. Dit vergroot de totale geheugenvoetafdruk van het model en kan de doorvoer van het model in real-life toepassingen verminderen.

Gewichtskwantisering: theorie versus praktijk

Gewichtkwantisering vermindert de precisie van gewichtswaarden in plaats van de gewichten te verwijderen. In theorie wordt de reductie soms uitgevoerd in de mate van 2-bits precisie, waarbij 32-bits waarden worden verlaagd tot 2-bits waarden en het model 16x wordt gecomprimeerd.

In de praktijk ondersteunen de onderliggende bibliotheek (PyTorch, Tensorflow, etc.) en de hardware niet altijd low-bit precisieverwerking. De populaire `cuda-toolkit` voor NVIDIA GPU's voert bijvoorbeeld alleen 32-bits verwerking uit. Dus een 2-bits matrix wordt getypecast naar een 32-bits waarde, waardoor de kwantisatie- en compressieresultaten verloren gaan.

Vraag #2: Voert Tensorflow al optimalisatie uit?

Tensorflow voert twee uit soorten optimalisatie (compressie) voor een deep learning-model:

  1. Ongestructureerde gewichtsreductie
  2. 16-bits gewichtskwantisering

We hebben het in de vorige vraag al gehad over ongestructureerde gewichtssnoei en de uitdagingen ervan. Laten we ons dus concentreren op de 16-bits gewichtskwantisering (FP-16). Hoewel in theorie 16-bit weight quantization (FP-16) de modelgrootte halveert, kan het in de praktijk alleen worden toegepast als de onderliggende hardware 16-bit processing ondersteunt. Tegenwoordig ondersteunt veel hardware geen standaard 16-bits verwerking.

Daar komt nog bij dat TensorFlow Lite ook INT8-kwantisatie biedt, wat maar goed past bij een beperkt aantal architecturen. Zowel INT8- als FP-16-kwantisaties op TensorRT zijn afhankelijk van hardwareondersteuning. In feite kan de kwantisering die door Tensorflow of TensorRT wordt geleverd met succes worden gebruikt in specifieke hardware-architecturen, maar niet in alle.

Vraag #3: Is dit niet snoeien?

Gewichtssnoei of kanaalsnoei is een van de manieren om modelcompressie te bereiken. Door gewichtssnoei toe te passen op DNN's, verwijderen we lagen of kanalen van een laag die de nauwkeurigheid van het model vaak ernstig aantast. In productieomgevingen is het doel gewoonlijk om het model te comprimeren, maar zo min mogelijk nauwkeurigheid te verliezen, soms minder dan 1%.

Dus kanaalsnoei is moeilijk toe te passen in productie. Uitzoeken welke kanalen moeten worden verwijderd en welke kanalen moeten worden behouden, is buitengewoon moeilijk. De ontwerpruimte (set van alle mogelijke modellen) is zo groot dat het vinden van een gesnoeide architectuur wordt geclassificeerd als een NP-hard probleem. Wat in alledaagse taal super-duper jumbo hard betekent.

Vraag #4: Komt compressie alleen van hardware?

Dit is waarschijnlijk een van de meest voorkomende misvattingen in de modeloptimalisatie-industrie. Ja, er zijn veel softwarematige optimalisatieoplossingen zoals AutoML of Neural Architecture Search (NAS). Maar een goede DNN-optimalisatie-implementatie heeft altijd een passende hardwareondersteuning nodig. Optimalisatie moet worden gedaan in het algehele workflowontwerp en de levenscyclus van het gebruik van modellen in productie. Een gezonde combinatie van door software en hardware ontworpen optimalisatie samen met een soepele en geoptimaliseerde workflow is dus de beste manier om deep learning-modellen in productie te leveren.

Bij Deeplite voeren we twee optimalisatiefasen uit:

  • softwaregebaseerde optimalisatie
  • hardwaregebaseerde optimalisatie

Vraag #5: Kan ik verschillende optimalisatietechnieken op één model gebruiken?

Ja, verschillende optimalisatiemethoden kunnen op elkaar worden gestapeld om sterk gecomprimeerde modellen te produceren. In feite zouden we in theorie een perfecte symfonie kunnen creëren van vele optimalisatietechnieken in synchronisatie om op hetzelfde model toe te passen.

Hoewel de verschillende optimalisatietechnieken meestal niet met elkaar in strijd zijn, moet je altijd slim zijn over welke methoden je moet combineren, op welk deel van het model je ze allemaal gebruikt en in welke volgorde je ze gebruikt. Bij Deeplite combineren we verschillende optimalisatiemethoden om een ​​sterk gecomprimeerd en robuust model te produceren, met een verwaarloosbare vermindering van de modelprestaties.

Vraag #6: Duurt Neural Architecture Search (NAS) voor altijd?

Neural Architecture Search (NAS) of AutoML kan lastig zijn om mee te werken. Waarom? Omdat de zoekruimte van alle mogelijke modellen groot is. Het aantal hyperparameters waarnaar moet worden gezocht, loopt meestal in de honderden, waardoor NAS aanvoelt als een hardnekkig probleem dat een eeuwigheid duurt om op te lossen! Bovendien zijn neurale netwerken die door machines worden gegenereerd, vaak ondoorzichtig en ongepast wanneer ze worden ondervraagd door een menselijke expert. Veel recente onderzoekspapers toonden NAS-resultaten waarbij het zoeken naar een model jaren kon duren. In dit voorbeeldartikel (zie tabel 2) duurt het bijvoorbeeld 69 jaar TPUv3-berekening om de vereiste resultaten te produceren.

Maar er is licht aan het einde van de tunnel! We zouden slimme NAS kunnen uitvoeren, ook wel efficiënte NAS genoemd, die wordt gebruikt om de zoekruimte enorm te verminderen. In de meeste productievereisten of problemen in de echte wereld zou een leraarsmodel voldoende nauwkeurigheid bieden. Dit lerarenmodel wordt gebruikt als een seed, waarna een NAS-algoritme wordt gebruikt om in de dichtstbijzijnde buurt te zoeken om een ​​veel kleiner en gecomprimeerd model te vinden, met gelijkwaardige nauwkeurigheid. Evenzo kunnen enkele coole NAS-trucs, zoals aandachtsmechanismen om de totale ontwerpruimte te verkleinen, worden uitgevoerd om de zoektijd te verkorten.

Vraag #7: Kan ik mijn geoptimaliseerde model van de ene hardware naar de andere overzetten, zeg GPU tegen CPU?

Dit is een lastige vraag. Het duidelijke antwoord is “Ja!”, Geoptimaliseerde deep learning-modellen kunnen van de ene hardware naar de andere worden overgedragen. Frameworks zoals ONNX ondersteunen bijvoorbeeld verschillende backend-hardware: CPU, GPU, Multi-GPU enz. Als u in PyTorch een `model` hebt, maakt een éénregelige opdracht met de naam `model.cpu()` het CPU-klaar en `model.cuda()` maakt het GPU-gereed. Bovendien kan modeloptimalisatie het aantal parameters en on-chip geheugen dat nodig is voor de modelinferentie aanzienlijk verminderen, waardoor een model kan worden geport van een apparaat met hoge capaciteit naar een apparaat met strengere resourcebeperkingen, zelfs apparaten op microcontroller (MCU) niveau.

Het gebruik van deze modellen in aangepaste of niet-gewone hardware is echter lastig en vereist veel technische inspanningen om de nodige software-ondersteuning te bouwen. Dit is een van de meest interessante gebieden waar DNN-modelcompressie de meeste impact kan hebben naarmate er meer hardware beschikbaar komt voor diepgaande leerinferentie. We bereiken mogelijk een trend in het comprimeren en overzetten van bestaande DL-infrastructuurstacks van bestaande hardware naar nieuwe hardware wanneer nieuwe opties commercieel beschikbaar komen.

Vraag #8: Weet u niet hoe compressie de nauwkeurigheid zal beïnvloeden?

Wanneer een model wordt gecomprimeerd door bepaalde gewichten of kanalen of lagen te verwijderen, moet het model doorgaans opnieuw worden getraind (of voldoende worden verfijnd) of wordt een destillatieproces gebruikt om de nauwkeurigheid van het gecomprimeerde model te achterhalen. Het is dus erg moeilijk om het effect van compressie in de nauwkeurigheidsdaling te meten zonder training. Dit is een van de heilige graalproblemen van de compressie van deep learning-modellen.

We moeten erkennen dat er lopend onderzoek is gedaan naar het voorspellen van de prestaties van een model op een dataset tabula rasa. Dit onderzoek staat echter nog in de kinderschoenen en het is onduidelijk hoe het zich zal vertalen naar de praktijk. Bovendien zien we meestal dat het aanvankelijk trainen van een groot model om een ​​hogere basislijnnauwkeurigheid te bereiken en vervolgens zwaar compressie toepassen, uiteindelijk zal resulteren in een nauwkeuriger en kleiner model dan simpelweg proberen een klein initieel model te trainen op de taakgegevensset.

Vraag #9: Kun je alleen een goede inferentielatentie krijgen op GPU/ASIC?

De doorvoer van het model in GPU is veel minder dan in een ASIC =/TPU. Dat is de reden waarom als we dezelfde modelcompressie toepassen op ASIC-architecturen (zoals RAM/CPU) en op GPU, we waarschijnlijk het maximale versnellingseffect op ASIC zullen bereiken, en een kleinere impact op latentie op GPU.

Een behoorlijke latentieverbetering via modelcompressie kan ook worden bereikt op andere hardware, zoals FPGA, ARM CPU of zelfs microcontrollers (MCU's), met name door een model of meervoudig model in staat te stellen om op chipgeheugen te passen en de kosten van gegevensverplaatsing voor gevolgtrekking.

Vraag #10: Kun je een model op het apparaat comprimeren?

In theorie is de ideale oplossing om het grote deep learning-model direct aan de rand te kunnen comprimeren apparaat. In de praktijk is compressie van deep learning-modellen nog steeds een *kostbare* operatie en vereist voldoende omvang, rekenkracht en tijd. De meeste op software en hardware gebaseerde compressietechnieken van tegenwoordig worden dus uitgevoerd op de cloud computing-bronnen en geïmplementeerd op het edge-apparaat na compressie.

In de toekomst is compressie op het apparaat een echt belangrijk onderzoek probleem. De huidige onderzoekswerkzaamheden zijn nog in de kinderschoenen en er is veel ruimte om enkele fundamentele en uitdagende problemen in deze ruimte op te lossen.

Dat is alles voor nu! We hopen dat je dit artikel met plezier hebt gelezen en het nuttig vond. Bedankt!

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 *