Komodo

**Komodo** - шахматный движок от основного автора Дона Дэйли (умер в возрасте 57 лет 22 ноября 2013 года) и с октября 2013 года от Марка Лефлера, при поддержке шахматного советника и эксперта по оценке и давнего сотрудника Дона Ларри Кауфмана. С 2015 года ведущий книжный эксперт Эрдоган Гюнес отвечает за ходы книги Комодо. На WCCC 2016 Komodo 10.x впервые выиграл трофей Шеннона, защищенный последующими версиями на WCCC 2017 и WCCC 2018 до сих пор.

Комодо появилось в январе 2010 года, производное от бывшего двигателя Дона Doch. Он использует битборды в качестве внутреннего представления доски, имеет сложный поиск и сбалансированную оценку на основе знаний. Komodo - это автономный шахматный движок, поддерживающий протокол UCI и доступный для нескольких платформ и операционных систем, поэтому он совместим с бесплатными и коммерческими графическими пользовательскими интерфейсами шахмат, совместимыми с UCI, и интерфейсами базы данных.

По состоянию на декабрь 2011 года Komodo стал коммерческим с версией 4, более ранние версии, работающие под Windows, Linux, Mac OS и Android, доступны на сайте загрузки Komodo, бесплатно для некоммерческого использования. Следующая дата релиза - май 2013 года с победителем CCT15 Komodo CCT.

## Дальнейшие версии

### Komodo 5

Komodo 5.1 MP, выпущенный в июне 2013 года, был основным переписанным в C++ 11, способным выполнять параллельный поиск для запуска на нескольких процессорах.

### Komodo 6

В октябре 2013 года Дон Дейли объявил о выпуске Komodo 6, а также о плохих новостях относительно будущего статуса Komodo из-за его смертельной болезни острой формы лейкемии. Он представил Марка Лефлера в качестве нового члена команды Komodo. Дон Дейли умер 22 ноября 2013 года в возрасте 57 лет, примерно в то же время, когда Комодо опередил Stockfish, выиграв игру 2 в финале 5-го сезона TCEC.

### Komodo TCEC и 7

Как победитель финала TCEC 5, Komodo TCEC был выпущен 4 декабря 2013 года, еще более улучшенный Komodo 7 21 мая 2014 года, теперь поддерживающий Syzygy Bases, реализацию интерфейса пробного кода Джереми Бернштейна.

### Komodo 8

Komodo 8, выпущенный 5 сентября 2014 года, значительно улучшил Komodo 7a, который уже вошел в тройку лучших шахматных движков практически во всех рейтинговых списках. Komodo 8 поддерживает базы Syzygy и доступен для Windows, Linux, Mac OS и Android, причем последняя сразу доступна для импорта в Chess для Android и в Chess for Glass. С середины сентября 2014 года Komodo 8 для Windows доступен как движок ChessBase, в комплекте с интерфейсом Deep Fritz, базы Syzygy не включены.

### Komodo 9

Komodo 9, выпущенный 28 апреля 2015 года, продолжил продвижение примерно на +50 Elo по сравнению с Komodo 8 благодаря улучшенному поиску, оценке и управлению временем, а также более эффективному использованию многопроцессорной обработки. Наиболее заметным является увеличение глубины поиска, достигаемое за данный промежуток времени, что объясняется улучшением правил расширения, сокращения и сокращения. Кроме того, Komodo 9 теперь имеет Chess960 и постоянный хеш для сохранения и восстановления анализа.

### Komodo 10

23 мая 2016 года Komodo 10 вышел с пересмотренной и улучшенной безопасностью короля, штормовой пешкой и пройденной оценкой пешки, а также с пересмотренной эвристикой LMR, NMP, IID и истории, и примерно на 60 Эло сильнее, чем Komodo 9. В июле 2016, Komodo 10.x выиграл трофей Шеннона.

### Komodo 11

23 мая 2017 года был выпущен Komodo 11.01, в котором исправлены некоторые незначительные проблемы Komodo 11, который уже был выпущен ChessBase за несколько дней до этого. По оценкам, он на 55 Эло сильнее, чем Komodo 10 при промежуточном контроле времени, выигрышах, связанных с оценкой, пересмотренным поиском покоя, единичными расширениями, LMR и параллельным поиском. Komodo 11.2, выпущенный 17 июля 2017 года, был версией, выигравшей WCCC 2017. Komodo 11.3 был выпущен 04 марта 2018 года с последующими улучшениями. Он также поставляется с BMI2-компиляцией для совместимых процессоров x86-64 - пока что не рекомендуется для AMD Ryzen из-за его медленной реализации PEXT.

### Komodo 12

