Discussão do artigo "Acelerar cálculos com a rede MQL5 em nuvem" - página 2

 

Meus resultados na configuração a seguir:

  • Média móvel
  • EURUSD, H1, todos os ticks de 01/01/2010 a 01/01/2011 na MetaQuotes-Demo
  • Saldo: 100 000 USD
  • Configurações


Modo Genetics na MQL5 Cloud Network: 2.624 passagens das 8.704 esperadas foram de fato calculadas em 15 minutos e 52 segundos. O Genetics interrompeu o cálculo mais cedo, pois atingiu o limite máximo de resultados devido a um campo de pesquisa altamente esparso.

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

Depois de limpar todos os caches no disco e reiniciar o terminal, executei o Genetics em núcleos locais i7-2600, 3,4 Ghz, Windows 7 x64, RAM 16Gb, 8 núcleos:

Tempo médio de passagem local de 19 a 25 segundos (computador não carregado com nada):

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


Percebendo que eu estaria esperando muito tempo nesse ritmo, parei o cálculo em 211 passagens:

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


Você pode ver que essas são 211 passagens puras com zero acessos ao cache antigo.

Como as diferentes execuções de genética raramente coincidem com o número de passagens e eu executei os testes de forma bastante limpa, é possível fazer o cálculo do tempo matematicamente:

  • consideramos que os agentes locais farão 2.624 passagens, assim como a genética no cloude
  • 2.624 na nuvem levaram 15 minutos e 52 segundos (952 segundos).
  • 211 passagens locais levaram 11 minutos e 16 segundos (676 segundos).
  • Isso significa que 2.624 passagens levariam = (2624 / 211) * 676 = 8.406 segundos (140 minutos e 6 segundos).

O total é de 8.406 / 952 = 8,8 vezes a genética é mais rápida na nuvem. Isso corresponde à potência de 64 núcleos locais.


Qual é a explicação?

  • Na genética, o fator de dimensionamento máximo varia de 64 a 256 núcleos.

    Isso depende diretamente da própria ideia de cruzar diferentes gerações e do tamanho da população adaptável. Ou seja, na genética, a rede de nuvem inteira não deve ser usada.

  • Na genética, os agentes na nuvem precisam aguardar a conclusão do cálculo de cada geração.

    Como resultado, dos 64 a 256 agentes, muitos passam o tempo esperando por um novo pedaço em vez de trabalhar continuamente. Muitas vezes, cada agente tem tempo para concluir apenas uma tarefa de uma população de 64 a 256 tarefas. E os núcleos locais, devido ao seu número menor e à potência igual, quase nunca ficam ociosos - cada um deles executa uma parte proporcional do lote de tarefas.

  • Em comparações com o claud, o quadro é prejudicado pela presença de um testador local multicore.

    Por um lado, qualquer resultado do claud praticamente precisa ser dividido por 4-8 e, por outro lado, usamos os recursos dos núcleos locais da forma mais eficiente possível.

  • Derrotamos a latência da rede - os resultados das passagens de 20 segundos e de meio segundo são muito próximos.

    A solução de pacotes e o mecanismo eficiente do protocolo de rede são os principais.

Obviamente, os resultados da enumeração completa não têm problemas com a latência devido a pequenas populações de pacotes e a velocidade pode ser escalonada linearmente em centenas e milhares de vezes.

 

Encontrei um erro - eu estava testando no servidor RoboForex de outra pessoa e gastei tempo suficiente no bombeamento inicial do histórico de gráficos.

No novo histórico, o claud apenas se aquece por alguns minutos, sincronizando o histórico por agentes. Vou repetir os testes agora.

 

Realizei testes no MetaQuotes-Demo: há mais histórico de M1 em nosso servidor, quase todos os claudes já o possuem e o tempo de aquecimento da rede é menor.

O aumento no volume de barras M1 levou a um aumento no tempo de uma passagem para 30 segundos.

Aqui estão os resultados na MQL5 Cloud Network: 3.704 tarefas limpas em 25 minutos e 8 segundos (1.508 segundos).

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

Aqui estão os resultados das passagens locais: 181 tarefas em 11 minutos e 57 segundos (717 segundos) - parei para evitar esperar por 4 horas (o tempo total pode ser facilmente calculado).

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

Se calcularmos quanto será necessário nos kernels locais para calcular 3.704 tarefas, obteremos: ( 3.704 / 181 ) * 717 = 14.672 segundos (244 minutos e 32 segundos = 4 horas, 4 minutos e 32 segundos).

Total, verifica-se que 14.672 / 1.508 = 9,7 vezes a genética é mais rápida na nuvem.

Embora o resultado esteja próximo dos 8,8 anteriores, ainda assim chega a 10 vezes, o que dá o direito de declarar "uma ordem de magnitude mais rápida".

As explicações fornecidas no comentário https://www.mql5.com/ru/forum/6071/page2#comment_148584 ainda se aplicam.

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

Durante 3 min. 28 segundos de uso da rede, foram cobrados 2 ou 3 centavos (3 centavos no terminal, 2 centavos no site e 3 centavos congelados). Que seja 3 ou, para simplificar, usar a rede para fins genéticos custa 1 centavo por um minuto. No total, uma hora custa 60 centavos, 24 horas = US$ 14,4. Isso parece muito caro para mim. Os preços precisam ser descontados pelo menos três vezes para torná-los atraentes para o consumidor (muitas pessoas testam os EAs, mas nem todo mundo pode/quer desembolsar cerca de US$ 15 por dia pela nuvem e, se fosse US$ 5 ou menos, haveria mais pessoas dispostas).

...

Acho que minha linha de pensamento está clara

Ei, vizinho, não gosto que você vá até minha esposa enquanto estou no trabalho.

@Vocês não entendem, Johnsons, vocês não gostam, ela gosta @ :))

Os compradores sempre querem mais barato, os vendedores mais caro, somente a cotação resolverá a disputa.

Os compradores devem poder cotar um preço desejado para uma tarefa, os vendedores um preço desejado para seus recursos, e então um mercado será organizado.

Mas tudo isso está no futuro, quando o serviço se tornará comum e sua conveniência não será uma questão. Agora a MQ precisa provar ativamente que a nuvem é legal.

 

Minha experiência: Fiz e estou fazendo muitos testes no claude, mas durante todo o tempo, desde o início do projeto, gastei apenas 44 dólares.

Isso é muito pouco, levando em conta que, às vezes, foram usados de 2 a 3 mil agentes.

 
Renat:


Verifica-se que 14.672 / 1.508 = 9,7 vezes a genética é mais rápida na nuvem.

Embora o resultado esteja próximo dos 8,8 vezes anteriores, ele ainda chega a 10 vezes, o que nos dá o direito de declarar que é "uma ordem de magnitude mais rápida".

No total, a genética é acelerada de 7 para 10 vezes. Ou seja, em uma ordem de grandeza. E como nos testes locais não foram usados kernels fracos, para alguns usuários a aceleração provavelmente chegará a 40 vezes.

Eu mesmo decidi que usarei a nuvem se a otimização por minhas próprias forças levar mais de um dia.

+ solicitação - expanda os mecanismos para identificar agentes lentos e redistribuir tarefas entre eles para agentes locais + remotos. Pois acontece que o mesmo teste com os mesmos núcleos do remoto + 10 mais fracos + 2 agentes locais fracos leva ao resultado:

Praticamente 2,5 vezes mais lento. E nem sempre há o desejo e a possibilidade de medir com quais agentes obter o desempenho máximo.

 

Há alguma menção de que você precisa pagar por esse serviço?

A página da Web da MQL Cloud Network(https://cloud.mql5.com/) anuncia a possibilidade de ganhar dinheiro extra permitindo que outras pessoas usem sua CPU para otimizações. Por que não há nenhuma menção de que, se você usar a Cloud Network para otimização, deverá pagar? Se você não pagar, quem está pagando as pessoas que colocam suas CPUs na rede e não executam nenhuma otimização?

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!
 

A nuvem é segura? Ou meu EA será roubado se eu usar a nuvem?

Obrigado

 
MyDream:

A nuvem é segura? Ou meu EA será roubado se eu usar a nuvem?

Obrigado

Eu diria que, se a MQ quisesse, já poderia ter implantado a possibilidade de que, se os resultados de seu backtest especializado forem bons o suficiente, eles receberiam relatórios de expert+backtest imediatamente de seu computador local. Mas acho que eles não estão fazendo nada disso.

Se você realmente acha que seu especialista pode ser tão bom, então faça uma engenharia dividida (não me lembro direito): Basicamente, você testa as coisas separadamente, e os resultados reais só serão vistos quando você combinar todos esses resultados que obteve antes (divisões).

 
MyDream:

A nuvem é segura? Ou meu EA será roubado se eu usar a nuvem?

Obrigado

Você deve ler o artigo The Fundamentals of Testing in MetaTrader 5:

A troca de dados entre o terminal e o agente

...

Os agentes nunca gravam no disco rígido os arquivos EX5 obtidos do terminal (EA, indicadores, bibliotecas etc.) por motivos de segurança, de modo que um computador com um agente em execução não possa usar os dados enviados. Todos os outros arquivos, inclusive DLL, são gravados na sandbox. Em agentes remotos, você não pode testar EAs usando DLL.

Os resultados do teste são adicionados pelo terminal em um cache especial de resultados (o cache de resultados), para um acesso rápido a eles quando necessário. Para cada conjunto de parâmetros, o terminal procura no cache de resultados os resultados já disponíveis das execuções anteriores, a fim de evitar novas execuções. Se o resultado com esse conjunto de parâmetros não for encontrado, o agente recebe a tarefa de realizar o teste.

Todo o tráfego entre o terminal e o agente é criptografado.