Contents
Om neurale netwerken efficiënt aan de rand uit te voeren op mobiele, IoT- en andere embedded apparaten, streven ontwikkelaars ernaar hun machine te optimaliseren leermodellen (ML)’ grootte en complexiteit, terwijl u profiteert van hardwareversnelling voor gevolgtrekking. Voor dit soort apparaten zijn een lange levensduur van de batterij en thermische controle essentieel, en de prestaties worden vaak gemeten per watt. Geoptimaliseerde ML-modellen kunnen helpen deze doelen te bereiken door het verminderen van berekeningen, geheugenverkeer, latentie en opslagvereisten, terwijl de hardware efficiënter wordt gebruikt.
In deze blogpost gaan we dieper in op ML-modeloptimalisatietechnieken en hoe oplossingen van Qualcomm Technologies en Qualcomm Innovation Center ontwikkelaars kunnen helpen deze te implementeren.
State-of-the-art modeloptimalisatie
Hoewel ontwikkelaars veel energie steken in het ontwerp van een model, kunnen ze ook de volgende optimalisatietechnieken gebruiken om de grootte en complexiteit van een model te verminderen:
- Kwantisering : vermindert het aantal bits dat wordt gebruikt om de gewichten en activeringen van een model weer te geven (bijv. het verminderen van gewichten van 32-bits drijvende-kommawaarden naar 8-bits gehele getallen).
- Compressie: verwijdert overbodige parameters of berekeningen met weinig of geen invloed op voorspellingen.
De sleutel tot succes met deze optimalisatietechnieken is het implementeren ervan zonder de voorspellende prestaties van het model significant te beïnvloeden. In de praktijk gebeurt dit vaak met de hand door veel vallen en opstaan. Dit omvat meestal het herhalen van modeloptimalisaties, het testen van de voorspellende en runtimeprestaties van het model en vervolgens het herhalen van het proces om de resultaten te vergelijken met eerdere tests.
Gezien het belang ervan op mobiel, is optimalisatie van ML-modellen een gebied waar we uitgebreid onderzoek naar blijven doen. Traditioneel deelden we onze doorbraken via conferentiepapers en workshops, maar voor deze optimalisatietechnieken hebben we besloten de toegankelijkheid te vergroten door onze AI Model Efficiency Toolkit (AIMET) uit te brengen. AIMET biedt een verzameling geavanceerde modelcompressie- en kwantisatietechnieken voor getrainde neurale netwerkmodellen.
AIMET ondersteunt veel functies, zoals Adaptive Rounding (AdaRound) en Channel Pruning, en de resultaten spreken voor zich. Het data-free quantization (DFQ)-algoritme van AIMET kwantiseert bijvoorbeeld 32-bits gewichten tot 8-bits met een verwaarloosbaar verlies aan nauwkeurigheid. De AdaRound van AIMET biedt state-of-the-art kwantisering na de training voor 8-bits en 4-bits modellen, met een nauwkeurigheid die zeer dicht bij de originele FP32-prestaties ligt. AIMET's ruimtelijke SVD plus kanaalsnoei is een ander indrukwekkend voorbeeld omdat het een reductie van 50% MAC (multiply-accumulate) behaalt met behoud van nauwkeurigheid binnen 1% van het oorspronkelijke ongecomprimeerde model.
In mei 2020, ons Qualcomm Innovation Center (QuIC) open source AIMET. Dit maakt samenwerking met andere ML-onderzoekers mogelijk om continu de modelefficiëntietechnieken te verbeteren die de ML-gemeenschap ten goede komen.
Afbeelding 1 laat zien hoe AIMET past in een typische pijplijn voor ML-modeloptimalisatie:
Figuur 1 – Overzicht van AIMET in een pijplijn voor optimalisatie van ML-modellen.
Met behulp van AIMET kunnen ontwikkelaars de geavanceerde modelcompressie- en kwantiseringsalgoritmen opnemen in hun PyTorch- en TensorFlow-modelbouwpijplijnen voor geautomatiseerde optimalisatie na de training en indien nodig voor fijnafstemming van het model. Door deze algoritmen te automatiseren, is het niet meer nodig om neurale netwerken met de hand te optimaliseren, wat tijdrovend, foutgevoelig en moeilijk te herhalen kan zijn.
AIMET en Snapdragon
Ontwikkelaars die ML-oplossingen voor apparaten bouwen aangedreven door Snapdragon® mobiele platforms gebruiken vaak de Qualcomm® Neural Processing SDK. Deze SDK biedt een workflow om modellen (bijv. geëxporteerde TensorFlow-modellen) naar ons DLC-formaat te converteren voor optimale uitvoering op de SoC's Qualcomm® AI Engine.
Door AIMET op te nemen om optimalisatie veel eerder in de modelbouwpijplijnen uit te voeren, kunnen ontwikkelaars modeloptimalisaties evalueren voordat ze naar DLC worden geconverteerd. Als u dit doet, kunt u iteraties tijdens de implementatie verminderen. Het stelt ontwikkelaars ook in staat om de uitgebreide reeks algoritmen uit te proberen die beschikbaar zijn gesteld door AIMET.
Een gebruiker kan een model comprimeren met AIMET zoals beschreven in het onderwerp AIMET Modelcompressie in de AIMET-gebruikershandleiding. De technieken Spatial Singular Value Decomposition (SVD) en Channel Pruning (CP) van AIMET kunnen een model comprimeren op basis van een door de gebruiker geconfigureerde compressieverhouding.
Kwantiseringsworkflow
Voordat een model naar de Snapdragon-doelhardware wordt geëxporteerd, kan AIMET worden gebruikt om het model te optimaliseren voor gekwantiseerde nauwkeurigheid, zoals weergegeven in Afbeelding 2:
Figuur 2 – AIMET-kwantiseringsworkflow
Dit zijn de belangrijkste stappen van deze workflow:
- Het model is getraind met behulp van PyTorch of TensorFlow met standaard 32-bits floating-point (FP32) gewichten.
- De gebruiker optimaliseert het model voor kwantisering met behulp van AIMET's ingebouwde kwantiseringstechnieken na de training. Post-trainingstechnieken zoals Cross-Layer Equalization (CLE) en AdaRound kunnen worden gebruikt zonder gelabelde gegevens en kunnen goede prestaties leveren voor verschillende modellen zonder dat het model verfijnd hoeft te worden, waardoor de tijd en moeite voor hyperparameterafstemming en training wordt vermeden. Met behulp van kwantisatiesimulatie evalueert AIMET de nauwkeurigheid van het model, wat een schatting geeft van de verwachte prestaties bij het uitvoeren van gekwantiseerde inferentie op het doel.
- De gebruiker (optioneel) verfijnt het model met behulp van AIMET's functie Quantization-Aware Training om verder te verbeteren kwantisatieprestaties door kwantisatieruis te simuleren en modelparameters aan te passen om deze ruis te bestrijden.
- Het geoptimaliseerde model wordt geëxporteerd als een typisch FP32 TensorFlow- of PyTorch/ONNX-model, samen met een JSON-bestand met aanbevolen kwantiseringscoderingen.
- De uitvoer van stap 4 wordt ingevoerd in de modelconversietool in de Qualcomm Neural Processing SDK. Dit converteert het model naar het DLC-formaat van Qualcomm Technologies, met behulp van de kwantiseringscoderingen gegenereerd door AIMET, voor optimale uitvoering op de Qualcomm AI Engine van de SoC.
- Het geconverteerde (DLC) model wordt geïmplementeerd op de doelhardware.< /li>
Conclusie
Met AIMET kunnen ontwikkelaars geavanceerde neurale netwerkoptimalisaties gebruiken om de runtime-prestaties van een model te verbeteren zonder veel nauwkeurigheid op te offeren. De rijke verzameling geavanceerde optimalisatie-algoritmen maakt het voor een ontwikkelaar niet meer nodig om handmatig te optimaliseren en zullen, dankzij de open source-algoritmen, zeker voortdurend worden verbeterd.
Bekijk de AIMET GitHub-pagina en ook de Model Zoo for AI Model Efficiency Toolkit om op snelheid te komen met kwantisering met AIMET. De AIMET Model Zoo bevat een verzameling populaire neurale netwerken en een reeks scripts om ontwikkelaars te helpen modellen met AIMET te kwantificeren en resultaten te vergelijken.
Voor meer informatie over AIMET, bekijk de volgende bronnen:
- QuIC AIMET overzichtspagina – bevat een overzicht, video's en links naar AIMET's gebruikershandleiding en API-documentatie
- Intelligentie op schaal door AI-modelefficiëntie – een presentatie met een overzicht van AIMET
- Wat is er nieuw met onze AI Open Source: AIMET-verbeteringen en code uit papers
- Open sourcing van de AI Model Efficiency Toolkit
- AIMET Model Zoo: er zijn nu zeer nauwkeurige gekwantiseerde AI-modellen beschikbaar
We hebben ook een aantal blogs die de Qualcomm Neural Processing bespreken SDK- en ML-modellering:
- AI op het apparaat met softwarestacks die klaar zijn voor ontwikkelaars
- Verkenning van verschillende soorten neurale netwerken
- Algoritmen voor machinaal leren van AI – Hoe een neuraal netwerk werkt
- Van training tot gevolgtrekking: TensorFlow nader bekeken
Verwante blogs:
- Belangrijke inzichten van Microsoft Build 2022
- Overwegingen bij het plannen van cloudconnectiviteit voor IoT Edge-apparaten
- Smart Sensors II – hoe het toevoegen van AI de toekomst kan voorspellen voor IIoT
- Geïntegreerde IoT-apparaatbescherming: fysieke bescherming voor de echte wereld
- Innovatieve MedTech bouwen met het iMedVision (iDhi)-platform van Innominds
Felix Baum
Directeur Productbeheer, Qualcomm Technologies