Contents
Als u drie opties krijgt aangeboden, zoals krachtig, efficiënt en goedkoop, ook geconfronteerd met het raadsel waar je maar een of twee mag kiezen. Beoefenaars van machine learning (ML) die neurale netwerken voor mobiel ontwikkelen, hebben niet altijd de luxe om hun eerste of twee keuzes te kiezen, omdat hun modellen over het algemeen snel en klein moeten zijn en weinig stroom verbruiken om effectief te zijn.
In onze recente blogpost, Neural Network Optimization with AIMET, hebben we besproken hoe de open-source AI Model Efficiency Toolkit (AIMET) van Qualcomm Innovation Center (QuIC) geavanceerde kwantisatie- en compressietechnieken biedt en hoe deze kan worden gebruikt met de Qualcomm Neural Processing SDK. Met AIMET kunnen ontwikkelaars hun ML-modellen optimaliseren om niet alleen hun grootte te verkleinen, maar ook de hoeveelheid stroom die nodig is voor inferentie te verminderen, terwijl de nauwkeurigheidsvereisten behouden blijven.
Eerder publiceerde Qualcomm AI Research hun whitepaper: A White Paper on Neural Network Quantization dat een diepgaande behandeling van kwantisatie biedt. Hun volgende whitepaper: Neural Network Quantization with AI Model Efficiency Toolkit (AIMET), biedt uitgebreide details en een praktische gids voor twee categorieën van kwantisatie met behulp van AIMET:
- Post-training Quantization (PTQ) ): analyseert getrainde neurale netwerken, die 32-bits drijvende-kommawaarden gebruiken (ook bekend als FP32-netwerken en FP-modellen), om optimale kwantiseringsparameters te vinden en aan te bevelen zonder hertraining of fijnafstemming van het model. PTQ-methoden kunnen datavrij zijn (d.w.z. ze hebben geen dataset nodig), of ze kunnen een kleine kalibratiedataset gebruiken om de modellen te optimaliseren voor gekwantiseerde inferentie.
- Quantization-aware Training (QAT) ): QAT gebruikt een vooraf getraind FP32-model, voegt kwantisatiebewerkingen toe op geschikte plaatsen om kwantisatieruis te simuleren, en verfijnt de modelparameters om de kwantisatieruis te bestrijden, waardoor een model wordt geproduceerd dat geschikt is voor gekwantiseerde inferentie. li>
In deze blogpost kijken we naar de PTQ-technieken die in de whitepaper worden besproken, waarbij we de belangrijkste kenmerken en sterke punten benadrukken en wanneer ze moeten worden gebruikt.
Waarom kwantificering?
Om het belang van PTQ-methoden te begrijpen, is het belangrijk om te onthouden wat kwantisering probeert te bereiken. In een notendop, kwantisatie omvat het in kaart brengen van een reeks waarden van een groot domein naar een kleiner domein. Hierdoor kunnen we kleinere bitbreedte-representaties gebruiken voor deze waarden (bijv. 8-bits gehele getallen in plaats van 32-bits drijvende-kommawaarden), waardoor het aantal bits dat moet worden opgeslagen, overgedragen en verwerkt, wordt verminderd. Bovendien voeren de meeste processors, waaronder de Qualcomm Hexagon DSP die te vinden is op Snapdragon mobiele platforms, over het algemeen vaste-komma (d.w.z. integer) wiskunde veel sneller en efficiënter uit dan drijvende-komma wiskunde.
Sinds de huidige neurale netwerken doorgaans gewicht en activeringstensoren weergeven met behulp van 32-bits drijvende-kommawaarden, kan het zeer nuttig zijn om deze waarden te kwantificeren tot kleinere representaties, tot wel 4-bits.
Echter, zoals de whitepaper aangeeft, kan kwantisatie ruis introduceren en dus de nauwkeurigheid verminderen. Dit kan om verschillende redenen gebeuren, bijvoorbeeld wanneer grote uitbijterwaarden worden afgekapt tot gekwantiseerde bereiken. Daarom hebben we zoveel energie gestoken in het verbeteren van kwantisatiemethoden voor verschillende soorten neurale netwerken.
PTQ-workflow en methoden
AIMET's PTQ-methoden omvatten momenteel:
- Cross-layer Equalization (CLE)
- Bias-correctie
- AdaRound
Deze methoden zijn bedoeld om te worden gebruikt in verschillende delen van een typische optimalisatieworkflow.
De whitepaper stelt de volgende workflow voor voor het gebruik van AIMET's PTQ-methoden:
Figuur 1 – Workflow die de PTQ-methoden van AIMET omvat.
Gegeven een vooraf getraind FP-model, omvat de workflow het volgende:
- AIMET's Cross-layer Equalization (CLE) verwerkt het FP-model voor, waardoor het kwantisatievriendelijk wordt .
- Kwantiseringsbewerkingen worden vervolgens aan het model toegevoegd om het kwantiseringseffect te simuleren en de prestaties te evalueren. Kwantiseringsoperaties kunnen gebaseerd zijn op verschillende factoren (bijv. doelhardware).
- Gewichtsbereiken voor de quantizers worden geselecteerd om afkapdrempels te specificeren, terwijl idealiter afrondingsfouten worden verminderd.
- Als er gegevens beschikbaar zijn, optimaliseert AIMET's AdaRound-implementatie het afronden van gewichten in plaats van het uitvoeren van de typische benadering van afronding naar dichtstbijzijnde
- Als er geen gegevens beschikbaar zijn, kan analytische Bias Correction worden toegepast. Bias Correction past de bias-parameter van een laag aan om te corrigeren voor bias in ruis die wordt geïntroduceerd door kwantisering. Bias Correction, in samenwerking met CLE, wordt in detail beschreven in Data-free Quantization (DFQ).
Laten we CLE, Bias Correction en AdaRound eens nader bekijken.
Cross-layer Equalization (CLE)
CLE egaliseert de gewichtsbereiken in het netwerk door gebruik te maken van de schaal-equivariantie-eigenschap van activeringsfuncties (d.w.z. egaliseer gewichtstensoren om de amplitudevariatie over kanalen te verminderen). Dit verbetert de kwantiseringsnauwkeurigheid voor veel gangbare computervisie-architecturen. CLE is vooral gunstig voor modellen met in de diepte scheidbare convolutielagen.
AIMET heeft API's voor CLE, inclusief de equalize_model() functie voor PyTorch , zoals weergegeven in het volgende codevoorbeeld:
van torchvision importeer modellen
van aimet_torch.cross_layer_equalization importeer equalize_model
model = models.resnet18(pretrained=True).eval()
input_shape = (1, 3, 224, 224 )
# Voert batch normalisatie vouwen, cross-layer schaling en High-bias absorptie uit
# Opgemerkt moet worden dat bovenstaande API het gegeven model ter plaatse gelijk zal maken.
equalize_model(model, input_shape)
Bias-correctie
Bias Correction corrigeert verschuivingen in laaguitvoer die zijn geïntroduceerd als gevolg van kwantisering. Wanneer ruis als gevolg van gewichtskwantisatie vertekend is, introduceert het ook een verschuiving (d.w.z. vertekening in de laagactiveringen). De hoofdoorzaak is vaak te wijten aan afgekapte uitbijterwaarden die de verwachte verdeling verschuiven. Bias Correction past de bias-parameter van een laag aan met behulp van een correctieterm om de bias in de ruis te corrigeren, en herstelt zo ten minste een deel van de nauwkeurigheid van het oorspronkelijke model.
AIMET ondersteunt twee Bias Correction-benaderingen:
- Empirische biascorrectie: gebruikt een dataset om de juiste term te berekenen door activeringen van gekwantiseerde en FP-modellen te vergelijken ten koste van extra verwerkingstijd.
- Analytische biascorrectie: Berekent de bevooroordeelde fout door middel van analyses zonder dat er gegevens nodig zijn. Voor netwerken met batchnormalisatie en ReLU-activeringsfuncties worden het gemiddelde en de standaarddeviatie van de batchnormalisatie gebruikt. AIMET detecteert automatisch kandidaat-convolutielagen met bijbehorende batchnormalisatiestatistieken in een bepaald model om biascorrectie uit te voeren.
AdaRound
Kwantisering projecteert doorgaans waarden van een groter domein op een kleiner domein dat bekend staat als het raster. Vervolgens rondt het de waarden af op het dichtstbijzijnde rasterpunt (bijvoorbeeld een geheel getal) zoals weergegeven in Afbeelding 2:
Figuur 2 – Visualisatie van de dichtstbijzijnde afronding naar een punt op het raster tijdens kwantisering naar een 8-bits getekende representatie.
Afronding naar dichtstbijzijnde is echter niet altijd optimaal. AdaRound is een effectieve en efficiënte methode die een kleine hoeveelheid gegevens gebruikt om te bepalen hoe de afrondingsbeslissing moet worden genomen en om de gewichten aan te passen voor betere gekwantificeerde prestaties. AdaRound is met name handig voor het kwantificeren naar een lage bitbreedte, zoals een 4-bits geheel getal, met een benadering na de training.
AIMET biedt een hoogwaardige API voor het uitvoeren van AdaRound die een model exporteert met bijgewerkte gewichten en een JSON-bestand met de bijbehorende coderingen.
Voor meer informatie over AdaRound, ga naar Up or Down? Adaptieve afronding voor kwantisatie na de training.
En de resultaten zijn binnen
De whitepaper laat indrukwekkende resultaten zien voor de PTQ-methoden van AIMET.
Tabel 1 hieronder toont de nauwkeurigheid van gangbare neurale netwerkmodellen voor objectclassificatie en semantische segmentatie, zowel als stand-alone FP32-modellen als na kwantisering tot 8-bits gehele getallen, met behulp van AIMET's CLE- en biascorrectiemethoden:
Model | Basislijn (FP32-model) | AIMET 8-bit gekwantiseerd (met CLE en Bias Correctie) |
---|---|---|
MobileNetv2 (Nauwkeurigheid Top-1) | 71,72% | 71,08% |
ResNet (Nauwkeurigheid Top-1) | 76,05% | 75,45% |
DeepLab v3 (gemiddelde IoU) | 72,65% | 71,91% |
Tabel 1- Nauwkeurigheden van FP32-modellen versus modellen die zijn geoptimaliseerd met AIMET's CLE en Bias Correction methoden
In alle drie de gevallen is het verlies aan nauwkeurigheid (ten opzichte van het FP32-model) minder dan 1%, terwijl de modelgrootte vier keer kleiner is geworden, van 32-bits naar 8-bits. Vermogens- en prestatieverbeteringen zijn afhankelijk van het model en de hardware, maar over het algemeen kan een overstap van FP32 naar INT8 een 16 keer betere energie-efficiëntie opleveren.
Tabel 2 toont de modelnauwkeurigheid van FP32-waarden vergeleken voor kwantisering met behulp van dichtstbijzijnde afronding, of AdaRound-afronding, op een objectdetectiemodel voor Advanced Driver-Assistance System (ADAS):
Configuratie | Gemiddelde gemiddelde precisie |
---|---|
FP32 | 82,20% |
Dichtstbijzijnde afronding (W8A8) | 49,85% |
AdaRound (W8A8) | 81,21% |
Tabel 2 – Vergelijking van de nauwkeurigheid van een model als FP32 versus kwantisatie met behulp van standaard afronding naar het dichtstbijzijnde rasterpunt en kwantisatie met afronding geleid door AdaRound voor een objectdetectie model
Hier kunnen we een aanzienlijk verschil in nauwkeurigheid zien tussen standaard dichtstbijzijnde afronding en AdaRound, waarbij de laatste binnen 1% van het oorspronkelijke FP32-model ligt. Nogmaals, het kwantificeren van 32-bits naar 8-bits verkleinde de modelgrootte met vier keer.
Voor meer informatie, bekijk de whitepaper hier, evenals de volgende bronnen:
- Een witboek over neurale netwerkkwantisatie: bespreekt kwantisatie, PTQ en QAT.
- Het kwantificeren van diepe convolutionele netwerken voor efficiënte inferentie: een whitepaper: behandelt de basisprincipes van kwantisatie en bevat metrieken van modelprestaties op onze DSP's.
- Omhoog of omlaag? Adaptive Rounding for Post-Training Quantization: Biedt een diepgaande bespreking van AdaRound.
- AI Model Efficiency Toolkit-pagina op QDN: Landingspagina waar u links kunt vinden naar alle bronnen die nodig zijn om AIMET te begrijpen en te gebruiken .
- AIMET GitHub open-source project: GitHub-opslagplaats voor de AIMET-bibliotheek die geavanceerde kwantisatie- en compressietechnieken biedt voor getrainde neurale netwerkmodellen.
Verwante blogs:
- Het maken van een Lucki-robot
- Autonome mobiele robots: wat moet ik weten om er een te ontwerpen?
- Het bouwen van computervisie, kunstmatige intelligentie en heterogeen computergebruik in uw robots
- Belangrijke inzichten van Microsoft Build 2022
- Overwegingen bij de planning van cloudconnectiviteit voor IoT Edge-apparaten
Chirag Patel
Hoofdingenieur/manager, Corporate R&D AI Research-team, Qualcomm Technologies