Diskussion zum Artikel "Schnellere Berechnungen mit dem MQL5 Cloud Network" - Seite 2

 

Meine Ergebnisse mit der folgenden Konfiguration:

  • Gleitender Durchschnitt
  • EURUSD, H1, alle Ticks von 2010.01.01 bis 2011.01.01 auf MetaQuotes-Demo
  • Saldo: 100 000 USD
  • Einstellungen


Genetik-Modus in MQL5 Cloud Network: 2.624 Durchläufe von 8.704 erwarteten Durchläufen wurden tatsächlich in 15 Minuten und 52 Sekunden berechnet. Genetics brach die Berechnung früher ab, da es aufgrund eines sehr spärlichen Suchfeldes an die Obergrenze der Ergebnisse stieß.

2012.02.05 00:52:50     Statistics      locals 0 tasks (0%), remote 0 tasks (0%), cloud 2624 tasks (100%)
2012.02.05 00:52:50     Statistics      optimization passed in 15 minutes 52 seconds
2012.02.05 00:52:50     Tester  genetic optimization finished on pass 8704 (of 1276290)
2012.02.05 00:52:50     Tester  result cache was used 6082 times
2012.02.05 00:52:50     Tester  genetics is over

Nachdem ich alle Caches auf der Festplatte geleert und das Terminal neu gestartet hatte, ließ ich Genetics auf lokalen Kernen i7-2600, 3,4 GHz, Windows 7 x64, RAM 16 GB, 8 Kerne laufen:

Durchschnittliche lokale Durchlaufzeit von 19 bis 25 Sekunden (Computer nicht mit irgendetwas belastet):

2012.02.05 01:06:34    Core 2    genetic pass (184, 344771) returned result 97426.26 in 20 sec
2012.02.05 01:06:31    Core 7    genetic pass (191, 419403, 1) started
2012.02.05 01:06:31    Core 7    genetic pass (181, 347989) returned result 94247.90 in 25 sec
2012.02.05 01:06:31    Core 3    genetic pass (190, 1048934, 1) started
2012.02.05 01:06:31    Core 3    genetic pass (183, 255717) returned result 92939.02 in 20 sec
2012.02.05 01:06:28    Core 4    genetic pass (189, 535782, 1) started
2012.02.05 01:06:28    Core 4    genetic pass (182, 131277) returned result 98194.52 in 21 sec


Da mir klar war, dass ich bei diesem Tempo sehr lange warten würde, habe ich die Berechnung bei 211 Durchläufen gestoppt:

2012.02.05 01:07:59    Statistics    locals 211 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
2012.02.05 01:07:59    Statistics    optimization passed in 11 minutes 16 seconds
2012.02.05 01:07:59    Tester    genetic optimization finished on pass 211 (of 1276290)
2012.02.05 01:07:59    Tester    result cache was used 0 times


Sie sehen, dass es sich hier um reine 211 Durchläufe mit null Treffern im alten Cache handelt.

Da die Anzahl der Durchläufe bei verschiedenen Genetikläufen selten übereinstimmt und ich die Tests ziemlich sauber durchgeführt habe, kann man die Zeitberechnung mathematisch durchführen:

  • Wir gehen davon aus, dass die lokalen Agenten 2.624 Durchläufe benötigen, ebenso wie die Genetik im Cloude
  • 2.624 Durchläufe in der Cloude dauerten 15 Minuten und 52 Sekunden (952 Sekunden).
  • 211 lokale Durchläufe dauerten 11 Minuten und 16 Sekunden (676 Sekunden).
  • Das bedeutet, dass 2.624 Durchläufe = (2.624 / 211) * 676 = 8.406 Sekunden (140 Minuten und 6 Sekunden) dauern würden.

Insgesamt ist die Genetik in der Cloud also 8.406 / 952 = 8,8 Mal schneller. Dies entspricht der Leistung von 64 lokalen Kernen.


Was ist die Erklärung dafür?

  • In der Genetik variiert der maximale Skalierungsfaktor zwischen 64 und 256 Kernen.

    Dies hängt direkt von der Idee der Kreuzung verschiedener Generationen und der adaptiven Größe der Population ab. Das heißt, dass in der Genetik nicht das gesamte Claude-Netzwerk genutzt werden soll.

  • In der Genetik müssen die Agenten in der Wolke darauf warten, dass die Berechnungen jeder Generation abgeschlossen werden.

    Daher verbringen viele der 64-256 Agenten ihre Zeit damit, auf einen neuen Chunk zu warten, anstatt kontinuierlich zu arbeiten. Oft hat jeder Agent nur Zeit, eine Aufgabe aus einer Population von 64-256 Aufgaben zu erledigen. Und die lokalen Kerne sind aufgrund ihrer geringeren Anzahl und gleichen Leistung fast nie untätig - jeder von ihnen führt einen proportionalen Teil des Aufgabenstapels aus.

  • Bei Vergleichen mit claud wird das Bild durch das Vorhandensein eines lokalen Multicore-Testers getrübt.

    Zum einen muss jedes Ergebnis von claud praktisch durch 4-8 geteilt werden, und zum anderen nutzen wir die Fähigkeiten der lokalen Kerne so effizient wie möglich.

  • Wir haben die Netzwerklatenz besiegt - die Ergebnisse von 20-Sekunden- und Halb-Sekunden-Durchläufen liegen sehr nahe beieinander.

    Paketierung und effiziente Netzwerkprotokollmechanismen sind entscheidend.

