文章 "利用 MQL5 云网络加速计算" - 页 2

 

我的配置结果如下

  • 移动平均线
  • 欧元兑美元,H1,从 2010.01.01 到 2011.01.01 在 MetaQuotes-Demo 上的所有刻度线
  • 余额:100 000 美元
  • 设置


MQL5 云网络中的 Genetics 模式:在 15 分 52 秒内实际计算了 8,704 次预期传递中的 2,624 次传递。由于搜索字段高度稀疏,计算结果已达到上限,因此基因模式提前停止了计算。

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

清除磁盘上的所有缓存并重启终端后,我在本地内核 i7-2600、3.4 Ghz、Windows 7 x64、内存 16Gb、8 内核上运行 Genetics:

本地平均通过时间为 19 至 25 秒(计算机未加载任何内容):

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


由于意识到这样的速度会让我等待很长时间,我在计算到 211 次时停止了计算:

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


你可以看到,这些都是纯粹的 211 次通过,对旧缓存的命中率为零。

由于不同的基因运行很少会在通过次数上完全一致,而且我的测试也做得相当干净,因此我们可以用数学方法来计算时间:

  • 我们认为,本地代理将花费 2624 次,云端中的基因也将花费 2624 次
  • 在云中执行 2624 次需要 15 分 52 秒(952 秒)。
  • 而 211 次本地传递耗时 11 分 16 秒(676 秒)。
  • 这就意味着,2624 次检测需要 = (2624 / 211) * 676 = 8406 秒(140 分零 6 秒)。

在云计算中,总计需要 8,406 / 952 = 8.8 倍的遗传速度。这相当于 64 个本地内核的功率。


原因何在?

  • 在遗传学中,最大扩展因子从 64 到 256 个内核不等。

    这直接取决于跨越不同世代和适应性种群规模的理念。也就是说,在遗传学中,不能使用整个克劳德网络。

  • 在遗传学中,云中的代理必须等待每一代的计算完成。

    因此,在 64-256 个代理中,许多代理会花时间等待新的大块,而不是持续工作。在 64-256 个任务中,每个代理往往只能完成一个任务。而本地内核由于数量较少且功率相等,几乎从不闲置--每个内核都会按比例完成任务批次的一部分。



  • 一方面,Claud 的任何结果实际上都必须除以 4-8;另一方面,我们尽可能高效地利用本地内核的能力。

  • 我们已经解决了网络延迟问题--20 秒和半秒通过的结果非常接近。

    数据包化和高效的网络协议机制决定了一切。

当然,完全枚举的结果不会因为数据包数量少而出现延迟问题,速度也可以线性放大数百或数千倍。

 

我发现了一个错误 - 我在别人的 RoboForex 服务器上进行测试,在图表历史的初始抽水上花费了足够的时间。

在新的历史记录中,Claude只是预热了几分钟,由代理同步历史记录。我现在将重复测试。

 

我在 MetaQuotes-Demo 上进行了测试:我们的服务器上有更多的 M1 历史记录,几乎所有 claudes 都有,网络预热时间更短。

M1 条数的增加导致一次通过的时间增加到 30 秒。

以下是MQL5 云网络 的结果 25 分 8 秒内完成 3704 项清理任务(1508 秒)。

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

以下是本地通过的结果:181 个任务,耗时 11 分 57 秒(717 秒)--为了避免等待 4 个小时,我停了下来(总时间很容易计算)。

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

如果我们计算本地内核计算 3,704 个任务需要多少时间,我们会得到:( 3,704 / 181 ) * 717 = 14,672 秒(244 分 32 秒 = 4 小时 4 分 32 秒)。

总计,14,672 / 1,508 = 9.7 倍基因在云中的速度更快。

虽然结果接近于之前的 8.8 倍,但仍然达到了 10 倍,因此有权宣布 "快了一个数量级"。

评论https://www.mql5.com/ru/forum/6071/page2#comment_148584 中给出的解释仍然适用。

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

