четверг, 11 апреля 2013 г.

Перевод интервью с Доном Дейли - автором Комодо

Оригинал и полную версию интервью на английском языке можно найти на сайте TCEC.

Komodo – коммерческий движок Дона Дейли и Ларри Кауфмана. Рейтинг Komodo 5 – 3167. Движок занимает шестую строчку в общем рейтинг листе и четвертую – среди однопроцессорных программ. В текущем неофициальном чемпионате мира TCEC Komodo отобрался в третий этап и занимает третье место в таблице.



Когда вы начали работать над Komodo, или его первыми версиями, которые назывались Doch?

Не помню точно, около 4 или 5 лет назад. На самом деле я перестал заниматься разработкой шахматных программ почти на 15 лет, когда начал работать в стартапе в Массачусетсе. Так что это моя вторая карьера в компьютерных шахматах.

Ларри Кауфман раньше работал над Рыбкой. Как он оказался в команде разработчиков Komodo?

Мы перестали активно общаться, когда я ушел работать в Массачусетский технологический институт и после этого в стартап, который я упоминал. Но мы всегда были партнерами в компьютерных шахматах и сохраняли хорошие отношения. Я снова вышел с ним на связь, когда начал работать над Doch. Но поскольку он работал с Васиком, я не пытался заручиться его поддержкой. Тем не менее, Ларри интересовала моя работа, и иногда он предлагал какие-то идеи или отвечал на мои вопросы по разработке движка. Думаю, чем сильнее становился мой движок, тем больше интереса он проявлял. Постепенно мы начали работать над Doch вместе все больше и больше, а он тратил на Рыбку все меньше времени.

Когда я начал разрабатывать Doch, я делал это больше для развлечения. Я не стремился к созданию самого сильного движка в мире, к тому же мой возраст (мне уже 57) вычеркивает меня из профессиональных компьютерных шахмат. Но я пересмотрел свои взгляды, когда Doch становился все сильнее и сильнее, и мы не испытывали сложностей в усилении движка. Работа с Ларри стала дополнительным ускорением, потому что мы смогли постоянно обсуждать новые идеи. В какой-то момент мы даже рассчитывали прирост в пунктах ЭЛО за неделю. Меня очень обнадеживало, что мы могли выбрать значительно более сильный движок по сравнению с Doch и уже через несколько недель искать новую цель. Тот сильный движок становился слишком слабым конкурентом!

Нашей главной целью долго был Glaurung. Как только мы приближались к нему по силе игры, Торд [Ромстад] выпускал новую, более сильную версию – в итоге Glaurung превратился в Stockfish. Но мы постоянно двигались за этой целью и с каждым релизом приближались к конкурентам. Сейчас единственной целью остался Houdini, и наша работа практически не изменилась. Мы догнали по силе игры Houdini 2, но приходится бороться уже с Houdini 3.

Вы собираетесь переписать код Komodo и называете этот проект BeeKay. Расскажите, зачем понадобилось переписывать код?

Сначала я планировал сделать Komodo мультипроцессорным движком, но со временем код стал слишком неряшливым, и я посчитал непрактичной дальнейшую работу в этом направлении. К тому же мне все больше не нравилось качество и чистота кода, и я планировал переписать его. Я читал о С++11, и собирался применить кое-что из объектно-ориентированного программирования в BeeKay. Не думаю, что я буду полностью переписывать код, но я исправлю то, что считаю необходимым.

То есть BeeKay будет написан на другом языке по сравнению с Komodo?

Komodo написан на стандартном С, BeeKay на С++11.

Как вы тестируете движок, после того как изменили код?

Это зависит от того, какие изменения мы сделали. Есть несколько видов изменения кода, которые требуют разного тестирования. Например, вы можете только ускорить движок, но не улучшить его функционально. Мы проверяем такое изменение небольшим тестом на «вменяемость» - запускаем несколько тысяч партий с коротким контролем и проверяем, что движок работает нормально.

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

Поскольку у нас нет ресурсов для регулярных тестов на нормальном контроле (например, 50000 партий по 5 минут), мы проводим такие тесты относительно редко, примерно каждые 20 небольших улучшений движка.

Как вы оцениваете выступление Komodo в этом сезоне ТСЕС?

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

Большинство зрителей ожидало BeeKay уже к третьей стадии отбора. Если Komodo пройдет третий этап, вы собираетесь подготовить мультипроцессорную версию для четвертого?

Надеюсь, да. На данный момент [07.04.2013] BeeKay слабее даже Komodo 5, а в турнире играет еще более сильная версия движка. Я бы оценил разницу примерно 70 пунктов, поэтому нам потребуется 3-4 дополнительных ядра только для того, чтобы сократить это отставание между версиями. Я не думаю, что выход BeeKay вместо Komodo 5 в четвертом этапе будет большим усилением, но в какой-то степени это может помочь.

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

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

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

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

Сейчас на рынке шахматных движков много клонов и деривативов, люди активно используют движки с открытым кодом, компилируют их заново, и выпускают под своим именем. Что вы думаете на этот счет?

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

Лично я решил просто принять это как реальность современных компьютерных шахмат. Некоторые люди используют открытые коды, указывают их авторов и не претендуют на единоличные права в отношении своих движков. Я уважаю это. Именно так бесплатные программы и должны развиваться.

Недавно Stockfish начал открытое тестирование новых версий движка. Что вы думаете о таком подходе?

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

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

Думаю, что мы примерно в 1000 пунктов от идеальных компьютерных шахмат. Мы говорили о таком пределе еще 40 лет назад, когда движки не играли даже в силу мастера. После этого таким пределом стал считаться уровень гроссмейстера, и так далее. Как вы можете видеть, эти предположения были неверными, и говорить о пределе движков сейчас все еще неверно.

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

Комментариев нет: