Stockfish

motore scacchistico open source

Stockfish (inglese per stoccafisso) è un motore scacchistico UCI open source multipiattaforma, sviluppato originariamente da Tord Romstad e Marco Costalba come fork di Glaurung, altro motore open-source precedentemente sviluppato dallo stesso Romstad, ed è correntemente mantenuto da una comunità di programmatori open-source. Dalla versione numero 12 il programma ha implementato una rete neurale artificiale ad apprendimento profondo.[1]

Stockfish
software
Logo
Logo
Droidfish, applicazione Android che implementa una GUI per Stockfish
Droidfish, applicazione Android che implementa una GUI per Stockfish
Droidfish, applicazione Android che implementa una GUI per Stockfish
GenereMotore scacchistico
SviluppatoreTord Romstad
Joona Kiiski
Marco Costalba
Data prima versione2 novembre 2008
Ultima versione16.1 (24 febbraio 2024)
Sistema operativoMultipiattaforma
LinguaggioC++
LicenzaGNU General Public License
(licenza libera)
Sito webstockfishchess.org/

Da circa metà degli anni 2010 Stockfish ha occupato ripetutamente la prima posizione nelle principali graduatorie di motori scacchistici e (al 2018) è considerato il più forte motore scacchistico open source e uno dei più forti motori in assoluto, insieme a Lc0 e Komodo.[2][3][4] Ha vinto tre edizioni (stagioni 6, 9 e 11) e si è classificato tre volte secondo (stagioni 5, 7 e 8) nel Top Chess Engine Championship, considerato il campionato del mondo non ufficiale di scacchi per computer.

Per via della sua forza di gioco e della licenza libera sotto la quale è distribuito, Stockfish è diventato un motore molto popolare su svariate piattaforme. Può essere utilizzato su una generica interfaccia utente con supporto per il protocollo UCI[5][6], è il motore predefinito delle interfacce desktop BlitzIn e Dasher per Internet Chess Club e di applicazioni mobile come SmallFish e Droidfish, e a partire dal marzo 2017 è usato nel backend di Lichess.[7]

Caratteristiche modifica

Stockfish usa una rappresentazione della posizione tramite bitboard, supporta fino a 512 thread e ha una dimensione massima della hash table di trasposizione pari a 1 TB. Implementa una sofisticata ricerca ad albero con potatura alfa-beta e, in confronto con altri motori, ha una profondità di ricerca relativamente elevata, dovuta in parte alla potatura aggressiva e alla late move reduction.[8][9] Supporta gli scacchi960, eredità di Glaurung e, dal 2014, integra il supporto per le tablebase Syzygy.[10]

Le versioni stabili e beta sono disponibili sotto forma di codice sorgente C++ e di binari precompilati per Microsoft Windows, macOS, Linux 32-bit/64-bit e Android.

Storia modifica

Il software è nato come fork di Glaurung, motore scacchistico open source sviluppato da Romstad e distribuito inizialmente nel 2004. Quattro anni dopo Marco Costalba sviluppò Stockfish come fork di Glaurung, e il nome è dovuto al fatto che il programma fosse "prodotto in Norvegia e cucinato in Italia", in riferimento alle nazionalità dei due sviluppatori. La versione 1.0 è stata distribuita nel novembre 2008.[11][12] Per un certo periodo diverse idee e modifiche sono state trasferite bidirezionalmente tra i due progetti, fino a quando Romstad decise di abbandonare lo sviluppo di Glaurung (l'ultima versione è stata distribuita nel dicembre 2008) a favore dello sviluppo di Stockfish, che era il più avanzato tra i due progetti.[13]

Nel 2011 Romstad ha abbandonato lo sviluppo di Stockfish, e nel 2014 anche Costalba ha abbandonato il progetto, che è stato successivamente mantenuto da una comunità di programmatori[14] in un nuovo repository gestito da un gruppo di volontari.[15]

Nel luglio del 2020 il team di Stockfish annuncia di voler implementare una rete neurale artificiale nel progetto,[16] prendendo le mosse dal lavoro di AlphaZero e dal progetto open source conseguente, Leela Chess Zero. Ciò porterà al rilascio in settembre di Stockfish 12.

Dal febbraio del 2021 con il rilascio della versione 13 il team di Stockfish ha annunciato una collaborazione con il gruppo di Leela Chess,[17] che ha portato al rilascio, il successivo 2 luglio, di Stockfish 14.[18] Il nuovo rilascio ha guadagnato almeno 400 punti Elo rispetto alla versione 7.[19]

Causa legale contro Chessbase modifica

Nel febbraio del 2021, dopo il rilascio di Stockfish 13, uno dei fondatori del progetto, Tom Romstad, ha accusato l'azienda tedesca ChessBase di aver utilizzato il loro codice per il rilascio del motore scacchistico Fat Fritz 2 senza aver rispettato la licenza GPLv3. Il cosiddetto copyleft della GNU, utilizzato da Stockfish, permette di copiare, modificare e migliorare un software a patto che il codice sorgente venga distribuito insieme al programma, cosa incompatibile con il carattere proprietario di Fritz e derivati.[20] Il 18 febbraio viene rilasciato un comunicato stampa congiunto Stockfish, Leela Chess Zero e Lichess, dove si sostiene che Fat Fritz 2 non sia altro che Stockfish 13 con una diversa rete neurale e con una forza addirittura minore del suo omologo.[21] Intervistato da Chess.com, Matthias Wüllenweber, uno dei fondatori dell'azienda tedesca, ha dichiarato che il debito di Fat Fritz 2 verso Stockfish è sempre stato chiaro nella presentazione del programma, ma che è stato un errore non essersi prima confrontati con il gruppo del motore open source, come era avvenuto per la prima versione di Fat Fritz (Fritz 17), quando, secondo Wüllenweber, ci sarebbe stato un confronto preventivo con il gruppo di Leela Chess.[22]

Nel novembre del 2022, il tribunale di Monaco ha stabilito che l'azienda tedesca può continuare a distribuire i prodotti incriminati a patto che utilizzi la licenza GPL 3.0 e informi adeguatamente i suoi clienti dell'utilizzo del codice sorgente di Stockfish. Per la durata di un anno, tuttavia, Chessbase non potrà utilizzare il software di Stockfish nei propri prodotti e dovrà rendere esplicito sul proprio sito web l'utilizzo di Stockfish in Fat Fritz 2 e Houdini 6. Chessbase dovrà anche rendere pubblico l'utilizzo di qualsiasi software open source e distribuire il relativo codice sorgente. A tal fine viene istituito il dominio foss.chessbase.com, dove "FOSS" sta per "Free and Open Source Software", che sarà a cura di un ufficiale interno all'azienda che prenderà il nome di "Free Software Compliance Officer". La violazione di questo accordo prevede una richiesta di risarcimento a favore della Free Software Foundation Europe.[23]

Fishtest modifica

A partire dal 2013 Stockfish ha fatto uso nello sviluppo di un framework di test distribuito chiamato Fishtest, sostenuto da volontari i quali donano tempo CPU per l'esecuzione dei test.[24][25][26] Le modifiche alla logica del motore vengono accettate se introducono un miglioramento statisticamente significativo della performance di gioco, misurata tramite test del rapporto di probabilità sequenziale giocando decine di migliaia di partite contro una precedente istanza di riferimento del software.

Al giugno 2017 Fishtest ha impiegato oltre 745 anni di tempo CPU per giocare oltre 485 milioni di partite.[27] L'introduzione di Fishtest ha rapidamente aumentato la forza di gioco di Stockfish di circa 120 punti Elo in 12 mesi, rendendolo uno dei motori più forti al mondo,[28][29] motivo per il quale Gary Linscott, autore di Fishtest, è stato aggiunto alla lista degli autori del progetto a partire da Stockfish 7.

Risultati modifica

Top Chess Engine Championship modifica

Nel 2013 Stockfish è arrivato secondo nella quarta e quinta stagione del Top Chess Engine Championship (TCEC), comunemente riferito come il campionato del mondo non ufficiale di scacchi per computer, con un punteggio superfinal di 23–25 contro Houdini 3 e contro Komodo 1142. Il team di Komodo ha accettato il titolo postumo, in quanto Don Dailey, autore principale del motore, è morto a seguito di una malattia durante la fase finale dell'evento. In suo onore, la successiva versione di Stockfish è stata chiamata "Stockfish DD".[30]

Il 30 maggio 2014 Stockfish 170514 (versione di sviluppo di Stockfish 5, con supporto per le tablebase) ha vinto nettamente la sesta stagione del TCEC Season 6, battendo Komodo 7x per 35.5-28.5 nel superfinal.[31] Il giorno successivo alla vittoria è stato distribuito Stockfish 5.[32] Nella settima stagione del TCEC Stockfish ha raggiunto la fase superfinal, dove è stato sconfitto da Komodo per 30.5-33.5.[31] Nell'ottava stagione Stockfish è stato sconfitto in superfinal da Komodo per 46.5-53.5.[31]

Nel 2016 Stockfish ha vinto la nona stagione del TCEC, battendo Houdini 5 per 54.5-45.5.[33] Nella decima stagione, Stockfish si è classificato terzo.

Nel 2018 il motore vince di gran lunga l'11 stagione del TCEC classificandosi al primo posto della Premier Division e battendo Houdini realizzando 20 vittorie, 78 pareggi e solo 2 sconfitte (entrambe giocando con il nero).

Stockfish - Nakamura modifica

Nell'agosto 2014 Stockfish ha affrontato il grande maestro Hikaru Nakamura (all'epoca con un Elo di 2798, quinto nella classifica mondiale) in un match di quattro partite. Nelle prime due partite Nakamura ha giocato con l'ausilio di Rybka, e nelle successive due partite ha giocato con il bianco e con handicap di un pedone. Stockfish ha giocato senza libro di apertura e tablebase. Il motore ha vinto entrambe le fasi del match per 1.5–0.5.[34]

Confronto tra grandi giocatori modifica

In uno studio pubblicato nell'aprile del 2017, curato da Jean-Marc Alliot presso l'Institut de recherche en informatique de Toulouse, Stockfish è stato usato come riferimento per confrontare il gioco dei più grandi campioni umani della storia, ed è risultato che Magnus Carlsen è il giocatore che ha la più alta probabilità di giocare mosse che aderiscono alle analisi di Stockfish.[35]

Torneo su chess.com modifica

Nel novembre 2017 chess.com ha organizzato un torneo tra i dieci più forti motori, con una finale tra i due più forti, nella quale Stockfish ha battuto Houdini per 10.5-9.5, ottenendo tre vittorie con il nero e due sconfitte con il bianco.[36][37] L'evento ha impiegato varie cadenze di gioco, e i motori sono stati eseguiti su un host virtuale (Intel Xeon 2.90 GHz, due processori con 18 core e hyperthreading, 60 GB RAM, Windows) su AWS.[36]

Stockfish - AlphaZero modifica

Il 5 dicembre 2017 DeepMind ha pubblicato un preprint su arXiv nel quale ha presentato AlphaZero, un nuovo algoritmo di intelligenza artificiale che supporta una varietà di giochi da tavolo. Stockfish 8 è stato usato come benchmark per valutare la performance di AlphaZero nel gioco degli scacchi. Poiché entrambi i software girano solo su piattaforme hardware mutuamente incompatibili, AlphaZero è stato eseguito su un computer equipaggiato con quattro TPU, mentre Stockfish è stato eseguito su un computer in un'istanza con 64 thread e 1 GB di hash table. I software hanno disputato un match di 100 partite con un minuto per mossa (scelta criticata da Tord Romstad)[38] e il risultato finale è stato di 25 vittorie di AlphaZero con il bianco, 3 vittorie di AlphaZero con il nero, e patta nelle 72 rimanenti partite.[39] In altri 12 match di 100 partite, giocati usando come posizione iniziale le 12 aperture più comuni nel gioco umano, AlphaZero ha totalizzato in totale 290 vittorie, 886 patte e 24 sconfitte, con un punteggio finale di 733-467.[40][41][42][39]

