Stockfish

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
Stockfish
Stock logo.jpg
DroidFish.jpg
Тип Шаховий рушій
Розробник Марко Костальба
Джуна Кііскі
Гарі Ліндскотт
Торд Ромстад[1]
Перший випуск 2 листопада 2008
Стабільний випуск 10 (29 листопада, 2018; 13 місяців тому (2018-11-29))
Версії 11 (18 січня 2020)[2]
Репозиторій github.com/official-stockfish/Stockfish
Операційна система Microsoft Windows
macOS
Linux
iOS
Android
Написано на C++
Ліцензія GNU GPLv3
stockfishchess.org

Stockfish (Стокфіш) — це вільний і відкритий шаховий рушій[3] UCI, доступний для різних персональних і мобільних платформ. Він розроблений Марко Костальбою, Джуно Кійскі, Гарі Ліндскоттом і Тордом Ромстадом, з багатьма внесками від спільноти розробників.

Stockfish займає перші місця рейтингових списків шахових рушіїв і серед програм з відкритим початковим кодом є найсильнішою. Він виграв неофіційні чемпіонати світу з комп'ютерних шахів у 6 сезоні (2014), 9 (2016), 11 (2018), 12 (2018) та 13 (2018)). Також він посів другі місця на турнірах у 5 сезоні (2013), 7 (2014) та 8 (2015). Stockfish походить від Glaurung[4], рушія з відкритим вихідним кодом, написаним Тордом Ромстадом[5].

Особливості[ред. | ред. код]

Stockfish може використовувати до 512 потоків у багатопроцесорних системах. Максимальний розмір його таблиці транспозиції[en] — 128 Гб. Stockfish реалізує передовий альфа-бета-пошук і використовує бітові дошки[en]. Порівняно з іншими рушіями він характеризується великою глибиною пошуку, що частково обумовлено більш агресивним відсіченнням та зниженням швидкості руху[Куди?][6][7].

Stockfish підтримує Chess960, що є однією з функцій, успадкованих від Glaurung. Підтримка баз даних ендшпіля була інтегрована в Stockfish в 2014 році. У 2018 році була додана підтримка 7-ступінчастої бази даних ендшпілю, незабаром після того, як вона стала доступною.

Історія створення[ред. | ред. код]

Програма походить від Glaurung, шахового рушія з відкритим кодом, створеного Ромстадом і вперше випущеного в 2004 році. За чотири роки, Костальба, натхненний сильним двигуном з відкритим вихідним кодом, вирішив розгорнути цей проект. Він назвав його Stockfish, тому що він був «виготовлений в Норвегії та приготований в Італії» (Костальба - італієць, Ромстад - норвежець). Перша версія Stockfish 1.0 була випущена в листопаді 2008 року [8][9] . Деякий час нові ідеї та зміни коду були розподілені між двома програмами , аж до того, як Ромстад вирішив припинити Glaurung на користь Stockfish, який був тоді більш просунутим рушієм [10]. Останній Glaurung (версія 2.2) був випущений в грудні 2008 року.

Минуло близько року як Ромстад вирішив відмовитися від своєї участі в Stockfish і вважав за краще провести свій час над опрацюванням нового додатку для шахів в Інтернеті.

18 червня 2014 року Марко Костальба оголосив, що "вирішив піти у відставку", і запропонував спільноті створити розвилку поточної версії та продовжувати її розвиток [11]. Офіційне сховище, яким керує волонтерська група основних розробників Stockfish, була створена незабаром після цього і в даний час керує розробкою проекту[12].

Тестування[ред. | ред. код]

З 2013 року Stockfish розроблено з використанням розподіленої системи обчислення "Fishtest", де волонтери можуть пожертвувати процесорний час для тестування вдосконалень програми[13][14][15].

Зміни до ігрового коду приймаються або відхиляються на підставі результатів відтворення десятків тисяч ігор на основі старої "референтної" версії програми, використовуючи тестування послідовного коефіцієнта ймовірності. Тести на рамки перевіряються за допомогою хі-квадратного тесту, і тільки якщо результати є статистично-значимими, вони вважаються достовірними та використовуються для перегляду програмного коду.

Станом на червень 2018 року, система використала в загальній складності більше 1200 років часу процесора, щоб зіграти більш ніж 840 мільйонів шахових ігор[16]. Після заснування FishTex, Stockfish зазнав вибухового зростання на 120 пунктів рейтингу ELO за останні 12 місяців, це вивело його на перше місце у всіх основних рейтингових списках[17][18]. Після релізу Stockfish 7, автор FishTest Гаррі Ліндскотт був доданий до офіційного списку авторів, підтверджуючи свій внесок у силу Stockfish.

Результати змагань[ред. | ред. код]

Участь в TCEC[ред. | ред. код]

У 2013 році Stockfish закінчила другий турнір у TCEC сезону 4 і 5, і з фінальними оцінками 23-25 ​​ проти Houdini 3 і проти Komodo 1142. 5 сезон був відомий виграшем команди Komodo, і вони взяли нагороду. На жаль, творець програми Дон Дайлі отримав її посмертно. У його честь версія Stockfish, яка була випущена незабаром після цього сезону, була названа "Stockfish DD"[19] .

30 травня 2014 року Stockfish 170514 (розробка версії Stockfish 5 з підтримкою database) переконливо виграла TCEC 6 сезону, набравши 35,5-28,5 проти Komodo 7x у Суперфіналі[20]. Stockfish 5 був випущений наступного дня[21]. У сезоні TCEC 7 Stockfish знову потрапив у Суперфінал, але поступився Komodo з рахунком 30.5-33.5[20]. У TCEC 8 сезоні, незважаючи на втрати в часі, спричинені багі-кодом, Stockfish все ж таки кваліфікувався ще раз для Суперфіналу, але втратив наступний 100-партійний матч з рахунком 46,5-53,5 - в результаті перемога для Komodo.[20]

Stockfish version 8 є переможцем сезону 9 сезону 2016 TCEC проти Houdini версії 5 з рахунком 54.5 - 45.5 [22]. Stockfish завершив сезон 10 TCEC на 3 сходинці і виграв сезони 11 (59 - 41 проти Houdini 6,03)[23] , 12 (60 - 40 проти Комодо 12.1.1)[24] , і 13 (55 - 45 проти Комодо 2155.00)[25] переконливо[26].

Stockfish проти Накамури[ред. | ред. код]

Сила Stockfish по відношенню до кращих шахових гравців в світі була найбільш помітною у матчі з гросмейстером Хікару Накамурою (рейтинг 2798) у серпні 2014 року. У перших двох матчах Накамура мав допомогу старої версії Rybka, а у наступних двох іграх він не отримав допомоги. Накамура був найкращим шаховим гравцем у світі в світі під час матчу, тоді як Stockfish було відмовлено у використанні його відкриваючої книги, а також на базі базових ігор. Stockfish виграв кожну половину матчу 1,5 - 0,5. Обидва виграші Stockfish виникли з позицій, в яких Накамура, як це характерно для його стилю гри, вимагає перемоги, а не погодитися на нічию[27].

Підхід штучного інтелекту, розроблений Жан-Марком Аліотом з Інституту інформаційних досліджень Тулузи ("Тулузький науково-дослідний інститут інформатики"), в якому порівнюється шаховий гросмейстер із "Штокфішем", визнав Магнуса Карлсена найкращим гравцем всіх час, тому що він мав найвищу ймовірність того, що всі Чемпіони світу з шахів відіграють усі варіанти партій, які запропонував Stockfish[28].

Шаховий турнір серед комп'ютерів[ред. | ред. код]

У листопаді 2017 року chess.com провів відкритий турнір із десяти найсильніших шахових рушіїв, який веде до "Суперфіналу" турніру між двома фіналістами - Stockfish та Houdini. У 20-грі суперфіналу Stockfish переміг Houdini з рахунком 10.5-9.5. П'ять ігор були вирішальними. З вирішальних ігор, три гри були виграні Стокфішом (один за чорних), і дві гри виграв Гудіні (вигравши за чорних). Середня тривалість гри становила 100 ходів[29][30]. Турнір був організований за допомогою різноманітних контролів часу, а двигунам виділили однакову обчислювальну підтримку; кожен з яких має свій спеціальний віртуалізований екземпляр HyperThreaded Intel Xeon 2,90 ГГц (два процесори кожен із яких 18 ядер) з оперативною пам'яттю 60 Гб, що працює на сервері на базі Windows[29].

Stockfish також виграв версію цього чемпіонату 2018 року, знову здобувши перемогу у фіналі над Houdini - на цей раз з рахунком 120/200 (перемоги / кількість матчів). Під час бонусно-ігрового сегменту цього турніру Стокфіш програв партію проти рушія нейронної мережі Leela Chess Zero.

У внутрішніх тестах розробника Leela Chess Zero (який також є одним із розробників Stockfish), з обома рушіями, що працюють на такій самій апаратурі, Stockfish виграв 76 ігор, Leela Chess Zero виграв 16 ігор, і було 308 нічиїх[31].

Stockfish проти AlphaZero[ред. | ред. код]

У грудні 2017 року Stockfish 8 був використаний як еталон для оцінки підрозділу Google Deepmind's AlphaZero, при цьому кожен двигун підтримується різними апаратними засобами. AlphaZero навчався за допомогою самостійної гри на загальну суму дев'ять годин і досягав рівня Stockfish лише після чотирьох.[32][33] Stockfish було виділено 64 потоків та розмір хешу 1 Гб; AlphaZero підтримувався чотирма спеціальними TPU-програмами. Кожній програмі було надано одну хвилину часу на мислення.

У 100 матчах з нормальної стартової позиції AlphaZero виграв 25 ігор у білими, виграв 3 за чорних, та витягнув решту 72 з 0 втратами (ничиї).[34] AlphaZero також зіграв дванадцять 100 ігрових матчів проти Stockfish, для остаточного рахунку: 290 перемог, 886 ничиїх та 24 поразок, для точної оцінки 733 : 467. [35] Дослідження не було і Google відмовився коментувати до публікації[34].

У відповідь на це розробник Stockfish Торд Ромстад прокоментував: "Результати матчу самі по собі не є особливо значущими через досить дивний вибір часу контролю та налаштування параметрів Stockfish: ігри були відтворені в заданий час 1 хвилина / хід, що означає, що Stockfish не використовує свій час раціонально (багато сил було вжито, щоб визначити для Stockfish критичні точки в грі і вирішити, коли витратити додатковий час на хід). У версії Stockfish, що використовується, він грає з набагато більшою кількістю пошукових потоків, ніж коли-небудь отримував. Я вважаю, що відсоток нічиїх був би набагато вище в матчі з більш нормальними умовами "[36].

Хікару Накамура також проявив скептицизм, дивлячись на результати, заявивши: "Я не обов'язково ставлюсь з довірою до результатів просто тому, що я розумію, що AlphaZero в основному використовує суперкомп'ютер Google, а Stockfish не працює на цьому обладнанні, Stockfish в основному працює на тому, що й мій ноутбук. Якщо ви хочете, щоб був матч, який можна порівняти, ви повинні зробити, щоб Stockfish працював на суперкомп'ютері також "[36].

Платформи[ред. | ред. код]

Випуск версій та версії розробки доступні як вихідний код C++ і як попередньо скомпільовані версії для Microsoft Windows, macOS, Linux 32-розрядні / 64-розрядні та Android.

Stockfish був[коли?] дуже популярним рушієм для різних платформ. На робочому столі[якому?], це шаховий рушій за замовчуванням в комплекті з програмами інтерфейсу Internet Chess Club BlitzIn і Dasher. На мобільних платформах він був включений в додаток Stockfish, SmallFish і Droidfish. Інші графічні користувацькі інтерфейси, що підтримують Stockfish, включають Fritz, Arena, Stockfish для Mac та PyChess. Станом на березень 2017 року Stockfish - це AI, що використовується в Lichess, популярному шаховому сайті в Інтернеті.

