Движки
-
Пост, в общем-то, посвящается @Комс.
Меня не устраивает ширина поиска в Лиле и я играюсь с настройками с целью сделать так, чтобы слабые ходы получали больше времени.
В Лиле используется алгоритм UCT, и есть такая формула (1):
Cpuct' = Cpuct + CpuctFactor * ln((Nodes + CpuctBase)/CpuctBase)Это была основная формула. Можно, если нужно, выразить Nodes. Формула (2):
Nodes = CpuctBase * (e^((Cpuct' - Cpuct)/CpuctFactor) - 1)Или выразить CpuctBase. Формула (3):
CpuctBase = Nodes / (e^((Cpuct' - Cpuct)/CpuctFactor) - 1)Объясню формулу (1). Это всё конфигурационные параметры движка, кроме Cpuct' (это вычисляемый) и Nodes (сколько просмотрено узлов на данный момент при анализе ДАННОГО узла).
Из описания алгоритма известно, что баланс exploitation - exploration сдвигается вправо тем больше, чем больше Cpuct'. Т.е., чтобы поиск сделать шире, нужно увеличивать Cpuct', чего можно достичь увеличением Cpuct, или CpuctFactor, или уменьшением CpuctBase. И, само собой, при увеличении Nodes поиск расширяется автоматически.
Для каждого хода-кандидата вычисляется его приоритетность, а именно Cpuct' плюс некоторое слагаемое, с которым я особо не разбирался пока (оно зависит от оценки хода), и выбирается тот ход-кандидат, у которого сумма больше. Т.е., приоритетность хода-кандидата зависит от нодесов, просмотренных во время анализа этого хода ранее, от оценки хода и от конфигурационных параметров.По дефолту такие значения:
? = 3 + 2 * ln((Nodes + 19652)/19652)При дефолтных значениях динамика получается следующая.
Когда Nodes = 0 (т.е., свежий ход), то Cpuct' = 3.
Когда Nodes = 33K, то Cpuct' = 5.
и т.д., вот таблица:Nodes Time* Cpuct' 0 0 3 33K 3 sec 5 125K 12 sec 7 375K 37 sec 9 1M 100 sec 11 3M 5 min 13 8M 13 min 15 22M 37 min 17 59M 98 min 19 *Время указано на моей текущей конфигурации железа и софта. Может отличаться для разных видеокарт и нейросетей. Для справки: на RTX 2060 с нейросетью T40B.4-260 скорость расчёта примерно 10K nodes/sec = 600 Knodes/min = 36M nodes/hr.
Указано потраченное время только на обдумывание этого хода, но не других ходов-кандидатов.Если я держу движок уже 13 минут на ходе (причём, это означает общее время анализа уже намного больше, если этот ход не на первой линии!), то мне кажется, это значит, что я хочу уже широкого анализа, а не додрачивания оценки лучшего хода. Меня как-то не очень устраивает, что Cpuct' для 5 минут и 13 минут отличается так мало.Временно снимается - пока не понимаю полностью, как это всё работает.Можно крутить CpuctBase. Я ещё буду дописывать этот пост.
-
Братка, спасибо за посвящение, но тебе надо связаться с автором СREM напрямую...
Он не отдуплился, чего мы от него хотим, а заходит туда редко
https://forchess.ru/showpost.php?p=109623&postcount=4739 -
Мы пока сами попробуем покрутить. Будут конкретные вопросы - зададим.
-
А остальные писатели там это чайники, они нагонят щас тонну флуда... и Крем не заметит моё уточнение
-
Участник @комс написал в Движки:
поищи в инете тест "ночной кошмар II", не помню, как по-английски
Там есть даже поза из Полугаевский - Торре, 1982Или завтра скину
Но оболочка Фритц будет нужна, как ни крутиЗапустил в пакетном режиме (помнишь, для тебя делал? - пригодился) все 30 задач оттуда, по 7 минут на каждую. Когда отработает, проверю сколько правильных решений. Потом будем и другие сетки так проверять, и другие настройки.
-
Updated
Есть тесты Кошмар-2 (по наводке @Комс), которые якобы плохо решаются движками. Давайте посмотрим.
Прогнал эти тесты на четырёх движках: LC0 с тремя разными нейросетями и Stockfish 10.
Сетки, начинающиеся на J, больше по размеру, чем на T, и работают медленнее. Теоретически должны давать оценку лучше.
На решение отводилось 5 минут на каждую задачу. В таблице отмечено, кто решил или не решил соответствующие задачи. Если стоит смайлик, значит движок выбился из общей тенденции в хорошую либо плохую сторону.Position # LC0: T40B.4-260 LC0: J13-410 LC0: J13B.2-136 Stockfish 10 1 + + + - 
2 - - - - 3 - - - - 4 + + + + 5 + + + + 6 + + + + 7 + + + - 
8 - - - - 9 + - + - 10 - - - - 11 - - + 
- 12 - - - + 
13 - - - - 14 + + + + 15 - - - - 16 - - - + 
17 + + + - 
18 - - - - 19 - + + - 20 + + + + 21 - - - - 22 - - - - 23 - - - - 24 - - - + 
25 + + + + 26 + + + + 27 + + + - 
28 - - - - 29 + + + + 30 + + + - 
Sum 14 14 16 11 Победу одержала сеть J13B.2-136.
Примечания
Задачи эти надо ещё проверять. Далеко не во всех я уверен. Впрочем, это, наверное, не так важно.
Интересно будет ещё Стокфиш прогнать.Прогнал.Железо: RTX 2060 для LC0 и Core i7-9750H для Stockfish.
Для Stockfish включал 10 процессорных тредов из 12.
Подключены таблицы окончаний на SSD. -
Две картинки о том, как важен параметр NNCacheSize в Лиле. Это размер кэша нейронной сети, выраженный в максимальном кол-ве сохраняемых позиций.
И почему его нельзя оставлять по умолчанию.В первом эксперименте NNCacheSize установлен по умолчанию (200K).
Во втором эксперименте он увеличен в 100 раз и равен 20M.В первом эксперименте кэш быстро заполнился (синяя линия), после чего скорость перебора позиций (красная линия) расти перестала, т.е., многие позиции идут на расчёт в видеокарту. Жёлтая линия - общее число просмотренных позиций - за час поднялась до 26K.
В втором эксперименте кэш даже к концу заполнился лишь на две трети (синяя линия). Скорость перебора позиций (красная линия) расти не переставала, т.е., многие позиции брались из кэша, а чем больше кэш, тем больше вероятность найти в нём позицию. Жёлтая линия - общее число просмотренных позиций - за час поднялась до 70K.
Вот так только настройкой кэша ускорили движок в 2.5 раза.


-
Внёс изменения в сравнительный тест движков/сеток на задачах Кошмар-2.
Добавлен Стокфиш. Он проиграл. -
Сейчас понял, что задачи, где Стокфиш всех нагнул, имеют небольшое кол-во фигур. Примерно понятно - лучше перемалывает варианты, а в позиционных факторах менее силён.
-
Позиция ближе к концу моей партии в клубе, сыгранной вчера. Не знаю, почему чёрные не сдаются, но не в этом суть, а в том, что я не очень понял анализ Лилы, см. вторую линию. А, точнее, совсем не понял.

24... Bxh3 25. gxh3 Bd8 26. Bxd8 - это зачем так? Что может сподвигнуть движок на такой кооператив?
-
желание закончить мучения...
Всё-таки искусственный интеллект )) -
Участник @bulldozer написал в Движки:
Есть тесты Кошмар-2 (по наводке @Комс), которые якобы плохо решаются движками. Давайте посмотрим.
Прогнал эти тесты на четырёх движках: LC0 с тремя разными нейросетями и Stockfish 10.
Сетки, начинающиеся на J, больше по размеру, чем на T, и работают медленнее. Теоретически должны давать оценку лучше.
На решение отводилось 5 минут на каждую задачу.Решаю: Eman 4.60 64-bit POPCNT c0:
Максимальное время = 300s.- Nightmare II-01 - Koenigsangr, Nightmare 2 - (W.Eigenmann) > 300s.
- Nightmare II-02 - Springerumw, Nightmare 2 - (W.Eigenmann) > 300s.
- Nightmare II-03 - Initiative, Nightmare 2 - (W.Eigenmann) Решен в 223.96s/37; Решен: 1
- Nightmare II-04 - Springeropf, Nightmare 2 - (W.Eigenmann) Решен в 23.73s/27; Решен: 2
- Nightmare II-05 - Endspiel T&, Nightmare 2 - (W.Eigenmann) Решен в 0.84s/16; Решен: 3
- Nightmare II-06 - Endspiel D, Nightmare 2 - (W.Eigenmann) Решен в 60.34s/37; Решен: 4
- Nightmare II-07 - Festung, Nightmare 2 - (W.Eigenmann) > 300s.
- Nightmare II-08 - Offene Lini, Nightmare 2 - (W.Eigenmann) > 300s.
- Nightmare II-09 - Patt, Nightmare 2 - (W.Eigenmann) Решен в 215.08s/32; Решен: 5
- Nightmare II-10 - Endspiel T&, Nightmare 2 - (W.Eigenmann) > 300s.
- Nightmare II-11 - Koenigsangr, Nightmare 2 - (W.Eigenmann) > 300s.
- Nightmare II-12 - Endspiel D&, Nightmare 2 - (W.Eigenmann) > 300s.
- Nightmare II-13 - Koenigsangr, Nightmare 2 - (W.Eigenmann) Решен в 242.02s/39; Решен: 6
- Nightmare II-14 - Damenopfer, Nightmare 2 - (W.Eigenmann) Решен в 56.79s/36; Решен: 7
- Nightmare II-15 - Endspiel L, Nightmare 2 - (W.Eigenmann) > 300s.
- Nightmare II-16 - Endspiel T&, Nightmare 2 - (W.Eigenmann) Решен в 73.29s/33; Решен: 8
- Nightmare II-17 - Endspiel T&, Nightmare 2 - (W.Eigenmann) Решен в 49.42s/46; Решен: 9
- Nightmare II-18 - Koenigsangr, Nightmare 2 - (W.Eigenmann) > 300s.
- Nightmare II-19 - Springeropf, Nightmare 2 - (W.Eigenmann) > 300s.
- Nightmare II-20 - Starke Feld, Nightmare 2 - (W.Eigenmann) Решен в 39.55s/32; Решен: 10
- Nightmare II-21 - Endspiel T, Nightmare 2 - (W.Eigenmann) > 300s.
- Nightmare II-22 - Bauernopfer, Nightmare 2 - (W.Eigenmann) > 300s.
- Nightmare II-23 - Zugzwang, Nightmare 2 - (W.Eigenmann) > 300s.
- Nightmare II-24 - Endspiel T&, Nightmare 2 - (W.Eigenmann) Решен в 2.84s/25; Решен: 11
- Nightmare II-25 - Linienoeffn, Nightmare 2 - (W.Eigenmann) Решен в 28.61s/27; Решен: 12
- Nightmare II-26 - Raeumung, Nightmare 2 - (W.Eigenmann) > 300s.
- Nightmare II-27 - Initiative, Nightmare 2 - (W.Eigenmann) > 300s.
- Nightmare II-28 - Endspiel D&, Nightmare 2 - (W.Eigenmann) > 300s.
- Nightmare II-29 - Endspiel T&, Nightmare 2 - (W.Eigenmann) Решен в 0.58s/14; Решен: 13
- Nightmare II-30 - Koenigsangr, Nightmare 2 - (W.Eigenmann) > 300s.
Результат: 13 из 30 = 43.3%. Среднее время = 78.23s / 30.84
-
-
-
Решаю: Eman 4.60 64-bit POPCNT dc24:
Максимальное время = 300s.- Nightmare II-01 - Koenigsangr, Nightmare 2 - (W.Eigenmann) Решен в 231.19s/37; Решен: 1
- Nightmare II-02 - Springerumw, Nightmare 2 - (W.Eigenmann) > 300s.
- Nightmare II-03 - Initiative, Nightmare 2 - (W.Eigenmann) > 300s.
- Nightmare II-04 - Springeropf, Nightmare 2 - (W.Eigenmann) Решен в 14.84s/26; Решен: 2
- Nightmare II-05 - Endspiel T&, Nightmare 2 - (W.Eigenmann) Решен в 0.48s/14; Решен: 3
- Nightmare II-06 - Endspiel D, Nightmare 2 - (W.Eigenmann) Решен в 231.02s/36; Решен: 4
- Nightmare II-07 - Festung, Nightmare 2 - (W.Eigenmann) > 300s.
- Nightmare II-08 - Offene Lini, Nightmare 2 - (W.Eigenmann) > 300s.
- Nightmare II-09 - Patt, Nightmare 2 - (W.Eigenmann) > 300s.
- Nightmare II-10 - Endspiel T&, Nightmare 2 - (W.Eigenmann) > 300s.
- Nightmare II-11 - Koenigsangr, Nightmare 2 - (W.Eigenmann) > 300s.
- Nightmare II-12 - Endspiel D&, Nightmare 2 - (W.Eigenmann) > 300s.
- Nightmare II-13 - Koenigsangr, Nightmare 2 - (W.Eigenmann) > 300s.
- Nightmare II-14 - Damenopfer, Nightmare 2 - (W.Eigenmann) Решен в 196.81s/37; Решен: 5
- Nightmare II-15 - Endspiel L, Nightmare 2 - (W.Eigenmann) > 300s.
- Nightmare II-16 - Endspiel T&, Nightmare 2 - (W.Eigenmann) Решен в 37.66s/30; Решен: 6
- Nightmare II-17 - Endspiel T&, Nightmare 2 - (W.Eigenmann) Решен в 228.96s/54; Решен: 7
- Nightmare II-18 - Koenigsangr, Nightmare 2 - (W.Eigenmann) > 300s.
- Nightmare II-19 - Springeropf, Nightmare 2 - (W.Eigenmann) > 300s.
- Nightmare II-20 - Starke Feld, Nightmare 2 - (W.Eigenmann) Решен в 104.30s/36; Решен: 8
- Nightmare II-21 - Endspiel T, Nightmare 2 - (W.Eigenmann) > 300s.
- Nightmare II-22 - Bauernopfer, Nightmare 2 - (W.Eigenmann) Решен в 204.39s/35; Решен: 9
- Nightmare II-23 - Zugzwang, Nightmare 2 - (W.Eigenmann) > 300s.
- Nightmare II-24 - Endspiel T&, Nightmare 2 - (W.Eigenmann) Решен в 2.89s/23; Решен: 10
- Nightmare II-25 - Linienoeffn, Nightmare 2 - (W.Eigenmann) Решен в 35.38s/29; Решен: 11
- Nightmare II-26 - Raeumung, Nightmare 2 - (W.Eigenmann) Решен в 80.65s/34; Решен: 12
- Nightmare II-27 - Initiative, Nightmare 2 - (W.Eigenmann) Решен в 181.52s/41; Решен: 13
- Nightmare II-28 - Endspiel D&, Nightmare 2 - (W.Eigenmann) > 300s.
- Nightmare II-29 - Endspiel T&, Nightmare 2 - (W.Eigenmann) Решен в 1.09s/15; Решен: 14
- Nightmare II-30 - Koenigsangr, Nightmare 2 - (W.Eigenmann) > 300s.
Результат: 14 из 30 = 46.6%. Среднее время = 110.79s / 31.92
-
один и тот же движок с разным контемптом решал разные (пусть и не совсем) кошмары, бггг
Влад, в таблицу не заноси... есть у меня подозрение, что второй круг теста даст другие результаты -
-
Участник @комс написал в Движки:
Участник @комс написал в Движки:
Nightmare II-29 - Endspiel T&, Nightmare 2 - (W.Eigenmann) Решен в 0.58s/14; Решен: 13
у меня моментально, а у Буля не решил

У нас разные методики. Мой скрипт решает 5 минут, после чего пишет лучший ход, и я сравниваю его с ответом. У тебя решает, видимо, только до момента, когда правильный ответ впервые проскочит в анализе.
-
именно так
-
Оставлю памятку о позициях, решаемых чёрными в Ночном кошмаре - 2
7
11
13
20
21
26чуть позже объясню зачем
Здравствуйте! Похоже, вам интересна эта беседа, но у вас пока нет учетной записи.
Вы устали просматривать одни и те же посты каждый раз, когда заходите на сайт? После регистрации, вам не придётся искать обсуждения в которых вы принимали участие, настройте уведомления о новых сообщениях так как вам это удобно (по электронной почте или уведомлением). У вас появится возможность сохранять закладки и ставить лайки постам, чтобы выразить свою благодарность другим участникам сообщества.
С вашими комментариями этот пост может стать ещё лучше 💗
Зарегистрироваться Войти