AlphaZero è un algoritmo di apprendimento automatico ed è stato addestrato unicamente per rinforzo nel corso di 9 ore su un cluster di TPU. Gli autori stimano che abbia superato la forza di gioco di Stockfish dopo le prime quattro ore di addestramento.[43][44]

Note modifica

  1. ^ (EN) Stockfish 12, su stockfishchess.org. URL consultato il 6 luglio 2021.
  2. ^ CCRL Blitz, su ccrl.chessdom.com, Chessdom, 4 dicembre 2020. URL consultato il 4 dicembre 2020.
  3. ^ CCRL 40/15, su ccrl.chessdom.com, Chessdom, 4 dicembre 2020. URL consultato il 4 dicembre 2020 (archiviato dall'url originale l'11 novembre 2020).
  4. ^ IPON Rating List, su inwoba.de, 6 giugno 2014. URL consultato il 1º luglio 2014 (archiviato dall'url originale il 29 maggio 2014).
  5. ^ Using the Stockfish Engine Archiviato il 9 gennaio 2018 in Internet Archive., Stockfish Support.
  6. ^ ChessEngines, PyChess Github.
  7. ^ [1]
  8. ^ Larry Kaufman, Stockfish depth vs. others; challenge, in talkchess.com, 24 novembre 2013. URL consultato l'8 marzo 2014.
  9. ^ Erik Kislik, IM Erik Kislik analyzes the TCEC Superfinal in-depth, in susanpolgar.blogspot.hu, 6 giugno 2014. URL consultato il 7 giugno 2014.
  10. ^ Stockfish development versions, in abrok.eu. URL consultato il 1º febbraio 2015 (archiviato dall'url originale l'11 novembre 2014).
  11. ^ About, in stockfishchess.org. URL consultato il 5 marzo 2014.
  12. ^ Marco Costalba, Stockfish 1.0, in talkchess.com, 2 novembre 2008. URL consultato il 6 marzo 2014.
  13. ^ Tord Romstad, Re: Stockfish - Glaurung, in wbec-ridderkerk.forumotion.com, 5 settembre 2009. URL consultato il 5 marzo 2014.
  14. ^ Marco Costalba, Step down, in groups.google.com, 18 giugno 2014. URL consultato il 19 giugno 2014.
  15. ^ Gary Linscott, New official repository, in groups.google.com, 18 giugno 2014. URL consultato il 19 giugno 2014.
  16. ^ (EN) NNUE merge #2823, su github.com. URL consultato il 6 luglio 2021.
  17. ^ (EN) Stockfish 13, su stockfishchess.org, 19 febbraio 2021. URL consultato il 6 luglio 2021.
  18. ^ (EN) Stockfish 14, su stockfishchess.org. URL consultato il 6 luglio 2021.
  19. ^ (EN) Stockfish Development Builds, su nextchessmove.com. URL consultato il 6 luglio 2021.
  20. ^ La vicenda Fat Fritz 2 – Stockfish, in Scacchierando, 26 febbraio 2021. URL consultato il 18 giugno 2021.
  21. ^ (EN) Fat Fritz 2 is a rip-off, su Lichess, 18 febbraio 2021. URL consultato il 18 giugno 2021.
  22. ^ (EN) Peter Doggers, Open Source Community Critical Of Chessbase, Fat Fritz 2, su Chess.com, 25 febbraio 2021. URL consultato il 18 giugno 2021.
  23. ^ (EN) Chessbase, Stockfish Reach Settlement Over License Violation Claim, su chess.com. URL consultato il 15 dicembre 2022.
  24. ^ Stockfish Testing Framework, in tests.stockfishchess.org. URL consultato il 7 marzo 2014.
  25. ^ Get Involved, in stockfishchess.org. URL consultato l'8 marzo 2014.
  26. ^ Marco Costalba, Fishtest Distributed Testing Framework, in talkchess.com, 1º maggio 2013. URL consultato il 18 aprile 2014.
  27. ^ Stockfish Testing Framework - Users, in test.stockfishchess.org. URL consultato il 17 giugno 2017.
  28. ^ Fast GM Rating List, su fastgm.de.
  29. ^ CCRL Rating List, su computerchess.org.uk (archiviato dall'url originale il 30 maggio 2014).
  30. ^ Stockfish Blog on Stockfish DD.
  31. ^ a b c TCEC Season Archive, in tcec.chessdom.com. URL consultato il 9 gennaio 2015 (archiviato dall'url originale il 3 maggio 2015).
  32. ^ Marco Costalba, Stockfish 5, in talkchess.com, 31 maggio 2014. URL consultato il 19 giugno 2014.
  33. ^ Stockfish is the TCEC Season 9 Grand Champion, su Chessdom. URL consultato il 5 dicembre 2016.
  34. ^ https://www.chess.com/news/stockfish-outlasts-nakamura-3634.
  35. ^ When artificial intelligence evaluates chess champions, su Science Daily, CNRS, 25 aprile 2017.
  36. ^ a b https://www.chess.com Chess.com announces computer chess championship.
  37. ^ https://www.chess.com Stockfish wins chess.com computer championship.
  38. ^ AlphaZero: Reactions From Top GMs, Stockfish Author, su chess.com, chess.com, 8 dicembre 2017. URL consultato il 13 dicembre 2017.
    «The match results by themselves are not particularly meaningful because of the rather strange choice of time controls and Stockfish parameter settings: The games were played at a fixed time of 1 minute/move, which means that Stockfish has no use of its time management heuristics (lot of effort has been put into making Stockfish identify critical points in the game and decide when to spend some extra time on a move; at a fixed time per move, the strength will suffer significantly). The version of Stockfish used is one year old, was playing with far more search threads than has ever received any significant amount of testing, and had way too small hash tables for the number of threads. I believe the percentage of draws would have been much higher in a match with more normal conditions.»
  39. ^ a b 'Superhuman' Google AI claims chess crown, in BBC News, 6 dicembre 2017. URL consultato il 7 dicembre 2017.
  40. ^ DeepMind’s AlphaZero crushes chess, su chess24.com, chess.com, 6 dicembre 2017. URL consultato il 13 dicembre 2017.
  41. ^ David Silver, Thomas Hubert, Julian Schrittwieser, Ioannis Antonoglou, Matthew Lai, Arthur Guez, Marc Lanctot, Laurent Sifre, Dharshan Kumaran, Thore Graepel, Timothy Lillicrap, Karen Simonyan, Demis Hassabis, Mastering Chess and Shogi by Self-Play with a General Reinforcement Learning Algorithm, 5 dicembre 2017.
  42. ^ DeepMind’s AI became a superhuman chess player in a few hours, just for fun, in The Verge. URL consultato il 6 dicembre 2017.
  43. ^ (EN) Sarah Knapton e Leon Watson, Entire human chess knowledge learned and surpassed by DeepMind's AlphaZero in four hours, Telegraph.co.uk, 6 dicembre 2017. URL consultato il 6 dicembre 2017.
  44. ^ James Vincent, DeepMind’s AI became a superhuman chess player in a few hours, just for fun, The Verge, 6 dicembre 2017. URL consultato il 6 dicembre 2017.

Altri progetti modifica

Collegamenti esterni modifica