Komodo 12 был выпущен в мае 2018 года. Помимо классического, немного улучшенного движка, Komodo 12 имеет опциональный поиск по дереву Монте-Карло (MCTS), релиз, вероятно, под влиянием шумихи AlphaZero. Однако, как подтвердил Марк Лефлер, внедрение MCTS было уже старой идеей команды Komodo, в том числе благодаря опыту Дона Дэйли по компьютерному го для создания UCT-проигрывателя.

### Komodo MCTS

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

## Турнирная игра

Комодо играл в ICT 2010 в Лейдене за доской, а также в CCT12 и CCT14. Это был первый успех в турнире в 2013 году, когда он выиграл CCT15 с 6½ / 7, а затем CCT16 в 2014 году с 5½ / 6.

### TCEC

В 2013 году Комодо начал играть в TCEC, чаще всего сражаясь с Stockfish за титул. Комодо выиграл 5-й сезон TCEC, 7-й сезон TCEC в 2014 году и 8-й сезон TCEC осенью 2015 года.

### WCCC / WCSC / WCRCC

#### 2015

На WCCC 2015 в Лейдене Komodo 9.x выиграл турнир по блицу и стал вторым, уступив и проиграв от массово параллельного и распределенного Jonny, который играл на кластере 100x24 ядер. После того, как несколько дней спустя месть одержала победу над Джонни на равном соревновании WCSC 2015, Комодо не повезло и он сделал слишком много ничьих против явно более слабых противников, чтобы стать третьим после Шреддера и Гинкго. Спустя две недели Комодо убедительно выиграл WCRCC 2015 с 9/9!

#### 2016

Турниры ICGA 2016 года в Лейдене были огромным успехом для Komodo 10.x, который не только выиграл трофей Шеннона в открытом чемпионате мира по компьютерным шахматам после тяжелого плей-офф шести игр против действующего чемпиона Джонни - Комодо с 48 потоками на 60-ядерном процессоре Intel i7 против кластера Джонни с ядрами 100x24 AMD, а также на равном чемпионате мира по шахматному программному обеспечению с аппаратным обеспечением с 5/6 - 1½ очка впереди занявшего второе место Джонни и Шреддера. Две недели спустя Комодо защитил свой титул АССА в быстрых шахматах на WCRCC 2016 с 14 победами и одним ничьим против Andscacs, занявшего второе место, то есть 14½ из 15.

#### 2017

В 2017 году Komodo мог защищать свои титулы на WCRCC 2017 онлайн, а вскоре позже выпустил Komodo 11.2 ICGA WCCC 2017 за бортом, снова в плей-офф против Джонни. Комодо также занял второе место на единой аппаратной WCSC 2017 позади Шреддер.

#### 2018

В 2018 году Komodo 12 продолжил свой успех, выиграв турниры ICGA WCCC 2018, WCSC 2018 и Blitz в Стокгольме, а затем в этом же году WCRCC 2018 онлайн.

## Цитаты

### Промо акции

Дон Дейли на малых акциях:

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

### Оценка

#### Значения центрированных точек

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

 Эндшпиль

#### Качество знаний

Дон Дейли в ответ Винсенту Дипевину:

> Дон, Ваша программа - своего рода beancounter, который опирается на позиционные квадратные столы.
>
>

> Вы не могли бы быть более неправильным. У нас в Komodo есть квадратные таблицы, которые являются очень малой частью Komodo и имеют очень малые веса, но Komodo уделяет огромное внимание правильной оценке с сотнями оценочных терминов, которые тщательно сбалансированы для создания позиционной шахматной программы поиска. Я лично считаю, что Комодо обладает лучшей оценочной функцией среди всех шахматных программ в мире.
> ...
> Общий объем знаний - это не то, что важно, это КАЧЕСТВО знаний, которые есть. Komodo старается использовать максимально сбалансированную функцию оценки и, возможно, гораздо больше знаний, чем большинство программ. Я не верю в количество, но Комодо развился, чтобы в любом случае обладать большим количеством знаний - вероятно, потому, что необходимы все знания в Комодо. Я пытался удалить знания в Комодо, чтобы получить скорость, и мы не смогли удалить НИЧЕГО, не заметив, что это ослабило Комодо, по крайней мере, немного.
>
>

### Ленивая оценка

Дон Дейли о селективности и ленивых оценках:

> Komodo довольно сильно увеличивает селективность, и мы ДЕЙСТВИТЕЛЬНО получаем приличное увеличение узлов в секунду с помощью отложенной оценки, но проблема в том, что мы получаем значительное увеличение узлов. Именно так, потому что мы предполагаем, что не будем делать разведчик, если догадка слишком мала. Поэтому мы пропускаем некоторые из бета-тестов, вы не можете съесть свой торт и съесть его тоже. Позиционный компонент Komodo может сильно различаться, поэтому мы наносим большой урон позиционно, когда используем ленивые поля.
>
>

