"New Neural" ist ein Open-Source-Projekt für neuronale Netzwerke für die MetaTrader 5-Plattform. - Seite 71

 
joo:

Wenn wir das Neuronentraining als Mikroebene (unabhängige Array-Verarbeitungszyklen in GA, Berechnung einzelner Neuronen eines Netzes usw.) und Makroebene (die gesamte PF) betrachten, dann haben wir keine Fragen und Probleme mit der ersten Ebene - alles läuft parallel und wird auf der GPU gut funktionieren.

Aber es gibt ein Problem auf der Makroebene. Zunächst einmal vermute ich, dass dies aufgrund der begrenzten Informationsmenge, die von der GPU verarbeitet wird, nicht möglich ist. Wir könnten das umgehen, indem wir reguläre Tester und die Cloud verwenden (jede Makroebene wird an separate Agenten übertragen, und dort wird sie auf Mikroebene verarbeitet - natürlich nur, wenn der Host dies zulässt). Aber wir haben nicht die Möglichkeit, den Tester extern zu steuern, um externe GA zu verwenden.

Wir werden uns also auf die Beschleunigung auf der Mikroebene beschränken müssen. Die Beschleunigung wird ebenfalls sehr gut sein, da Maschen und GAs selbst eine Fülle von Berechnungen enthalten, die voneinander unabhängig sind.

Was UGA selbst anbelangt, so gibt es abgesehen von der Verbesserung für OpenCL praktisch nichts zu verbessern (vielleicht nur einige Codefragmente, die aber dank der Teilnehmer am Algorithmus-Diskussionsthread in diesem Artikel nichts nützen werden). Sie können nur versuchen, die Einstellungen von UGA speziell für Trainingsnetze zu wählen.


Moderne GPUs haben 1 GB RAM oder mehr.

Ich kann mir kaum vorstellen, dass es eine größere Ausbildungsstichprobe gibt.

Ich bin mit der Makroebene zufrieden - getestet )

Es wäre sinnvoll, folgende Architektur für GA zu verwenden: GA selbst auf der CPU, während schwere FF-Berechnungen auf der GPU durchgeführt werden

 
her.human:

Kann ich ein kleines Beispiel für den MT5 verwenden?


Ein Beispiel für was? Ein neuronaler Netzindikator, eine neuronale Netzstrategie, ...? ?
 
yu-sha:

Moderne GPUs haben 1 GB RAM oder mehr

Ich kann mir kaum eine größere Ausbildungsstichprobe vorstellen

Wenn ich mich nicht irre, verfügen moderne Grafikkarten über zwei Arten von Arbeitsspeicher - den gemeinsamen Arbeitsspeicher, der mehrere GByte groß und recht langsam sein kann, und den Arbeitsspeicher jedes einzelnen Grafikprozessors, der zwar schnell ist, aber nur ein paar hundert KB umfasst. Meine Überlegung war, dass genau hier das Problem entstehen könnte.

yu-sha:

An der Makroebene gibt es nichts auszusetzen - getestet )

Aber wenn Sie das sagen, dann nehme ich Sie beim Wort und bin jetzt beruhigt. :)

yu-sha:

Für GA bietet sich folgende Architektur an: GA selbst auf der CPU und schwere FF-Berechnungen auf der GPU

Nun, es ist eine Frage der Technik, wie man sagt. So könnte man es machen. Soweit ich weiß, können Sie bei OpenCL im Code auswählen, welche Kerne für die Durchführung von Berechnungen verwendet werden sollen - auf der CPU oder der GPU.

 
yu-sha:
Ein Beispiel für was? Ein neuronaler Netzindikator, eine neuronale Netzstrategie, ...? ?
Wie baut man eine lose (nicht vollständig verbundene) Netzarchitektur auf, wo wird eingespeist, wo wird entnommen, wo sind die Gewichte?
 
joo:

Wenn ich mich nicht irre, haben moderne Grafikkarten zwei Arten von Arbeitsspeicher - den gemeinsamen Speicher, der mehrere GByte groß sein kann und recht langsam ist, und den Speicher, den jeder einzelne Grafikprozessor hat - schnell, aber nur wenige hundert KB groß. Ich kam zu dem Schluss, dass genau hier das Problem liegen könnte.

Üblich "langsam" ist das volle Analogon von DDR für CPU (~0,75 - 1,00GHz - nicht sehr langsam)

Fast ist das Cache-Pendant der CPU.

GPUs können diesen Speicher im Gegensatz zu CPUs direkt auf dem Chip (Cache) verwalten (ich könnte mich irren, aber irgendwie bin ich noch nicht auf eine solche Frage gestoßen).

Aber all dies sind zusätzliche Optimierungsaspekte, auf die Sie verzichten können.

 

her.human:

yu-sha:
Ein Beispiel für was? Indikator für neuronale Netze, Strategie für neuronale Netze, ... ?
Wie baut man eine lockere (nicht vollständig verbundene) Netzarchitektur auf, wo wird eingespeist, wo wird entnommen, wo sind die Gewichte?

Ja, ja, wir brauchen ein Beispiel und dann werden wir es herausfinden.

Ein Standard-GA und eine Wolke würden helfen, die FF-Berechnung zu parallelisieren. Vor allem, weil Renat es versprochen hat:

Auf keinen Fall, Tester GA ist auf 64 Bits der Suche begrenzt, und für die Ausbildung Gewichte benötigen Sie 16-64 Bits für jedes Gewicht (hängt von der Suchgenauigkeit), und Gewichte können bis zu sein..... einige Tausende, und kann Zehn-und Hunderttausende sein. UGA kann dies recht gut bewältigen, der Tester hingegen nicht.

Also sollte entweder MQ gebeten werden, GA zu aktualisieren (was ich seit zwei Jahren erfolglos tue), oder UGA wird viel langsamer sein als im Cluster.

 
yu-sha:

Allgemein "langsam" - dies ist die volle CPU-Analogie von DDR (~0,75 - 1,00 GHz - nicht sehr langsam)

Schnell - dies ist das Gegenstück zum Cache-Speicher der CPU.

GPUs können diesen Speicher im Gegensatz zu CPUs direkt auf dem Chip (Cache) verwalten (ich könnte mich irren, aber irgendwie bin ich noch nicht auf eine solche Frage gestoßen).

Aber all dies sind zusätzliche Optimierungsprobleme, auf die wir verzichten können.

Nicht der Punkt, Speicher, und auf der GPU wird schwierig sein, die Wendungen der Objektlogik zu implementieren, habe ich eine ziemlich gute Idee, wie die NS als eine komplexe Interaktion von Objekten, innerhalb derer es GPU Berechnungen Funktionen (dies ist über die Mikro-Ebene) zu implementieren, aber ich kann mir nicht vorstellen, wie diese komplexen Objekt-Code die ganze NS, um die GPU als mehrere FF mit verschiedenen Sätzen von Gewichten (Makro-Ebene) schlüpfen ???

Die Frage ist rhetorisch, aber wenn sich jemand etwas vorstellen kann, würde ich es gerne hören.

 

Ich habe eine lustige Idee:

Vielleicht sollte man die MQ APIbitten , Tasks für den Cluster zu setzen?

die Aufgabe direkt von MQL5 aus unter Umgehung des Prüfers zu verteilen. Natürlich ist es eine komplizierte Aufgabe, es müssen viele Kontrollen durchgeführt werden, aber es ist machbar.

Ich habe es bereits gemeistert, aber ich muss noch etwas daran arbeiten.

 
Urain:

Ja, ja, wir brauchen ein Beispiel und dann werden wir es herausfinden.

Beispiel 1:

Aufgabenstellung:

- wir müssen den Algorithmus des Indikators wiederherstellen, dessen Quellen nicht zur Verfügung stehen (oder es handelt sich um einen "Re-Drawing"-Indikator - übrigens kein schlechter Lehrer für NS), aber wir kennen die Werte auf jedem Balken

- die Indikatorwerte liegen im Bereich (-1;+1)

Eingänge:

- wir wissen (vermuten?), dass dieser Indikator die letzten 10 Schlusskurse verwendet


Beispiel #2:

Problemstellung:

- Wir müssen die Handelsstrategie des neuronalen Netzes finden, die am besten handelt (Gewinn/MaxDD maximieren), und zwar über eine bestimmte Zeitspanne hinweg

Eingangsdaten:

- Normalisierter MACD (13,35), MACD (50,100), RSI(8), RSI(13)

Beispiel #3:

Aufgabenstellung:

- Einem neuronalen Netz eine Multiplikationstabelle beibringen

Eingangsdaten:

- x,y-Multiplikatoren im Bereich (-1;+1)

Sie können Ihr eigenes Beispiel vorschlagen, und wenn es möglich ist, werde ich Ihnen die Netzarchitektur in XML zeigen.

 
yu-sha:

Sie können Ihr eigenes Beispiel vorschlagen, und wenn möglich, kann ich Ihnen die Netzwerkarchitektur in XML zeigen

und vor allem den Quellcode für die Erstellung dieser Architektur, d.h. wie die XML-Datei erzeugt wird.