Обсуждение статьи "MQL5 Cloud Network ускоряет расчеты" - страница 2

 

Мои результаты на следующей конфигурации:

  • Moving Average
  • EURUSD, H1, все тики с 2010.01.01 по 2011.01.01 на MetaQuotes-Demo
  • Баланс: 100 000 USD
  • Настройки


Режим генетики в MQL5 Cloud Network: реально просчитано 2 624 прохода из 8 704 ожидаемых за 15 минут и 52 секунды. Генетика остановила просчет раньше, так как уперлась в потолок результатов из-за сильно разреженного поля поиска.

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, RAM 16Gb, 8 ядер:

Среднее время локального прохода от 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 проходов с нулевым количеством попаданий в старый кеш.

Так как разные запуски генетики редко когда совпадают по количеству проходов и я провел тесты достаточно чисто, можно провести дорасчет времени математически:

  • считаем, что локальные агенты так же пройдут 2 624 прохода, как и генетика в клауде
  • 2 624 в клауде заняло 15 минуты и 52 секунды (952 секунды)
  • 211 локальных проходов потребовали 11 минут и 16 секунд (676 секунд)
  • это означает, что 2 624 прохода займут = (2624 / 211) * 676 = 8 406 секунд (140 минут и 6 секунд)

Итого получается, что 8 406 / 952 = 8.8 раз генетика быстрее в облаке. Это соответствует мощности 64 локальных ядер.


Какие объяснения:

  • В генетике максимальный коэффициент масштабирования колеблется от 64 до 256 ядер.

    Это прямо зависит от самой идеи скрещивания разных поколений и адаптивного размера популяции. То есть, в генетике всю клауд сеть не использовать.

  • В генетике агенты в клауде вынуждены ждать завершения расчета каждой генерации.

    В результате из 64-256 агентов многие проводят время в ожидании новой порции, а не работают постоянно. Зачастую каждый агент успевает выполнить только одну задачу из популяции в 64-256 задачи. А локальные ядра за счет меньшего их количества и одинаковости мощности практически никогда не простаивают - каждый из них выполняет пропорциональную часть из пакета задач.

  • В сравнениях с клаудом картину портит наличие мультиядерного локального тестера.

    С одной стороны любой результат клауда практически приходится делить на 4-8, а с другой - мы максимально эффективно используем возможности локальных ядер.

  • Сетевую задержку мы победили - результаты проходов по 20 сек и полсекунды очень близки.

    Пакетирование и эффективный механизм сетевого протокола рулят.

Конечно же, результаты полного перебора не имеют проблем с задержками из-за мелких пакетов популяций и скорость может быть линейно отмасштабирована в сотни и тысячи раз.

 

Обнаружил у себя ошибку - я тестировался на чужом сервере RoboForex и потратил достаточно времени на первичную перекачку истории чартов.

На новой истории клауд несколько минут только разогревается, синхронизируя историю по агентам. Сейчас повторю тесты.

 

Провел тесты на MetaQuotes-Demo: М1 истории на нашем сервере больше, практически все клауды ее уже имеют и время разогрева сети меньше.

Увеличение объема М1 баров привело к увеличению времени на один проход до 30 секунд.

Вот результаты на MQL5 Cloud Network: 3 704 чистых задач за 25 минут и 8 секунд (1 508 секунд).

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 или даже для простоты, использование сети для генетики стоит 1 цент за одну минуту. Итого, час - 60 центов, 24 часа = $14,4. Как по мне - это очень дорого. Цены нужно скидывать минимум в три раза, чтобы это стало привлекательным для потребителя (тестируют советников многие, но не все могут/хотят выложить около $15 в день за Cloud, а если бы это было $5 или меньше - желающих бы стало больше).

...

Думаю, ход моей мысли понятен 

@ Слышь сосед, не нравиться мне, что пока я на работе, ты ходишь к моей жене @

@ Да вас Джонсонов не поймёшь, тебе не нравиться, ей нравиться @ :)

Покупатели всегда хотят дешевле, продавцы дороже, решит спор лишь котирование.

Покупатели должны иметь возможность выставлять желаемую цену за задачу, продавцы желаемую цену за свои ресурсы, тогда и организуется рынок.

Но это всё в будущем, когда услуга станет привычной и её целесообразность не будет вызывать вопрос. Сейчас же MQ приходится активно доказывать что Cloud это круто.

 

Мой опыт: я много проводил и провожу тестов в клауде, но за все время с момент старта проекта потратил всего 44 доллара.

Это очень мало, с учетом того, что временами использовались по 2-3 тысячи агентов.

 
Renat:


Итого получается, что 14 672 / 1 508 = 9.7 раз генетика быстрее в облаке.

Хотя результат близкий к предыдущему 8.8, но все-таки дотягивает до 10 раз, что дает право заявить "на порядок ускоряет".

Итого, генетика ускоряется от 7 до 10 раз.  Т. е., на порядок. А поскольку в локальных тестах использовались далека не слабые ядра, то для некоторых пользователей ускорение возможно дотянет и до 40 раз.

Для себя решил, что буду пользоваться облаком, если оптимизация своими силами будет занимать времени более суток.

 + пожелание - расширьте, плиз, механизмы определения тормознутых агентов и перераспределения между ними задач и на локальные + удалённые агенты. Ибо получается тот же тест с теми же ядрами в качестве удалённых + ещё 10 слабеньких + 2 слабеньких локальных приводит к результату:

 

Практически в 2,5 раза медленнее. А не всегда есть желание и возможность вымерять с какими агентами получить максимальную производительность.

 
Облачная платформа от Microsoft Windows Azure.
Windows Azure: Microsoft's Cloud Platform | Cloud Hosting | Cloud Services
  • www.windowsazure.com
Windows Azure is an open and flexible cloud platform that enables you to quickly build, deploy and manage applications across a global network of Microsoft-managed datacenters. Learn more Virtual Machines You bring it, we run it Windows Azure provides on-demand infrastructure that scales and adapts to your changing business needs. Whether you...
 
скажите пожалуйста можно ли в нашем облаке выполнять расчёты не связанные с торгами?хотя бы теоретически?
 
Да, можно. Для этого как раз есть математический метод оптимизации, включая доставку результатов через фреймы.
 
если можно подробней, очень интересует такая возможность))) т.е. я могу отправлять в облако задачу и получить решение? допустим декодирование видео и тому подобное  возможно? если да , то отправьте куда почитать)))
Причина обращения: