Discussion de l'article "Accélération des calculs avec le réseau cloud MQL5" - page 2

 

Mes résultats sur la configuration suivante :

  • Moyenne mobile
  • EURUSD, H1, tous les ticks de 2010.01.01 à 2011.01.01 sur MetaQuotes-Demo
  • Solde : 100 000 USD
  • Paramètres


Mode génétique dans MQL5 Cloud Network : 2 624 passes sur les 8 704 attendues ont été calculées en 15 minutes et 52 secondes. Genetics a arrêté le calcul plus tôt, car il a atteint le plafond des résultats en raison d'un champ de recherche très clairsemé.

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

Après avoir vidé tous les caches sur le disque et redémarré le terminal, j'ai exécuté Genetics sur les cœurs locaux i7-2600, 3.4 Ghz, Windows 7 x64, RAM 16Gb, 8 cœurs :

Temps de passage local moyen de 19 à 25 secondes (ordinateur non chargé) :

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


Réalisant que j'allais attendre longtemps à ce rythme, j'ai arrêté le calcul à 211 passes :

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


Vous pouvez voir qu'il s'agit de 211 passes pures avec zéro accès à l'ancien cache.

Étant donné que les différentes exécutions de la génétique correspondent rarement au nombre de passes et que j'ai effectué les tests assez proprement, il est possible de calculer le temps mathématiquement :

  • nous considérons que les agents locaux prendront 2 624 passes ainsi que la génétique dans le cloude
  • 2 624 dans le claude ont pris 15 minutes et 52 secondes (952 secondes).
  • 211 passes locales ont pris 11 minutes et 16 secondes (676 secondes).
  • Cela signifie que 2 624 passes prendraient = (2624 / 211) * 676 = 8 406 secondes (140 minutes et 6 secondes).

Le total s'avère être 8 406 / 952 = 8,8 fois la génétique est plus rapide dans le nuage. Cela correspond à la puissance de 64 cœurs locaux.


Quelle est l'explication ?

  • En génétique, le facteur d'échelle maximal va de 64 à 256 cœurs.

    Cela dépend directement de l'idée même de croiser différentes générations et de la taille adaptative de la population. En d'autres termes, en génétique, l'ensemble du réseau claude ne doit pas être utilisé.

  • En génétique, les agents dans le nuage doivent attendre que le calcul de chaque génération soit terminé.

    Par conséquent, sur 64-256 agents, beaucoup passent du temps à attendre un nouveau morceau plutôt qu'à travailler en continu. Souvent, chaque agent n'a le temps de réaliser qu'une seule tâche sur une population de 64 à 256 tâches. Et les cœurs locaux, en raison de leur plus petit nombre et de leur puissance égale, ne sont presque jamais inactifs - chacun d'entre eux exécute une partie proportionnelle du lot de tâches.

  • Dans les comparaisons avec claud, le tableau est gâché par la présence d'un testeur local multicœur.

    D'une part, tout résultat de claud doit pratiquement être divisé par 4 à 8, et d'autre part, nous utilisons les capacités des cœurs locaux de la manière la plus efficace possible.

  • Nous avons vaincu la latence du réseau - les résultats des passes de 20 secondes et d'une demi-seconde sont très proches.

    La parcellisation et un mécanisme de protocole de réseau efficace règnent en maîtres.

Bien sûr, les résultats de l'énumération complète n'ont pas de problèmes de latence dus aux petites populations de paquets et la vitesse peut être linéarisée par centaines et milliers de fois.

 

J'ai trouvé une erreur - je testais sur le serveur RoboForex de quelqu'un d'autre et j'ai passé suffisamment de temps sur le pompage initial de l'historique des graphiques.

Sur le nouvel historique, le claud se réchauffe juste pendant quelques minutes, synchronisant l'historique par les agents. Je vais répéter les tests maintenant.

 

J'ai effectué des tests sur MetaQuotes-Demo : il y a plus d'historique M1 sur notre serveur, presque toutes les claudes l'ont déjà et le temps de chauffe du réseau est plus court.

L'augmentation du volume de barres M1 a conduit à une augmentation du temps pour une passe à 30 secondes.

Voici les résultats sur le MQL5 Cloud Network : 3 704 tâches propres en 25 minutes et 8 secondes (1 508 secondes).

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

Voici les résultats des passes locales : 181 tâches en 11 minutes et 57 secondes (717 secondes) - je me suis arrêté pour éviter d'attendre 4 heures (le temps total peut être facilement calculé).

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

Si nous calculons combien il faudra aux noyaux locaux pour calculer 3 704 tâches, nous obtenons : ( 3 704 / 181 ) * 717 = 14 672 secondes (244 minutes et 32 secondes = 4 heures, 4 minutes et 32 secondes).

Total il s'avère que 14 672 / 1 508 = 9,7 fois la génétique est plus rapide dans le nuage.

Bien que le résultat soit proche du précédent 8,8, il atteint tout de même 10 fois, ce qui donne le droit de déclarer "un ordre de grandeur plus rapide".

Les explications données dans le commentaire https://www.mql5.com/ru/forum/6071/page2#comment_148584 restent valables.

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

Pendant 3 min. 28 secondes d'utilisation du réseau, j'ai été facturé soit 2, soit 3 centimes (3 centimes dans le terminal, 2 centimes sur le site web, et 3 centimes gelés). Soit 3, ou même pour simplifier, l'utilisation du réseau pour la génétique coûte 1 centime pour une minute. Au total, une heure coûte 60 cents, 24 heures = 14,4 $. Cela me semble très cher. Les prix doivent être réduits au moins trois fois pour être attractifs pour le consommateur (beaucoup de gens testent les EA, mais tout le monde ne peut/veut pas débourser environ 15 dollars par jour pour le Cloud, et si c'était 5 dollars ou moins - il y aurait plus de gens prêts à le faire).

...

Je pense que le fil de ma pensée est clair

@ Hey neighbour, I don't like you going to my wife while I'm at work.

@ Vous ne comprenez pas, vous les Johnsons, vous n'aimez pas ça, elle aime ça @ :))

Les acheteurs veulent toujours moins cher, les vendeurs plus cher, seul le devis peut régler le litige.

Les acheteurs devraient pouvoir indiquer le prix qu'ils souhaitent pour une tâche, les vendeurs le prix qu'ils souhaitent pour leurs ressources, et un marché sera alors organisé.

Mais tout cela se passera dans le futur, lorsque le service deviendra courant et que son opportunité ne sera plus un problème. Aujourd'hui, le MQ doit activement prouver que l'informatique en nuage est cool.

 

Mon expérience : j'ai fait et je fais encore beaucoup de tests dans claude, mais depuis le début du projet, je n'ai dépensé que 44 dollars.

C'est très peu, si l'on tient compte du fait qu'à certains moments, 2 à 3 000 agents ont été utilisés.

 
Renat:


Il s'avère que 14 672 / 1 508 = 9,7 fois la génétique est plus rapide dans le nuage.

Bien que le résultat soit proche des 8,8 fois précédents, il atteint tout de même 10 fois, ce qui nous autorise à déclarer qu'il s'agit d'un "ordre de grandeur plus rapide".

Au total, la génétique est accélérée de 7 à 10 fois. C'est-à-dire d'un ordre de grandeur. Et comme dans les tests locaux des noyaux non faibles ont été utilisés, pour certains utilisateurs l'accélération atteindra probablement 40 fois.

J'ai décidé d'utiliser le nuage si l'optimisation par mes propres forces prend plus d'une journée.

+ Demande supplémentaire : veuillez développer les mécanismes d'identification des agents lents et de redistribution des tâches entre eux et les agents locaux et distants. Car il s'avère que le même test avec les mêmes cœurs que les agents distants + 10 plus faibles + 2 agents locaux faibles conduit au résultat suivant :

Pratiquement 2,5 fois plus lent. Et il n'y a pas toujours le désir et la possibilité de mesurer avec quels agents on peut obtenir la performance maximale.

 

Y a-t-il une mention indiquant que vous devez payer pour ce service ?

La page web du MQL Cloud Network(https://cloud.mql5.com/) annonce qu'il est possible de gagner des $$$ supplémentaires en permettant à d'autres d'utiliser votre CPU pour des optimisations. Pourquoi n'est-il pas mentionné que si vous utilisez le Cloud Network pour des optimisations, vous devez payer ? Si vous ne payez pas, qui paye les personnes qui mettent leur CPU sur le réseau mais qui n'exécutent aucune optimisation ?

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!
 

L'informatique dématérialisée est-elle sûre ? Ou bien mon EA sera-t-il volé si j'utilise le cloud ?

merci

 
MyDream:

L'informatique dématérialisée est-elle sûre ? Ou est-ce que mon EA sera volé si j'utilise le cloud ?

merci

Je dirais que si MQ le souhaite, ils pourraient déjà implémenter que si les résultats de votre backtest expert sont suffisamment bons, ils obtiennent des rapports expert+backtest directement à partir de votre ordinateur local. Mais je ne pense pas qu'ils fassent quoi que ce soit de ce genre.

Si vous pensez vraiment que votre expert pourrait être aussi bon, alors faites de l'ingénierie séparée (je ne m'en souviens pas à l'heure actuelle) : En principe, vous testez les choses séparément, et vous ne verrez les vrais résultats que lorsque vous combinerez tous les résultats que vous avez obtenus auparavant (divisions).

 
MyDream:

L'informatique dématérialisée est-elle sûre ? Ou bien mon EA sera-t-il volé si j'utilise le cloud ?

merci

Vous devriez lire l'article Les principes fondamentaux des tests dans MetaTrader 5:

L'échange de données entre le terminal et l'agent

...

Les agents n'enregistrent jamais sur le disque dur les fichiers EX5 obtenus du terminal (EA, indicateurs, bibliothèques, etc.) pour des raisons de sécurité, de sorte qu'un ordinateur avec un agent en cours d'exécution ne puisse pas utiliser les données envoyées. Tous les autres fichiers, y compris les DLL, sont enregistrés dans le bac à sable. Dans les agents distants, il n'est pas possible de tester les EA à l'aide de DLL.

Les résultats des tests sont additionnés par le terminal dans un cache spécial de résultats (le cache de résultats), pour un accès rapide lorsqu'ils sont nécessaires. Pour chaque ensemble de paramètres, le terminal recherche dans le cache de résultats les résultats déjà disponibles des exécutions précédentes, afin d'éviter les nouvelles exécutions. Si le résultat correspondant à un tel ensemble de paramètres n'est pas trouvé, l'agent se voit confier la tâche d'effectuer le test.

Tout le trafic entre le terminal et l'agent est crypté.