在 3 分 28 秒的网络使用过程中,我被收取了 2 或 3 美分(终端收取 3 美分,网站收取 2 美分,冻结收取 3 美分)。在使用网络的 3 分 28 秒中,我被收取了 2 或 3 美分(终端 3 美分,网站 2 美分,冻结 3 美分)。就算是 3 美分吧,或者为了简单起见,使用网络做基因测试一分钟也要 1 美分。总共一小时 60 美分,24 小时 = 14.4 美元。我觉得这听起来很贵。价格至少需要打三折,才能对消费者有吸引力(很多人都在测试 EA,但不是每个人都能/愿意每天花 15 美元购买云服务,如果只需 5 美元或更少,就会有更多人愿意购买)。

...

我想我的思路已经很清晰了

@ 嘿,邻居,我不喜欢你在我工作的时候去找我老婆。

@你不明白,你们约翰逊家的人,你不喜欢,她喜欢@ :))

买家总是想要便宜的,卖家总是想要贵的,只有报价才能解决争议。

买方应能为任务报出期望的价格,卖方应能为其资源报出期望的价格,然后市场就会组织起来。

但这都是未来的事,到那时,服务将变得普遍,其便捷性将不再是问题。现在,MQ 必须积极证明云计算很酷。

 

我的经验:我用 claude 做了很多测试,现在也在做,但从项目 开始到现在,我只花了 44 美元。

考虑到有时要使用 2-3 千个代理,这个数字实在太少了。

 
Renat:


事实证明,14,672 / 1,508 = 9.7 倍的遗传学速度在云中更快。

虽然结果与之前的 8.8 倍接近,但仍然达到了 10 倍,这让我们有权宣布它 "快了一个数量级"。

总的来说,遗传学从 7 倍加速到了 10 倍。也就是说,快了一个数量级。由于在本地测试中使用的内核并不弱,对某些用户来说,加速可能会达到 40 倍。

我自己决定,如果靠自己的力量进行优化需要一天以上的时间,我将使用云计算。

+ 请求 - 请扩展识别慢速代理的机制,并在它们之间重新分配本地和远程代理的任务。因为事实证明,使用与远程代理相同的内核 + 10 个较弱的代理 + 2 个较弱的本地代理进行相同的测试会得出这样的结果:

实际上慢了 2.5 倍。而且,并不是所有情况下都有意愿和可能性来衡量使用哪些代理来获得最高性能。

 

有没有提到您需要为这项服务付费?

MQL Cloud Network 的网页(https://cloud.mql5.com/) 宣传让他人使用您的 CPU 进行优化可以赚取额外的美元。 为什么没有提到如果您使用 Cloud Network 进行优化,您必须付费? 如果您不付费,谁来支付那些将他们的 CPU 放在网络上却不进行任何优化的人的费用?

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!
 

云安全吗?如果我使用云,我的 EA 会被盗吗?

谢谢

 
MyDream:

云安全吗?如果我使用云,我的 EA 会被盗吗?

谢谢

我想说的是,如果 MQ 愿意,他们可能已经在做这样的事情:如果您的专家回测 结果足够好,他们就可以直接从您的本地计算机获得专家+回测报告。但我认为他们不会这么做。

如果你真的认为你的专家可能那么好,那就做分拆工程(我不太记得了):一般来说,你要分别测试不同的东西,只有当你把之前(分拆)得到的所有结果结合起来时,你才能看到真正的结果。

 
MyDream:

云安全吗?如果我使用云,我的 EA 会被盗吗?

谢谢

您应该阅读《MetaTrader 5 测试基础》一文:

终端和代理之间的数据交换

...

出于安全考虑,代理从不将从终端获取的 EX5 文件(EA、指标、库等)记录到硬盘上,因此运行代理的计算机无法使用发送的数据。所有其他文件(包括 DLL)都记录在沙盒中。在远程代理中,无法使用 DLL 测试 EA。

测试结果会被终端添加到一个特殊的结果缓存(结果缓存)中,以便在需要时快速访问。对于每一组参数,终端都会在结果缓存中搜索之前运行的可用结果,以避免重新运行。如果没有找到符合这组参数的结果,代理就会被赋予进行测试的任务。

终端和代理之间的所有通信都是加密的。