Все (пока нет) о Стратегический тестировщик, Оптимизация и Облако - страница 15

 
Ivan Titov #:
Сетевые агенты заработали

Рано обрадовался. После прохождения поколения 0 сетевые опять отвалились. После поколения 1 отвалилаcь и часть локальных. Причем добавляет только по 1 проходу на каждое ядро. Т.е. если в поколении 0 было около 300 проходов, то в 1-м - 7 проходов. Это 3-е поколение (сетевые агенты не работают, начиная с 1-го):


 
Ivan Titov #:

Рано обрадовался. После прохождения поколения 0 сетевые опять отвалились. После поколения 1 отвалилаcь и часть локальных. Причем добавляет только по 1 проходу на каждое ядро. Т.е. если в поколении 0 было около 300 проходов, то в 1-м - 7 проходов. Это 3-е поколение (сетевые агенты не работают, начиная с 1-го):

По картинке можно только сказать, что сетевые агенты у вас работают быстрее локальных. Они уже успели справиться с задачами, которые били распределены им. Локальные агенты должны закончить назначенные им задачи, после этого произойдет новое распределение задач следующего поколения.
Почему у вас получается в следующих поколениях сильно меньше задач сказать не могу. Возможно, это связано именно с вашим советником и его перебираемыми при оптимизации параметрами.
Если у вас на поколение получается всего семь задач, то оптимизатор, похоже, просто не видит смысла задействовать сетевые агенты. Поэтому использует только локальные.
 
Ivan Titov #:

И еще один глюк: агенты локальной сети не работают, хотя они запущены:

А в момент запуска оптимизации они почему-то отключаются:


Насколько я понимаю, если вы запускаете режим "Быстрый генетический алгоритм", то он не использует агентов с PR меньше 200, так как они замедляют процесс принятия решений о том, что оптимизировать, а что оставить для следующего поколения. У вашего процессора i7-3770 PR должен быть около 150. Если вы запускаете "Медленный полный алгоритм", то он должен использовать ваших агентов все время, так как ему не нужно, чтобы поколение полностью завершилось перед запуском следующего поколения.

 
Shalem Loritsch #:

Насколько я понимаю, если вы запускаете режим "Быстрый генетический алгоритм", то он не использует агентов с PR меньше 200, так как они замедляют процесс принятия решений о том, что оптимизировать, а что оставить для следующего поколения. У вашего процессора i7-3770 PR должен быть около 150. Если вы запускаете "Медленный полный алгоритм", то он должен использовать ваших агентов все время, так как ему не нужно, чтобы поколение полностью завершилось перед запуском следующего поколения.

У меня все агенты имеют PR меньше 200, и тем не менее спокойно работают над задачами оптимизации в режиме  "Быстрый генетический алгоритм". Откуда у вас такая информация?

Скорее всего, дело не в абсолютном значении PR, а в относительных различиях значений PR у разных агентов на разных серверах. В этом случае мы действительно можем получить замедление оптимизации, так как более быстрые агенты, выполнив свой пул задач, могут простаивать, ожидая завершения работы более медленных. Но это случается только если все задачи одного поколения уже распределены на агентов. Пока в поколении есть ещё нераспределенные задачи, то как только более быстрый агент освобождается, ему добавляются новые задачи. Оптимизатор пытается балансировать нагрузку: агентам с меньшим PR выдаётся меньше задач. Но это не настолько точное прогнозирование, чтобы разные по мощности агенты всегда заканчивали свои задачи одновременно. Поэтому желательно, чтобы в сети были агенты примерно с одинаковым PR.

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

 
Yuriy Bykov #:
А вот с таким поведением, что медленным агентам задачи просто не распределяются, мне сталкиваться не приходилось.

Из 7 сетевых агентов 4 - это агенты с того же компа, на котором запущен тест. Но отключаются все 7 почему-то.

По поводу распределений задач по агентам: если в течение одного поколения часть агентов закончит работу быстрее, разве они не берут в работу оставшиеся прогоны у более слабых агентов?

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

2024.07.29 18:24:18.595 Tester Best result 579.0199086609301 produced at generation 0. Next generation 1

2024.07.29 18:27:31.281 Tester Best result 579.0199086609301 produced at generation 0. Next generation 2

2024.07.29 18:29:12.607 Tester Best result 579.0199086609301 produced at generation 0. Next generation 3

2024.07.29 18:32:20.178 Tester Best result 579.0199086609301 produced at generation 0. Next generation 4

2024.07.29 18:34:32.076 Tester Best result 579.0199086609301 produced at generation 0. Next generation 5

2024.07.29 18:35:48.571 Tester Best result 579.0199086609301 produced at generation 0. Next generation 6

2024.07.29 18:36:49.944 Tester Best result 579.0199086609301 produced at generation 0. Next generation 7

2024.07.29 18:37:58.872 Tester Best result 579.0199086609301 produced at generation 0. Next generation 8

2024.07.29 18:39:02.691 Tester Best result 579.0199086609301 produced at generation 0. Next generation 9

2024.07.29 18:39:02.696 Tester Best result 579.0199086609301 produced at generation 0. Next generation 10

2024.07.29 18:39:02.706 Tester Best result 579.0199086609301 produced at generation 0. Next generation 11

2024.07.29 18:40:11.862 Tester Best result 579.0199086609301 produced at generation 0. Next generation 12

2024.07.29 18:40:11.867 Tester Best result 579.0199086609301 produced at generation 0. Next generation 13

2024.07.29 18:40:11.878 Tester Best result 579.0199086609301 produced at generation 0. Next generation 14

2024.07.29 18:40:11.878 Tester Best result 579.0199086609301 produced at generation 0. Next generation 15

2024.07.29 18:40:11.894 Tester Best result 579.0199086609301 produced at generation 0. Next generation 16


 
Ivan Titov #:

Из 7 сетевых агентов 4 - это агенты с того же компа, на котором запущен тест. Но отключаются все 7 почему-то.

Эти четыре агента с локального компьютера желательно убрать из списка удалённых агентов в локальной сети. Не думал, что кто-то додумается сделать такое. Выигрыша в скорости оптимизации это дать не может, а вот побочные эффекты - вполне. Процессор на локальном компьютере от такого добавления остаётся тем же самым. Поэтому даже если вам удастся запустить 12 процессов MetaTester, то они всё равно будут делить ресурсы четырёх физических ядер (или восьми логических). По времени выполнения фиксированного числа задач выигрыша не будет. Просто либо одновременно работают 4 процесса со скоростью Х, либо одновременно работают 8 процессов со скоростью X/2, либо одновременно работают 12 процессов со скоростью X/3.

По поводу распределений задач по агентам: если в течение одного поколения часть агентов закончит работу быстрее, разве они не берут в работу оставшиеся прогоны у более слабых агентов?

Нет, если задачи уже распределены на конкретного агента, то они не будут перераспределяться на освободившиеся агенты при генетической оптимизации. При полном переборе точно не скажу (практически не пользуюсь им), но там можно остановить и снова запустить оптимизацию в любой момент. Это приведёт к новому перераспределению задач. При генетической так делать нет смысла, так как пропадёт информация о прошедших поколениях.

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

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

 
Yuriy Bykov #:
Не думал, что кто-то додумается сделать такое

Это рекомендации от производителя

 

Спасибо, как-то пропустил это. Хотя там прямо сказано "Если у ядер процессора остается некоторый запас мощности... " То есть прирост может быть только на этот оставшийся запас, который, возможно, весьма небольшой. Зато с равномерным распределением задач у оптимизатора возникают сложности, которые иллюстрирует картинка в вашем первом сообщении: какую-то часть времени агенты простаивают, ожидая других. Определить, что выгоднее можно только проведя эксперименты с замерами времени. У меня получалось, что оптимизация в целом завершается быстрее, если убрать более медленных агентов, составляющих примерно пятую часть от общего количества доступных. 

 
Честно говоря не понимаю, в чем проблема автоматически перераспределить оставшиеся проходы при появлении освободившегося агента, даже при генетической оптимизации (можно даже с учетом быстродействия агента). Разработчики тестера могут пояснить?
Yuriy Bykov #:
причины подобного поведения кроются не в оптимизаторе, а в советнике и его оптимизируемых параметрах.

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