### Подсчет узлов

Дон Дейли о подсчете узлов в Комодо 4:

> Как упоминал Ларри, мы считаем узлы по-разному. Более конкретно, обе версии всегда подсчитывали узел при выполнении хода, но Komodo 3 будет подсчитывать узлы, которые были отсечены вперед (если перемещение действительно выполнялось), а Komodo 4 - нет. В Komodo 3 я полагал, что если какая-либо работа была сделана (например, тестирование атаки после выполнения перемещения), она должна считаться узлом. Но в Komodo 4 мы изменили это, потому что ход технически сокращается (даже если нам сначала пришлось немного его проверить). Конечно, если ход ищется или уменьшается, он учитывается в обеих версиях.
>
>

> В основном это семантика, но мы получаем более стабильное количество узлов, и это работает лучше для тестирования фиксированных узлов, что мы иногда делаем.
>
>

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

### Параллельный поиск

Дон Дейли об аспектах параллельного поиска в Komodo 5.1 MP:

> То, как вы подходите к проблеме, тесно связано с тем, как вы ОПРЕДЕЛЯЕТЕ проблему или задачу. Цель MP состоит в том, чтобы заставить программу играть как можно лучше, используя больше ядер, максимально использовать преимущества аппаратного обеспечения, и единственная мера, которая действительно имеет значение (по крайней мере для нас), - это сила игры. Мы ВСЕ желаем, чтобы наша программа работала так, как если бы она играла на 4 ядрах быстрее, чем в 4 раза, но никто не получает такой эффективности.
>
>

> Некоторые подразумевают, что мы ищем больше, потому что мы не получаем такого же увеличения глубины, и это ужасная вещь. Интуиция такова, что если это работает, вы можете сделать это и в 1 потоке. Однако я не думаю, что это следует. Проблема в том, что 4 потока просто не в 4 раза лучше, чем 1 поток, независимо от того, насколько хороша ваша реализация MP, поэтому все сводится к тому, как наилучшим образом использовать то, что у вас есть. На мой взгляд, все идет к чему-то большему, если оно получает больше от дополнительных ядер с точки зрения ELO.
>
>

> Хорошо известно, что программы не масштабируются далеко за пределы нескольких процессоров. Переход с 128 на 256 процессоров дает вам очень мало. Одна из вещей, которую мы с Ларри хотим сделать, - это изучить, как лучше использовать все больше и больше ядер, и, надеюсь, то, что мы узнаем, приведет к повышению производительности на нескольких ядрах. Вряд ли это будет незначительным уточнением того, что мы уже делаем.
>
>

> Я не открываю новые возможности, так как это изучалось десятилетиями, и было опробовано много идей - я не притворяюсь иначе. Но мы посмотрим на новые оригинальные идеи, которые мы придумали, и вернемся к старомодным идеям, которые были опробованы в прошлом. Многие старые идеи, которые были отвергнуты, позже ожили, поэтому нет идеи, которая была бы запрещена.
>
>

> Поскольку поиск «шире» - это плохо и не является реальным параллелизмом, я не согласен с этим. Если бы 4 ядра были в 4 раза лучше, чем одно, я бы, наверное, согласился, но поскольку это не так, мы должны определить, на что лучше всего потратить усилия. Если у вас в комнате 11 человек и 10 из них доктора, а у кого нет сердечного приступа, как лучше всего использовать время врачей? Не все 10 докторов могут давать СЛР, хотя обычно это будет наилучшим использованием их таланта, но, безусловно, один из них будет вызывать скорую помощь, в то время как другой будет делать СЛР, а остальные будут делать все возможное, чтобы помочь, даже маленькими способами.
>
>

> Поэтому, если вы получаете очень мало пользы от дополнительных процессоров, вам нужно выяснить, есть ли что-то еще, что они могут сделать, чтобы быть более полезными. Возможно, одно дело - иметь дело с линиями, которые сильно сокращены в одноядерной программе?
>
>

Ларри Кауфман в октябре 2018 года:

> Комодо (обычный, а не MCTS) уже много лет испытывает проблему при работе на многих ядрах с большими хеш-таблицами, как в TCEC. Для достижения полной скорости требуется несколько минут. В трех или четырехчасовых играх это не имеет большого значения, но в блиц-турнире это абсолютно фатально, как вы можете видеть. Я рад сообщить, что Марк наконец-то решил проблему (насколько мы можем протестировать, до 36 ядер), и это исправление должно быть вовремя к следующему TCEC и к нашему следующему выпуску. Надеемся, что следующее мероприятие CCC должно показать огромную разницу.
>
>