Примітки[ред. | ред. код]

  1. Stockfish/src/uci.cpp. Процитовано 18 March 2016. 
  2. Release 11 — 2020.
  3. Chabris, Christopher. The Real Kings of Chess Are Computers. Wall Street Journal. Процитовано 18 вересня 2015. 
  4. Glaurung – UCI chess engine. GitHub. tord@glaurungchess.com. 
  5. Eade, James. Chess For Dummies. Hoboken, New Jersey: John Wiley & Sons. p. 476. Процитовано 2 січня 2017.. 
  6. Kaufman, Larry. Stockfish depth vs. others; challenge. talkchess.com (en). Процитовано 24 листопада 2013. 
  7. Kislik, Erik. Analyze TCEC Superfinal. susanpolgar.blogspot.com. Процитовано 7 червня 2014. 
  8. About. stockfishchess.org. Процитовано 5 березня 2014.. 
  9. Costalba, Marco (2 листопада 2008.). Stockfish 1.0. talkchess.com. Процитовано 6 березня 2014.. 
  10. Romstad, Tord (5 вересня 2009.). Re: Stockfish - Glaurung. wbec-ridderkerk.forumotion.com. Процитовано 5 березня 2014.. 
  11. Costalba, Marco (18 червня 2014).). Step down. groups.google.com. Процитовано 19 червня 2014.. 
  12. Linscott, Gary ((18 червня 2014)). New official repository. groups.google.com. Процитовано 19 червня 2014.. 
  13. Stockfish Testing Queue. tests.stockfishchess.org. Процитовано 7 березня 2014.. 
  14. Get Involved. stockfishchess.org. Процитовано 8 березня 2014. 
  15. Costalba, Marco (1 травня 2013.). Fishtest Distributed Testing Framework. talkchess.com. Процитовано 18 квітня 2014.. 
  16. Stockfish Testing Framework - Users. test.stockfishchess.org. Процитовано 14 червня 2018.. 
  17. "Fast GM Rating List". 
  18. "CCRL Rating List". 2014-05-30. Архів оригіналу за 2014-05-30. 
  19. "Stockfish Blog on Stockfish DD". 
  20. а б в "TCEC Season Archive". tcec.chessdom.com. Процитовано 9 січня 2015.. 
  21. Costalba, Marco. "Stockfish 5". talkchess.com. Процитовано 19 червня 2014.. 
  22. "Stockfish is the TCEC Season 9 Grand Champion". Chessdom.com. Процитовано 5 грудня 2016.. 
  23. "TCEC Season 11 Superfinal 2018". chess24.com. Процитовано 2018-11-18.. 
  24. "TCEC Season 12 Superfinal 2018". chess24.com. Процитовано 2018-11-18. 
  25. "TCEC Season 13 Superfinal 2018". chess24.com. Процитовано 2018-11-18.. 
  26. "Stockfish convincingly wins TCEC Season 11". Chess.dom. Процитовано 18 квітня 2018.. 
  27. Klein, Mike (24 серпня 2014). Stockfish Outlasts "Rybkamura". 
  28. "When artificial intelligence evaluates chess champions". https://en.wikipedia.org/wiki/ScienceDaily. 25 квітня 2017. 
  29. а б Chess.com announces computer chess championship.. Chess.com. 
  30. Stockfish wins chess.com computer championship. 
  31. LC0 vs. Stockfish. 
  32. Knapton Sarah;, Watson Leon; (6 грудня 2017.). "Entire human chess knowledge learned and surpassed by DeepMind's AlphaZero in four hours". Telegraph.co.uk. Процитовано 6 грудня 2017.. 
  33. Vincent, James (6 грудня 2017.). "DeepMind's AI became a superhuman chess player in a few hours, just for fun". https://en.wikipedia.org/wiki/The_Verge. Процитовано 6 грудня 2017.. 
  34. а б "'Superhuman' Google AI claims chess crown". BBC News. 6 грудня 2017. Процитовано 7 грудня 2017.. 
  35. "DeepMind's AlphaZero crushes chess". chess.com. 6 груденя 2017. Процитовано 13 груденя 2017. 
  36. а б "AlphaZero: Reactions From Top GMs, Stockfish Author". Chess.com. 8 грудня 2017. Процитовано 13 грудня 2017. 

Додаткові матеріали[ред. | ред. код]

Посилання[ред. | ред. код]