что такое stockfish в шахматах

Шахматный движок Stockfish

Stockfish — это известный компьютерный шахматный движок, который был разработан программистами Торд Ромстад, Марко Костальба и Джуна Кииски.
Датой основания шахматного движка считается 2 ноября 2008 года.

Первая версия шахматного движка основана на программе Glaurung, последняя версия которой была выпущена в декабре 2008 года. Шахматная программа поддерживает как 32-битный, так и 64-битный однопроцессорные и многопроцессорные режимы работы.

Шахматный движок распространяется бесплатно, на условиях GNU General Public License. К примеру, текущая версия шахматного движка Stockfish 2.2.2 (от 14 января 2012 года) доступна как в исходном коде на C++, так и в виде скомпилированных версий для Microsoft Windows, Mac OS X и Linux.

Работа шахматного движка основана на использовании протокола UCI, поэтому для ее работы потребуется установить графический интерфейс пользователя GUI. В различных шахматных рейтингах программа занимает самые высокие позиции, конкурируя с Houdini и Rybka.

Скачать Stockfish бесплатно

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

Stockfish 2.2.2

Играйте в шахматы с помощью Stockfish!

Источник

Шахматный движок stockfish: краткий обзор программы

День добрый, дорогой друг!

Сегодня разберем еще одного программного «монстра»- шахматный движок stockfish. В дословном переводе — вяленая рыба. Откуда такое название, не берусь судить. Знаю только, что в некоторых интеллектуальных играх фишОм (рыбой) называют слабого игрока.

Что это за программа?

Stockfish – шахматный движок с открытым исходным кодом. Историю своего развития ведет с 2008 года.

Движок поддерживает 32-битный и 64-битный режимы,

В последние лет 6-7 борьба за первенство в основном проходит под знаком соперничества движков Komodo и Stockfish, Борьба проходит с переменным успехом.

В 2014 году (Сезон 6) чемпионский титул завоевал Stockfish обыгравший Komodo 35.5 :28.5

В конце этого же года (Сезон 7) Комодо реваншировался.

В сезоне 8 (ноябре 15 года) очередной матч и снова впереди Komodo.

В 9 сезоне (декабрь16 года) Стокфиш в финале обыгрывает Гудини (Houdini) – 17 побед, 8 поражений, 75 ничьих.

2016 год стал прорывным в истории развития движка. Сегодня по многим параметрам Stockfish опережает своих извечных соперников в последние годы Komodo и Houdini.

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

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

В рейтинге по версии CCRL Стокфиш занимает 2 строчку.

Где скачать?

Сайт разработчика: https://stockfishchess.org/

Также имеются версии для Mac, Android, Linux.

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

Обновление тестовых версий здесь http://abrok.eu/stockfish/

Как можно использовать движок?

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

Из известных мне топовых движков собственный интерфейс имеет только Шреддер.

Важно : оболочка, интерфейс, — должны поддерживать UCI протокол.

Подключить движок можно в несколько кликов. Как это сделать – показано в этом видео:

Многие шахматисты поступают следующим образом, цитирую:

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

Особенности стиля и сила игры

Stockfish имеет двадцать уровней сложности.

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

Например, считается, что в сравнении с Комодо, сильной стороной которого является позиционная игра, Стокфиш делает больший упор на тактику.

Можно ли использовать движок в практических партиях?

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

Тем не менее, такие попытки предпринимались еще со времен появления первых движков.

Иногда успешно, но чаще всего, — все эти манипуляции заканчивались для игрока печально. А именно дисквалификацией и не только на текущий турнир, но и пожизненно.

Вообще тема шахматного читерства одна из самых актуальных в современном шахматном сообществе и заслуживает отдельного обсуждения.

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

Читайте также:  что значит размер vesa в телевизоре

А самое главное: зачем это вам нужно? Это все равно, что сесть «на иглу». Мы с вами знаем, что последствия зависимостей разного рода всегда не самые приятные.

Благодарю за интерес к статье.

Если вы нашли ее полезной, сделайте следующее:

Источник

Шахматный движок Stockfish

Дата публикации: 2021-02-09

Давайте узнаем больше о Stockfish:

Что такое Stockfish?

Stockfish это самый мощный шахматный движок, доступный публике, и он существует уже довольно давно. Это бесплатный движок с открытым исходным кодом, который в настоящее время активно развивается. Stockfish был основан на шахматном движке, созданном Тордом Ромстадом в 2004 году, который был развит Марко Костальба в 2008 году. Джуна Кииски и Гэри Линскотт также считаются основателями.

Достижения Stockfish впечатляют больше, чем достижения любого другого шахматного движка. До 2020 года он выиграл восемь чемпионатов Top Chess Engine Championship (TCEC). Stockfish также доминировал на Чемпионатах Chess.com по компьютерным шахматам с 2018 года, выиграв первые шесть турниров и другие.

Stockfish прочно зарекомендовал себя как сильнейший шахматный движок в мире до 2017 года, поэтому шахматный мир был потрясен до глубины души, когда он проиграл односторонний матч компьютерной программе на нейронной сети под названием AlphaZero. Этот проигрыш AlphaZero привело к развитию других проектов нейронных сетей (в первую очередь Leela Chess Zero, Leelenstein и Alliestein).

Хотя Stockfish сохранил свое место в списке шахматных движков, движки на нейронных сетях становились все ближе и ближе по силе Stockfish. В сентябре 2020 г. Выпущен Stockfish 12, и было объявлено, что Stockfish поглотил проект Stockfish + NNUE (NNUE означает эффективно обновляемая нейронная сеть).

Что означает этот ход?

Stockfish 12 добавил возможности оценки нейронной сети.

Посмотрите это видео о сильнейших шахматных движках всех времен. Еще одно доказательство, что Stockfish самый сильный движок всех времен.

Достижения Шахматного движка Stockfish

Stockfish также выиграл турнир TCEC Fischer Random 2014 года, быстрый турнир TCEC 10 сезона и три кубка TCEC (в 2018, 2019 и 2020 годах соответственно).

Stockfish доминировал в компьютерных шахматных чемпионатах Chess.com

Чемпионат Chess.com по компьютерным шахматам также стал победой для Stockfish. Он выиграл восемь из 13 соревнований до 2020 года и занял второе место в четырех других. Stockfish продолжает побеждать движки на нейронных сетях в большинстве соревнований.

Партии Шахматного движка Stockfish

Stockfish жертвует пешку в начале дебюта и получает большое преимущество после 13. Rd3. После 18. Rh4, все фигуры Stockfish активны и развиты, в то время как фигуры AlphaZero находятся на заднем ряду (кроме ферзя):

Все фигуры Stockfish активны и развиты после 18 Rh4.

Жертва после 19. Bc4! и затем мощный ход 20. Nce4! который быстро заканчивают игру.

Во втором примере мы видим, как Stockfish громит еще один известный шахматный движок, который годами стоял на вершине мира шахматных движков: Rybka.

Stockfish получает приятное преимущество в дебюте, которое сохраняет на протяжении всей игры. Фейерверк начинается после 28. Bxh6+!

Stockfish вскрывает королевский фланг Рыбки ходом 28 Bxh6!

Stockfish продолжает прессовать Рыбку с помощью жертвы качества на 31-м ходу и доминирует до конца игры после 33. Kh7:

Где скачать шахматный движок Stockfish?

Stockfish абсолютно бесплатный с открытым исходным кодом. Поэтому его можете скачать любой пользователь. Ниже представлена ссылка на официальный сайт:

Доступен на операционных системах: Windows, Mac OS X, Linux, iOS, Android.

Текущая версия: Stockfish 13 (19 февраля 2021 года).

Итоги:

Теперь вы знаете, что такое Stockfish и многое другое.

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

Источник

Stockfish постоянно занимает первое или почти верхнее место в большинстве рейтинговых списков шахматных движков и является самым мощным шахматным движком с процессором в мире. Он выигрывал неофициальные чемпионаты мира по компьютерным шахматам в сезонах 6 (2014), 9 (2016), 11 (2018), 12 (2018), 13 (2018), 14 (2019), 16 (2019), 18 (2020), 19 (2020 г.), 20 (2020–21 гг.) И 21 (2021 г.). Он занял второе место в сезонах 5 (2013), 7 (2014), 8 (2015), 15 (2019) и 17 (2020).

Stockfish является производным от Glaurung, движка с открытым исходным кодом от Торда Ромстада, выпущенного в 2004 году.

СОДЕРЖАНИЕ

Функции

История

Примерно в 2011 году Ромстад решил отказаться от участия в Stockfish, чтобы больше времени уделять своему новому шахматному приложению для iOS.

Читайте также:  что значат цифры 365

18 июня 2014 года Марко Костальба объявил, что «решил уйти с должности сопровождающего Stockfish», и попросил сообщество создать форк текущей версии и продолжить ее разработку. Официальный репозиторий, которым управляет группа добровольцев из основных разработчиков Stockfish, был создан вскоре после этого и в настоящее время управляет развитием проекта.

В июне 2020 года разработчики обсудили форк эффективно обновляемой нейронной сети (NNUE), представленный компьютерными сёги- программистами под названием Stockfish NNUE. В июле 2020 года в новостях о шахматах сообщалось, что Stockfish NNUE «открыл новые возможности в компьютерных шахматах, включив нейронную сеть в и без того невероятно мощный шахматный движок Stockfish». Затем было объявлено о слиянии NNUE с Stockfish, и стали доступны сборки для разработки.

2 сентября 2020 года была выпущена двенадцатая версия Stockfish, включающая вышеупомянутое усовершенствование нейронной сети. Согласно объявлению в блоге, эта новая версия «играет значительно сильнее, чем любая из ее предшественников», обычно выигрывая в десять раз больше игр, чем проигрывает в сравнении с одиннадцатой версией.

Фиштест

Результаты конкурса

Stockfish против Накамуры

Участие в TCEC

30 мая 2014 года Stockfish 170514 (разрабатываемая версия Stockfish 5 с поддержкой tablebase) убедительно выиграл 6-й сезон TCEC, набрав 35,5–28,5 очков против Komodo 7x в Суперфинале. На следующий день был выпущен Stockfish 5. В 7-м сезоне TCEC Stockfish снова попал в Суперфинал, но проиграл Комодо со счетом 30,5–33,5. В 8-м сезоне TCEC, несмотря на потери времени, вызванные ошибками в коде, Stockfish, тем не менее, снова прошел квалификацию в Суперфинал, но проиграл Комодо в последующем матче из 100 игр 46,5–53,5. В 9 сезоне Stockfish победил Houdini 5 со счетом 54,5 против 45,5.

Компьютерный шахматный турнир

Chess.com Чемпионат по компьютерным шахматам

Мероприятие Год Контроль времени Результат Ссылка
CCC 1: Rapid Rumble (Ускоренная битва) 2018 г. 15 + 5 1-й
CCC 2: Блиц-битва 2018 г. 5 + 2 1-й
CCC 3: Быстрый Redux 2019 г. 30 + 5 1-й
CCC 4: Bullet Brawl (драка с пулями) 2019 г. 1 + 2 1-й
CCC 5: Эскалация 2019 г. 10 + 5 1-й
CCC 6: Зимняя классика 2019 г. 10 + 10 1-й
CCC 7: Blitz Bonanza 2019 г. 5 + 2 2-й
CCC 8: Глубокое погружение 2019 г. 15 + 5 1-й
CCC 9: Перчатка 2019 г. 5 + 2, 10 + 5 1-й
CCC 10: двойные цифры 2019 г. 10 + 3 2-й
CCC 11 2019 г. 30 + 5 2-й
CCC 12: Bullet Madness! 2020 г. 1 + 1 3-й
CCC 13: семиугольник 2020 г. 5 + 5 2-й

Stockfish против AlphaZero

Платформы

Производные

Источник

«Победа сегфолтом» и другие эксплойты шахматных движков

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

Прелюдия

Universal Chess Interface (UCI) — это открытый коммуникационный протокол, позволяющий шахматным движкам общаться с интерфейсами пользователя. Он поддерживается практически каждым шахматным движком, и через этот интерфейс мы будем подключать наш «запутыватель» (фаззер, fuzzer).

Stockfish

Нотация Форсайта-Эдвардса (FEN)

Вот FEN для начальной позиции в стандартных шахматах:

Слева направо мы начинаем с позиции фигуры по горизонтали, начиная с 8 (пустые поля обозначаются числом), затем указывается активный цвет (в данном случае w — белый), после чего идут поля, относящиеся к рокировке и взятию на проходе, и, наконец, количество полуходов и полных ходов.

Отображение игрового состояния

В начале сессии UCI передача команды d приказывает движку отобразить текущую конфигурацию:

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

Начальные ходы

Приступить к запутыванию («фаззингу») UCI довольно просто. Большинство движков получает ввод по stdin, и большинство стандартных фаззеров поддерживают фаззинг по stdin. Можно начать с самого популярного сегодня фаззера afl.

Мы компилируем последнюю версию Stockfish из исходников, заменяем gcc/g++ на их аналоги из afl (это позволяет нам инструментировать приложение и повысить эффективность фаззинга; но вскоре мы увидим, что на самом деле это необязательно).

Создаём очень простой входной файл:

Даже при такой простой конфигурации мы почти сразу же можем найти крэши…

Миттельшпиль

Оказывается, что парсер FEN — довольно серьёзный источник уязвимости Stockfish. При передаче подвергнутых фаззингу входных данных FEN движок Stockfish часто вылетает. Однако большинство вылетов довольно неинтересны. Вылет движка ещё до начала игры не даёт нам никаких возможностей выиграть, и, как оказалось, мы можем добиться большего…

Читайте также:  что значит спать вместе

NNUE (перевёрнутая EUNN, расшифровывающаяся как Efficiently Updatable Neural Network) — это часть ядра Stockfish, реализующая искусственный интеллект, благодаря которому движок стал таким сильным. Похоже, у нас появился путь к функциям вычислений в ядре Stockfish, и настало время проверить, сможем ли мы использовать их, чтобы получить преимущество над машиной.

Эндшпиль

Итак, какие же входящие данные проделали весь путь до нейросети Stockfish? (Примечание: эти входящие данные подчищены для устранения артефактов фаззинга, не относящихся к багу.)

Что происходит, когда эта информация передаётся Stockfish?

Внимательные читатели заметили, что, строго говоря, полученная нотация FEN недопустима — чёрным поставлен шах слоном на f7, поэтому ход не может быть за белыми. Однако вместо возврата отсутствия допустимых ходов Stockfish предлагает возможные ходы вплоть до указанной глубины, и на этом этапе вылет возникает глубоко внутри его нейронной сети.

Структура этого бага довольно проста: парсер FEN допускает слишком большие вольности, и это позволяет нам структурировать игры таким образом, чтобы запутать Stockfish. Наша следующая цель — увидеть, сможем ли мы развить этот эксплоит.

Разные игры в зависимости от того, чей ход

Что происходит, когда Stockfish интерпретирует эти входящие данные?

Несмотря на то, что полученная доска имеет одинаково недопустимую конфигурацию, поля шахов неодинаковы (и неверны). Как будто бы Stockfish использует фигуры в исходных (зловредных) входящих данных в своём анализе фигур, ставящих шах. В случае хода чёрных шах ставит фигура на e7, в случае хода белых фигуры, ставящей шах на a7, нет. Одинаковые входящие данные, две различные интерпретации и два разных результата.

Соединяем всё вместе

Теперь у нас есть все фрагменты пазла, чтобы попытаться создать достаточно реалистичную атаку на Stockfish — парсер FEN, принимающий широкий диапазон потенциально зловредных входящих данных, потенциально позволяющих нам создать игру специально для Stockfish. Эти входящие данные будут интерпретироваться Stockfish контролируемым нами способом, поскольку мы уже видели множество способов вызвать вылет внутри нейросети, когда Stockfish пытается вычислить следующий ход. Однако на самом деле мы можем сделать нечто более хитрое — убедить Stockfish, что допустимых ходов больше нет.

Давайте рассмотрим следующую позицию (ход чёрных): чёрным поставлен шах пешкой на d7, но они могут уйти из под шаха (Kxd7 или e8d7).

При обычных условиях Stockfish без проблем найдёт наилучший следующий ход для чёрных:

Когда мы пытаемся использовать Stockfish найти следующий наилучший ход, движку это сделать не удается:

go searchmove
info string NNUE evaluation using nn-62ef826d1a6d.nnue enabled
info depth 0 score mate 0
bestmove (none)

Мы успешно сбили Stockfish с толку.

Эпилог

Можно ли использовать что-нибудь из этого на практике? Можем ли мы применить какой-то из описанных здесь эксплойтов для победы в шахматной партии?

Для эксплуатации этих уязвимостей требуется, чтобы шахматный движок принимал в процессе игры состояние игры в формате FEN (или в каком-то другом формате, содержащем нашу «отравленную» строку FEN).

Вероятно ли это? Не особо, но это определённо в пределах возможного — откладывание партии и раньше было обычной частью шахмат, да и сейчас иногда случается, бывает, что происходят перезапуски машины (а следовательно, машине необходимо передать самое последнее состояние игры), к тому же существует активное сообщество игроков, играющих днями, неделями или месяцами при помощи движков и компактных форматов игр. Поэтому такой вектор атак, по крайней мере, теоретически, вполне возможен. (См. также #KingMe Attack.)

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

Другие примечания и ссылки

Атака Win by Segfault

Создав из шахматных задач более качественный корпус фаззинга, я получила пример атаки «отравленной» FEN: создаётся FEN, содержащая правильную комбинацию доски, которая при анализе приводит к segfault-ам. Вылет не всегда воспроизводится стабильно, но происходит примерно в половине случаев (в отладчике в 100% случаев).

Питер Бинделс выяснил, что к выведенной выше строке FEN можно прийти через следующую последовательность ходов по правилам:

d3 c5
Bf4 d5
e3 e5
Qh5 g5
Qxg5 f5
Qxf5 c4
b4 c3
a4 Qe7
Qxe5 Bf5
Qxd5 Bh6
Qxf5 Qe6
Qxh7 Ne7
Qxh6 Nc8
Qg7 Nc6
Qxb7 Nd4
Qxa7 O-O
Qa6 Nxc2+
Kd1 Nd4
Be2 Nf3
Bxf3 Qb6
Be4 Qg6
Nd2 Qxg2
Kc2 Qxf2
Ngf3 Qxf3
Rhf1 Qxf1
Rc1 Qh3
Kb3 Qh6
Nc4 Qc6
Nb6 Qxb6
Rc2 Qc6
Ka3 Qb6
h3

Источник

Строительный портал