Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial Internet of Things >> Ingebed

AI optimaliseren voor embedded applicaties

In mijn vorige blog heb ik het gehad over hoe de vraag naar op AI gebaseerde interfaces bijna onvermijdelijk is geworden - en dat het toevoegen van een op AI gebaseerde interface zoals face-id om toegang tot een machine te autoriseren op het eerste gezicht een enorme sprong lijkt, maar dat is het niet. zijn zo moeilijk als je zou denken. Er is een schat aan beschikbare AI-platforms, veel trainingsmogelijkheden en zelfs open-source applicaties, zoals dat face-id-voorbeeld. U kunt vrij snel aan de slag met een prototype dat u op uw pc kunt uitvoeren.


(Bron:CEVA)

Beperkingen

Het verplaatsen van een getraind netwerk naar uw ingesloten app lijkt misschien een andere enorme hindernis. Pc- of cloud-getrainde netwerken optimaliseren niet veel voor geheugengebruik of stroom. Ze kunnen drijvende-komma of dubbele woorden gebruiken voor netwerkberekeningen, en ze zullen zwaar leunen op off-chip geheugentoegangen als ze schuifvensters over een afbeelding verwerken. Dat is geen probleem voor een prototype dat draait op een krachtige pc die is aangesloten op een stopcontact, maar u moet een stuk zuiniger zijn in uw eindtoepassing, zonder concessies te doen aan de prestaties.

De essentie van optimaliseren

Een belangrijke stap bij het optimaliseren wordt kwantisering genoemd. Het omschakelen van gewichten van drijvende komma naar vaste komma en het verkleinen van de vaste-kommagrootte, bijvoorbeeld van 32-bits drijvende-komma naar 8-bits gehele getallen, heeft niet alleen invloed op de grootte van de gewichten, maar ook op tussenliggende rekenwaarden. Dit alleen al kan de geheugenvoetafdruk aanzienlijk verkleinen, met in de meeste gevallen weinig merkbare invloed op de herkenningskwaliteit.

Een tweede manipulatie is om de schaarste in de gewichten te benutten met een minimale impact op de nauwkeurigheid. Deze oefening maakt gebruik van de gewichten die bijna nul zijn en rondt ze af naar nul, terwijl de nauwkeurigheidsimpact nauwlettend wordt gevolgd. Gewichten worden gebruikt bij het vermenigvuldigen van deelsommen, een zinloze oefening wanneer een van de factoren nul is, dus het is niet nodig om de bewerking uit te voeren.

In praktische implementaties worden afbeeldingen incrementeel verwerkt, dus gewichten moeten worden bijgewerkt terwijl het berekeningsvenster over de afbeelding beweegt. Dat kan voor veel updates en veel verkeer zorgen. Door een groot percentage van de gewichten nul te laten zijn, kan de gewichtenarray worden gecomprimeerd, waardoor het mogelijk wordt om alle of een groot deel van de array op te slaan in on-chip SRAM, om op aanvraag te decomprimeren. Dat minimaliseert op zijn beurt de noodzaak om naar het hoofdgeheugen te gaan en verhoogt daarom de prestaties en vermindert het stroomverbruik. Het vermindert ook incidenteel het verkeer op de chip bij het laden van gewichten. Minder verkeersconflicten betekent een hogere doorvoer.

Er moet nog een factor worden overwogen. Net als de meeste complexe toepassingen zijn neurale netwerken afhankelijk van geavanceerde bibliotheken. U moet een bibliotheek gebruiken die is ontworpen voor gebruik in microcontroller-omgevingen en een compiler voor uw platform naar keuze. Een goed startpunt kan een open-sourcebibliotheek zijn, zoals TensorFlow Lite, maar voor volledig gebruik van de microcontroller is een speciale oplossing op maat vereist.

Natuurlijk is het niet gemakkelijk om te weten wat je moet doen. U moet nu een platform vinden dat deze bewerkingen stroomlijnt en voor hardware geoptimaliseerde bibliotheken biedt.

Hoe maak ik hier een gebruiksvriendelijke stroom van?

Wat u wilt, is een stroom waarin u het netwerk dat u hebt getraind via uw specifieke platform, bijvoorbeeld TensorFlow, kunt gebruiken en dit rechtstreeks kunt compileren naar uw embedded oplossing, zonder andere tussenkomst dan het invoeren van een paar basisvereisten. Natuurlijk wil je ook de optie om met de hand verder te optimaliseren, misschien door verschillende kwantisatieniveaus in verschillende vlakken in te stellen. Misschien experimenteren met gewichtsdrempels versus on-chip geheugengroottes. En u wilt dat bibliotheken zijn geoptimaliseerd voor de hardware en hardware die is geoptimaliseerd voor de bibliotheken.

Bewezen AI-platforms zoals CEVA's CDNN zijn ontworpen om dit type stroom te bieden. CDNN biedt een offline processortoolset voor kwantisering en het genereren van runtime-taken, evenals op maat gemaakte runtime-bibliotheken voor hardwareversnellers van CEVA DSP en klantgebruikers. De oplossing van CEVA ondersteunt alle populaire AI-modelformaten, waaronder TensorFlow Lite, ONNX, Caffe en andere.


Verwante inhoud:

  • Ingebouwde AI beheersen
  • AI-modellen in microcontrollers persen
  • Machine learning toepassen in embedded systemen
  • Microcontroller-architecturen evolueren voor AI
  • AI-modellen trainen op het randje
  • Microcontroller-architecturen evolueren voor AI
  • Big data omzetten in slimme data met ingebouwde AI

Abonneer u voor meer Embedded op de wekelijkse e-mailnieuwsbrief van Embedded.


Ingebed

  1. VersaLogic brengt serverklasse computers uit voor ingesloten applicaties
  2. Infineon lanceert TLE985x embedded power-serie voor automobieltoepassingen
  3. Sundance:VCS-1 embedded processormodule voor precisierobotica-toepassingen
  4. PPA voor e-mobiliteitstoepassingen
  5. 4 tips voor het optimaliseren van uw waterstraal
  6. Ideale toepassingen voor pneumatische aandrijvingen
  7. 4 soorten gereedschappen voor mijnbouwtoepassingen
  8. Typische toepassingen voor remklauwen
  9. Militaire toepassingen voor bronslegeringen
  10. Toepassingen voor aluminiumbrons C63200
  11. Waar wordt Monel voor gebruikt?