Natürlich gibt es bei den Ergebnissen der vollständigen Aufzählung keine Probleme mit der Latenz aufgrund kleiner Paketpopulationen, und die Geschwindigkeit kann linear um das Hundert- und Tausendfache skaliert werden.

 

Ich habe einen Fehler gefunden - ich testete auf dem RoboForex-Server eines anderen und verbrachte genug Zeit mit dem anfänglichen Pumpen des Chartverlaufs.

Auf der neuen Geschichte, die claud nur wärmt sich für ein paar Minuten, die Synchronisierung der Geschichte von Agenten. Ich werde die Tests jetzt wiederholen.

 

Ich habe Tests auf MetaQuotes-Demo durchgeführt: Es gibt mehr M1-Historie auf unserem Server, fast alle Claudes haben sie bereits und die Aufwärmzeit des Netzwerks ist kürzer.

Die Zunahme des Volumens der M1-Balken hat zu einem Anstieg der Zeit für einen Durchlauf auf 30 Sekunden geführt.

Hier sind die Ergebnisse auf dem MQL5 Cloud Network: 3.704 saubere Aufgaben in 25 Minuten und 8 Sekunden (1.508 Sekunden).

2012.02.05 02:44:37     Statistics      locals 0 tasks (0%), remote 0 tasks (0%), cloud 3704 tasks (100%)
2012.02.05 02:44:37     Statistics      optimization passed in 25 minutes 08 seconds
2012.02.05 02:44:37     Tester  genetic optimization finished on pass 8960 (of 1276290)
2012.02.05 02:44:37     Tester  result cache was used 5256 times
2012.02.05 02:44:37     Tester  genetics is over

Hier sind die Ergebnisse der lokalen Durchläufe: 181 Aufgaben in 11 Minuten und 57 Sekunden (717 Sekunden) - ich habe aufgehört, um nicht 4 Stunden zu warten (die Gesamtzeit kann leicht berechnet werden).

2012.02.05 02:58:21     Statistics      locals 181 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
2012.02.05 02:58:21     Statistics      optimization passed in 11 minutes 57 seconds
2012.02.05 02:58:21     Tester  genetic optimization finished on pass 181 (of 1276290)
2012.02.05 02:58:21     Tester  result cache was used 0 times

Wenn wir berechnen, wie lange es auf lokalen Kernen dauert, 3.704 Aufgaben zu berechnen, erhalten wir: ( 3.704 / 181 ) * 717 = 14.672 Sekunden (244 Minuten und 32 Sekunden = 4 Stunden, 4 Minuten und 32 Sekunden).

Insgesamt stellt sich heraus, dass 14.672 / 1.508 = 9,7-mal Genetik in der Cloud schneller ist.

Obwohl das Ergebnis in der Nähe der vorherigen 8,8, aber immer noch erreicht 10 mal, die das Recht zu erklären, "eine Größenordnung schneller" gibt.

Die im Kommentar https://www.mql5.com/ru/forum/6071/page2#comment_148584 gegebenen Erklärungen gelten weiterhin.

Распределенные вычисления в сети MQL5 Cloud Network
Распределенные вычисления в сети MQL5 Cloud Network
  • cloud.mql5.com
Заработать деньги, продавая мощности своего компьютера для сети распределенных вычислений MQL5 Cloud Network
 
notused:

Während 3 min. 28 Sekunden Netznutzung wurden mir entweder 2 oder 3 Cent berechnet (3 Cent im Terminal, 2 Cent auf der Website und 3 Cent im Standby). Nehmen wir an, es sind 3, oder, der Einfachheit halber, die Nutzung des Netzes für Genetik kostet 1 Cent für eine Minute. Insgesamt kostet eine Stunde 60 Cent, 24 Stunden = 14,4 $. Das klingt für mich sehr teuer. Die Preise müssen mindestens dreimal gesenkt werden, um es für den Verbraucher attraktiv zu machen (viele Leute testen EAs, aber nicht jeder kann/will 15 Dollar pro Tag für Cloud ausgeben, und wenn es 5 Dollar oder weniger wären, wären mehr Leute bereit).

...

Ich denke, mein Gedankengang ist klar

@ Hey Nachbar, ich mag es nicht, wenn du zu meiner Frau gehst, während ich bei der Arbeit bin.

@Du verstehst nicht, ihr Johnsons, du magst es nicht, sie mag es @ :))

Die Käufer wollen immer billiger, die Verkäufer teurer, nur die Preisangabe wird den Streit schlichten.

Käufer sollten in der Lage sein, einen gewünschten Preis für eine Aufgabe zu nennen, Verkäufer einen gewünschten Preis für ihre Ressourcen, dann wird ein Markt organisiert werden.

