Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial Internet of Things >> Eingebettet

Optimierung der KI für eingebettete Anwendungen

In meinem vorherigen Blog habe ich darüber gesprochen, dass die Nachfrage nach KI-basierten Schnittstellen fast unvermeidlich geworden ist – und dass das Hinzufügen einer KI-basierten Schnittstelle wie Face-ID zur Autorisierung des Zugriffs auf eine Maschine zunächst wie ein großer Sprung erscheinen mag, ist es nicht war so schwierig, wie Sie vielleicht denken. Es gibt eine Fülle verfügbarer KI-Plattformen, viele Schulungsoptionen und sogar Open-Source-Anwendungen, wie das Face-ID-Beispiel. Mit einem Prototyp, den Sie auf Ihrem PC ausführen können, können Sie ziemlich schnell einsatzbereit sein und testen.


(Quelle:CEVA)

Einschränkungen

Das Verschieben eines trainierten Netzwerks in Ihre eingebettete App kann wie eine weitere große Hürde erscheinen. PC- oder Cloud-trainierte Netzwerke optimieren nicht viel für die Speichernutzung oder den Stromverbrauch. Sie können Gleitkomma- oder Doppelwörter für Netzwerkberechnungen verwenden und sich stark auf Speicherzugriffe außerhalb des Chips verlassen, wenn sie Schiebefenster über ein Bild verarbeiten. Das ist kein Problem für einen Prototyp, der auf einem Hochleistungs-PC läuft, der an eine Steckdose angeschlossen ist, aber Sie müssen bei Ihrer Endanwendung viel sparsamer sein, ohne Kompromisse bei der Leistung einzugehen.

Die Grundlagen der Optimierung

Ein wichtiger Schritt bei der Optimierung wird als Quantisierung bezeichnet. Das Umschalten von Gewichten von Gleitkomma auf Festkomma und Verringern der Festkommagröße, beispielsweise von 32-Bit-Gleitkomma auf 8-Bit-Ganzzahlen, wirkt sich nicht nur auf die Größe der Gewichte, sondern auch auf dazwischenliegende Rechenwerte aus. Dies allein kann den Speicherbedarf erheblich reduzieren, wobei sich die Erkennungsqualität in den meisten Fällen kaum bemerkbar macht.

Eine zweite Manipulation besteht darin, die geringe Gewichtung mit minimaler Auswirkung auf die Genauigkeit auszunutzen. Diese Vorgehensweise nutzt die Gewichte, die nahe bei Null liegen, und rundet sie auf Null, während die Auswirkungen auf die Genauigkeit genau verfolgt werden. Gewichte werden beim Multiplizieren von Teilsummen verwendet, eine sinnlose Übung, wenn einer der Faktoren null ist, sodass die Operation nicht ausgeführt werden muss.

Bei praktischen Implementierungen werden Bilder inkrementell verarbeitet, so dass Gewichtungen aktualisiert werden müssen, wenn sich das Berechnungsfenster über das Bild bewegt. Das kann für viele Updates und viel Verkehr sorgen. Indem ein großer Prozentsatz der Gewichtungen gezwungen wird, Null zu sein, kann das Gewichtungsarray komprimiert werden, wodurch es möglich wird, das gesamte oder einen Großteil des Arrays in einem SRAM auf dem Chip zu speichern, um es bei Bedarf zu dekomprimieren. Das wiederum minimiert den Bedarf an Hauptspeicher und erhöht somit die Leistung und reduziert den Stromverbrauch. Es reduziert auch den Verkehr auf dem Chip beim Laden von Gewichten. Weniger Verkehrskonflikte bedeuten einen höheren Durchsatz.

Ein weiterer Faktor sollte berücksichtigt werden. Wie die meisten komplexen Anwendungen hängen auch neuronale Netze von ausgeklügelten Bibliotheken ab. Sie müssen eine Bibliothek verwenden, die für die Verwendung in Mikrocontrollerumgebungen und einen Compiler für die Plattform Ihrer Wahl entwickelt wurde. Ein guter Ausgangspunkt könnte eine Open-Source-Bibliothek wie TensorFlow Lite sein, aber für die vollständige Nutzung des Mikrocontrollers ist eine dedizierte, maßgeschneiderte Lösung erforderlich.

Zu wissen, was zu tun ist, macht es natürlich nicht leicht. Sie müssen nun eine Plattform finden, die diese Vorgänge rationalisiert und hardwareoptimierte Bibliotheken bereitstellt.

Wie erstelle ich einen benutzerfreundlichen Ablauf?

Was Sie wollen, ist ein Flow, bei dem Sie das Netzwerk, das Sie über Ihre spezifische Plattform, beispielsweise TensorFlow, trainiert haben, direkt in Ihre eingebettete Lösung kompilieren können – ohne andere Eingriffe als die Eingabe einiger grundlegender Anforderungen. Natürlich möchten Sie auch die Möglichkeit haben, die Hand weiter zu optimieren, indem Sie möglicherweise unterschiedliche Quantisierungsstufen in verschiedenen Ebenen einstellen. Vielleicht experimentieren Sie mit Gewichtsschwellen im Vergleich zu On-Chip-Speichergrößen. Und Sie möchten Bibliotheken, die auf die Hardware und die Hardware auf die Bibliotheken optimiert sind.

Bewährte KI-Plattformen wie das CDNN von CEVA wurden entwickelt, um diese Art von Fluss bereitzustellen. CDNN bietet ein Offline-Prozessor-Toolset für die Quantisierung und Generierung von Laufzeitaufgaben sowie maßgeschneiderte Laufzeitbibliotheken für die Hardwarebeschleuniger von CEVA DSPs und Kundenbenutzern. Die Lösung von CEVA unterstützt alle gängigen KI-Modellformate, einschließlich TensorFlow Lite, ONNX, Caffe und andere.


Verwandte Inhalte:

Für mehr Embedded, abonnieren Sie den wöchentlichen E-Mail-Newsletter von Embedded.


Eingebettet

  1. VersaLogic veröffentlicht Computer der Serverklasse für eingebettete Anwendungen
  2. Infineon bringt eingebettete TLE985x-Leistungsserie für Automobilanwendungen auf den Markt
  3. Sundance:Eingebettetes VCS-1-Prozessormodul für Präzisionsroboteranwendungen
  4. PPA für E-Mobilitätsanwendungen
  5. 4 Tipps zur Optimierung Ihres Wasserstrahls
  6. Ideale Anwendungen für pneumatische Aktuatoren
  7. 4 Arten von Werkzeugen für Bergbauanwendungen
  8. Typische Anwendungen für Felgenbremsen
  9. Militäranwendungen für Bronzelegierungen
  10. Anwendungen für Aluminiumbronze C63200