mikrocontroller.net

Forum: FPGA, VHDL & Co. Neuronale Netze in FPGAs


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Vroni M. (vronilog)


Bewertung
0 lesenswert
nicht lesenswert
Hi,

zur Implementierung von (einfachen) NN in FPGAs... In meiner wenig 
fundierten Phantasien davon, wie sowas gemacht wird, sah das bisher so 
aus, dass Units als separate HDL-Module realisiert werden. Das NN wäre 
also tatsächlich in der Logik implementiert, eine neuronale Schaltung 
sozusagen in der stets alle Neuronen parallel vor sich hinfeuern und 
trainiert werden könne.n

Meine Frage an euch ist, macht das überhaupt Sinn damit anzufangen? Auf 
diese Weise gehen einem sehr schnell die Kapazitäten aus, schätze ich 
nun nach etwas Recherche. Oder gehen meine bisherigen Vorstellungen doch 
nicht ganz 100%ig an der Realität vorbei. Das würde mich freuen, weil 
mir diese Vorstellung, eines "tatsächlichen" Hardware-NNs eigentlich 
sehr sympathisch ist.

Ist der richtigere Ansatz, flax formuliert, Units und Netz im DRam 
unterzubringen und zu versuchen, die PL so parallel wie möglich 
drüberzuschicken?

Wie würdet ihr sagen, sieht eine Anfängerlösung aus?

Ein Zybo Z7-20 verwende ich.

Danke!




PS

(Offtopic)

Habe heute sehr interessante Beiträge zum Thema NN gelesen...

Lesenswert wirds aber erst nach den geschätzt ersten 20 Posts:

Beitrag "Re: Coole FPGA Projekte"

von Olf O. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
An der FH Friedberg hatten wir dazu im letzten Semester eine Vorlesung. 
Angerissen wurden aber nur die Implementierung von Strukturen in C++ 
Klassen und die halbautomatische Übersetzung in Verilog.

Ich bin kein Neuro-Experte, denke aber, dass die Flexibilität, die man 
in echten Anwendungen braucht, um Lernen und Erlernbarkeit von 
Funktionen zu trainieren, es erfordern, dass Algorithmen schnell 
geändert werden können.

Die Richtung geht eher so in Richtung NVIDIA und Konsorten.

von Stefan (Gast)


Bewertung
0 lesenswert
nicht lesenswert
>Das NN wäre
>also tatsächlich in der Logik implementiert, eine neuronale Schaltung
>sozusagen in der stets alle Neuronen parallel vor sich hinfeuern und
>trainiert werden könne.

Willst Du tatsächlich Pulsneuronen implementieren oder klassische KNN?

Fall es dir wirklich um "spiking neurons" geht, empfehle ich dieses 
Buch:
https://www.epubli.de/preview/92362
Dort wird auch anhand eines Beispiels auf die Implementierung im FPGA 
eingegangen, was man auch auf dem heimischen Basteltisch ausprobieren 
kann.

von Markus K. (markus-)


Bewertung
0 lesenswert
nicht lesenswert
Vroni M. schrieb:
> zur Implementierung von (einfachen) NN in FPGAs...

Wie einfach ist "einfach"?
Die meisten Netze für reale Anwendungen sind viel zu groß um als Ganzes 
in einen FPGA zu passen. Andererseits gibts wohl auch wenig Anwendungen, 
bei denen man 100 Mio Bilder/s verarbeiten will.

> Ist der richtigere Ansatz, flax formuliert, Units und Netz im DRam
> unterzubringen und zu versuchen, die PL so parallel wie möglich
> drüberzuschicken?

Ja, so wird das wohl typischerweise gemacht. Es gibt auch von Xilinx da 
fertige Sachen. Das könnte auch eine Lösung für Dich sein.

von Jürgen S. (engineer) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
FPGAs machen nur Sinn, um eben die Netzstruktur selbst optimiert 
abzubilden und in einem begrenzten System die Zustände in BRAMs laufen 
zu lassen. Ansonsten ist das nicht effektiv. Sobald man raus muss, ins 
DDRRAM hat man ein Bandbreitenproblem.

von Markus K. (markus-)


Bewertung
0 lesenswert
nicht lesenswert
Jürgen S. schrieb:
> FPGAs machen nur Sinn, um eben die Netzstruktur selbst optimiert
> abzubilden und in einem begrenzten System die Zustände in BRAMs laufen
> zu lassen.

FPGAs gibts auch in einem Outdoor-Temperaturbereich (-40..+105°C) und 
man bekommt sie in kleinen Stückzahlen (<50.000 Stück/Jahr), was bei den 
Alternativen (z.B. GPUs) oftmals nicht gegeben ist.

> Ansonsten ist das nicht effektiv. Sobald man raus muss, ins
> DDRRAM hat man ein Bandbreitenproblem.

Das sieht Xilinx wohl nicht so extrem. Sie haben zwar wohl aus dem Grund 
ein Pruning-Tool, um die Netze kleiner zu machen, aber es gibt genügend 
Netze, die nur ein paar GB/s brauchen.

Details finden sich hier:
https://www.xilinx.com/support/documentation/ip_documentation/dpu/v3_1/pg338-dpu.pdf
Auf den Seiten 30+31 sind Benchmarkergebnisse und Bandbreiten 
aufgelistet.

von Jürgen S. (engineer) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Markus K. schrieb:
> FPGAs gibts auch in einem Outdoor-Temperaturbereich (-40..+105°C)

Ja, aber FPGAs schlucken oft bei gleicher Leistung den 3-5fachen Strom, 
was in mehreren meiner Anwendungen meiner Kunden schon dazu geführt hat, 
daß Rechenleistung, die man im FPGA technisch sehr leicht und gut hätte 
umsetzen können, auf andere Komponenten verschoben wurde unter anderem 
auch wegen des z.T. engen Temperaturfensters nach oben. Die 105 Grad 
sind z.B. in einem 80 Grad Gehäuse (MIL SPEC) rasch erreicht. Da darf 
dann der FPGA nur mit wenig Taktfrequenz gefahren werden.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.