Aber das liegt alles in der Zukunft, wenn der Dienst alltäglich wird und seine Zweckmäßigkeit nicht mehr in Frage steht. Jetzt muss MQ aktiv beweisen, dass Cloud cool ist.

 

Meine Erfahrung: Ich habe viele Tests in Claude durchgeführt und tue dies auch weiterhin, aber in der gesamten Zeit seit Beginn des Projekts habe ich nur 44 Dollar ausgegeben.

Das ist sehr wenig, wenn man bedenkt, dass zeitweise 2-3 Tausend Agenten verwendet wurden.

 
Renat:


Es stellt sich heraus, dass die 14.672 / 1.508 = 9,7-fache Genetik in der Cloud schneller ist.

Obwohl das Ergebnis nahe am vorherigen 8,8-fachen liegt, erreicht es immer noch das 10-fache, was uns das Recht gibt, zu erklären, dass es "eine Größenordnung schneller" ist.

Insgesamt wird die Genetik von 7 auf 10 Mal beschleunigt. Das heißt, um eine Größenordnung. Und da bei den lokalen Tests keine schwachen Kernel verwendet wurden, wird die Beschleunigung für einige Benutzer wahrscheinlich das 40-fache erreichen.

Ich habe für mich beschlossen, dass ich die Cloud nutzen werde, wenn die Optimierung aus eigener Kraft mehr als einen Tag dauert.

+ Bitte erweitern Sie die Mechanismen zur Identifizierung langsamer Agenten und zur Umverteilung von Aufgaben zwischen ihnen auf lokale und entfernte Agenten. Denn es stellt sich heraus, dass der gleiche Test mit den gleichen Kernen wie Remote + 10 schwächere + 2 schwache lokale Agenten zu dem Ergebnis führt:

Praktisch 2,5 Mal langsamer. Und nicht immer gibt es den Wunsch und die Möglichkeit zu messen, mit welchen Agenten man die maximale Leistung erhält.

 

Gibt es irgendeinen Hinweis darauf, dass Sie für diesen Dienst bezahlen müssen?

Die MQL-Cloud-Network-Webseite(https://cloud.mql5.com/) wirbt damit, dass Sie zusätzliche $$$ verdienen, wenn Sie anderen erlauben, Ihre CPU für Optimierungen zu nutzen. Warum wird nicht erwähnt, dass Sie bezahlen müssen, wenn Sie das Cloud Network für Optimierungen nutzen? Wenn Sie nicht bezahlen, wer bezahlt dann die Leute, die ihre CPUs in das Netzwerk stellen, aber keine Optimierungen durchführen?

Distributed Computing in the MQL5 Cloud Network
  • cloud.mql5.com
Connect to the MQL5 Cloud Network (Cloud Computing) and earn extra income around the clock — there is much work for you computer!
 

Ist die Cloud sicher? Oder wird mein EA gestohlen, wenn ich die Cloud verwende?

danke

 
MyDream:

Ist die Cloud sicher? Oder wird mein EA gestohlen, wenn ich die Cloud verwende?

Danke

Ich würde sagen, dass, wenn MQ wollen sie könnte bereits implameted, dass, wenn Ihr Experte Backtest Ergebnisse sind gut genug, erhalten sie Experten + Backtest Berichte sofort von Ihrem lokalen Computer. Aber ich glaube nicht, dass sie irgendetwas in dieser Richtung tun.

Wenn Sie wirklich glauben, dass Ihr Experte so gut sein könnte, dann machen Sie einfach Split-Engineering (ich erinnere mich nicht mehr genau): Im Grunde testet man die Dinge getrennt, und die wirklichen Ergebnisse sieht man erst, wenn man alle Ergebnisse kombiniert, die man vorher erhalten hat (Splits).

 
MyDream:

Ist die Cloud sicher? Oder wird mein EA gestohlen, wenn ich die Cloud verwende?

Danke

Sie sollten den Artikel Die Grundlagen des Testens in MetaTrader 5 lesen:

Der Datenaustausch zwischen dem Terminal und dem Agenten

...

Die Agenten zeichnen die vom Terminal erhaltenen EX5-Dateien (EA, Indikatoren, Bibliotheken, etc.) aus Sicherheitsgründen nie auf der Festplatte auf, so dass ein Computer mit einem laufenden Agenten die gesendeten Daten nicht nutzen kann. Alle anderen Dateien, einschließlich DLL, werden in der Sandbox gespeichert. In Remote-Agenten können Sie keine EAs mit DLL testen.

Die Testergebnisse werden vom Terminal in einem speziellen Ergebnis-Cache (Ergebnis-Cache) gespeichert, damit bei Bedarf schnell darauf zugegriffen werden kann. Für jeden Parametersatz durchsucht das Terminal den Ergebnis-Cache nach bereits verfügbaren Ergebnissen aus den vorherigen Läufen, um Wiederholungen zu vermeiden. Wird das Ergebnis mit einem solchen Parametersatz nicht gefunden, erhält der Agent die Aufgabe, den Test durchzuführen.

Der gesamte Datenverkehr zwischen dem Terminal und dem Agenten ist verschlüsselt.