Scacchierando.it
tcec-400x300

TCEC 18: una retrospettiva

L’edizione appena conclusa conferma la rapida evoluzione del mondo dei motori scacchistici

Si è conclusa ieri la 18ª edizione del TCEC, il famoso torneo di motori scacchistici ideato da Martin Thoresen e organizzato negli ultimi anni da Chessdom. Ad aggiudicarsi il primo posto è stato Stockfish, il motore open source arrivato all’ottavo successo e alla quattordicesima finale disputata, che ha sconfitto in finale la rete neurale Leela Chess Zero per 53,5 – 47,5.

In questo articolo non vogliamo però tanto concentrarci sulla cronaca del torneo – esercizio di poca utilità dato che fra pochi giorni comincerà già una nuova edizione – quanto offrire qualche istantanea sulla situazione attuale nel campo dei motori scacchistici, un mondo che ha visto molto fermento e grandi novità negli ultimi due anni.

Antefatto: l’ascesa delle reti neurali

Avevamo lasciato il TCEC nel 2018 (articolo), dopo una serie di edizioni assai monotone in cui la triade Stockfish-Houdini-Komodo aveva monopolizzato i podi per molti anni e senza che i motori in questione mostrassero differenze significative fra loro né fra una versione e la successiva. Un panorama atrofizzato che non pareva promettere bene per il futuro di questo genere di competizioni.

La situazione è stata invece rivoluzionata dall’annuncio di Google: la sua macchina per gli scacchi di nome AlphaZero, basata su una rete neurale eseguita su hardware specializzato, aveva sviluppato una forza di gioco enorme semplicemente giocando miliardi di partite contro se stessa, senza che i programmatori le avessero infuso alcuna conoscenza scacchistica a parte le regole del gioco (qui l’articolo di Scacchierando). La pubblicazione su una rivista scientifica di un primo articolo con l’annuncio della netta vittoria di AlphaZero su Stockfish e alcune partite notevoli ha generato un grande entusiasmo nel mondo scacchistico: giocatori di ogni livello, incluse le Loro Altezze Kasparov e Carlsen, hanno speso importanti parole di lode per la nuova creazione e soprattutto per il suo stile di gioco, giudicato come molto più creativo e istruttivo rispetto a quello dei tradizionali software alfa-beta.

Restava però fra gli esperti di motori un certo scetticismo riguardo alla veridicità delle dichiarazioni di Google, che non ha mai pubblicato il codice di AlphaZero né permesso al grande pubblico di sfidare la macchina con software di loro creazione. Anche la pubblicazione di un secondo articolo con maggiori dettagli tecnici e documentazione più solida sul contesto delle partite non aveva fugato tutti i dubbi.

È stato in questo momento che Gian-Carlo Pascutto, programmatore belga veterano dell’ambiente motoristico (già autore di Deep Sjeng) ha deciso di lanciarsi in un progetto assai ambizioso: creare un  motore open source che riproducesse i principi di funzionamento di AlphaZero descritti nel materiale pubblicato e che potesse sfidare i massimi motori tradizionali. Pascutto non era nuovo al mondo delle reti neurali, avendo in passato pubblicato il motore Stoofvlees (2007) e l’engine per il Go Leela. Tuttavia, era difficile stimare le probabilità di successo di un esercito di volontari chiamato a riprodurre i risultati di una delle società più ricche di capitali e cervelli del periodo attuale.

In pochi mesi, invece, l’idea ha raggiunto un successo straordinario. La prima creazione è stata un motore per il Go, Leela Zero, basato come AlphaZero esclusivamente sull’autoapprendimento a differenza delle precedenti reti neurali di Pascutto. Poco dopo l’informatico americano Gary Linscott, già autore del sistema Fishtest per testare i miglioramenti di Stockfish, ha sviluppato una variante di Leela Zero dedicata agli scacchi. La sua creazione, Leela Chess Zero, è stata annunciata sul forum di TalkChess nel gennaio 2018 e nel giro di poco più di un anno è decollata fino al vertice del mondo dei motori scacchistici, arrivando seconda dietro Stockfish nella 14ª edizione del TCEC (febbraio 2019) e battendo in finale il medesimo motore in quella successiva.

È opportuno qui ricordare che la competitività dei motori alfa-beta rispetto alle reti neurali dipende anche in buona misura dal rapporto di potenza delle macchine utilizzate. Le due categorie di engine richiedono risorse di elaborazione di genere differente e non confrontabile. Gli alfa-beta sono compilati per tradizionali macchine con i classici processori “di uso generale” prodotti da Intel, AMD o ARM, capaci di raggiungere enormi velocità ed eseguire svariati generi di calcolo (famosa in ambito scacchistico l’istruzione POPCNT, che conta i bit attivi in un gruppo di 64 bit e risulta perfetta per vari generi di valutazione dello stato di una scacchiera). Le reti neurali sono invece progettate per essere eseguite da GPU, unità di elaborazione più lente e in grado di eseguire una limitatissima varietà di operazioni, ma che in compenso possono operare in parallelo su enormi quantità di dati in ingresso. Non esiste un criterio condiviso (consumo di energia? Prezzo di mercato?) che stabilisca le condizioni per un confronto ad armi pari fra le due concezioni. Fra gli esperti è in voga il “rapporto Leela”, che confronta la velocità di elaborazione dei motori con quella osservata nella sfida originale fra AlphaZero e Stockfish, ma il criterio è abbastanza arbitrario e basato sulla discutibile assunzione che Google abbia voluto approntare una sfida equilibrata. In ogni caso è lecito pensare che l’interesse degli organizzatori sia di bilanciare l’hardware in modo da rendere quasi uguale la forza dei programmi di punta delle due categorie. Al momento questo significa, come accaduto nel TCEC, che la macchina per reti neurali risulta ben più costosa di quella per i motori tradizionali.

Il TCEC oggi

Insieme al CCC (il Computer Chess Championship organizzato da chess.com), il TCEC è il più rinomato torneo per motori scacchistici, e il vincitore può a buon diritto rivendicare il titolo di engine più forte al mondo. Il torneo è stato fondato da Martin Thoresen nel 2011, e si è disputato inizialmente con cadenza semiannuale. A partire invece dal 2018 con la 12ª edizione, il TCEC si gioca a ciclo continuo, con pochi giorni di pausa fra ciascuna edizione e la successiva, sotto l’egida di Chessdom.

Contestualmente il calendario è stato radicalmente cambiato: al posto di uno o due maxigironi seguiti da una fase ad eliminazione, i motori partecipanti sono stati divisi in cinque divisioni, organizzate gerarchicamente. La divisione più bassa è composta da nuove leve considerate promettenti degli organizzatori, per il resto vige un sistema di promozioni e retrocessioni. I motori primo e secondo classificato della massima serie si sfidano in una “superfinale” di 100 partite.

L’hardware utilizzato è naturalmente di prima classe, grazie agli sponsor e alle donazioni degli appassionati. Nell’edizione appena conclusa, i motori alfa-beta avevano a disposizione un sistema a 88 core, le reti neurali quattro schede Nvidia V100. Per entrambe le categorie erano a disposizione 128 GB di RAM nonché ulteriore memoria per le tablebase a 6 pezzi.

I software fruitori di questo sistema da sogno sono per la maggior parte nomi diversi da quelli visti nelle edizioni precedenti al 2018: sull’onda del successo di Leela sono nati negli ultimi 2-3 anni una serie di motori che hanno sovvertito le gerarchie passate. Lo stesso Pascutto ha resuscitato il suo “vecchio” motore neurale Stovflees (basato non sull’autoapprendimento ma sull’osservazione di partite di Grandi Maestri) con una nuova edizione anch’essa capace di raggiungere la massima serie del TCEC. Un team americano ha invece presentato AllieStein, combinazione del motore Allie con la rete neurale Stein pensata per superare la “soglia di originalità” necessaria per partecipare al TCEC.

Anche il fronte del classici motori alfa-beta non è stato però fermo: i giovani Ethereal e RofChade, entrati negli ultimi anni, si sono arrampicati nel giro di poche stagioni fino alla massima divisione e si sono classificati in questa edizione a poca distanza dalla vecchia gloria Komodo, aumentando ulteriormente la varietà di facce nuove presenti del massimo girone del torneo.

La spedizione italiana

Per quanto riguarda la presenza italiana al TCEC, è d’obbligo aprire il discorso citando il nome di Marco Costalba, il programmatore che nel 2008 “adottò” il motore norvegese Glaurung di Tord Romstad, ribattezzandolo Stockfish e fondando dietro di esso una comunità internazionale di volontari che lo ha portando a diventare il motore più forte al mondo. Costalba è negli ultimi anni meno impegnato in prima linea, ma l’importanza della sua figura nella storia del motori scacchistici è innegabile.

Al di là del cosmopolita Stockfish il nostro Paese può contare su una comunità numerosa e dinamica, ben rappresentata dai quattro motori tricolore che hanno partecipato a questa edizione. Nel gioco di promozioni e retrocessioni, tutti e quattro i software hanno partecipato alla “Second Division” (la terza dall’alto, essendo le leghe battezzate secondo il modello della Premiership inglese), formando quasi una colonia italiana nel cuore del torneo. Ecco i nomi dei nostri portabandiera: Chiron di Ubaldo Andrea Farina, Vajolet 2 di Marco Belli, Gogobello di Salvatore Giannotti e Pedone di Fabio Gobbato. I primi due sono veterani della manifestazione e alcuni anni fa sono anche stati intervistati da Scacchierando (Intervista a Farina, Intervista a Belli), mentre gli altri due sono gradite novità.

È invece un peccato che le due importanti figure nello sviluppo di Leela, il fondatore Pascutto e l’“addestratore di rete neurale” Sergio Vieri, non siano di nazionalità italiana nonostante i loro nomi. Pascutto in particolare è discendente di emigrati italiani in Belgio e possiede anche passaporto italiano, ma solo a causa di un disguido burocratico, secondo quanto da lui stesso dichiarato. Sull’ingegnere informatico Vieri non vi sono molte informazioni, ma in base alle informazioni dei social network pare che provenga da una città dell’Indonesia.

La sfida dei pesi massimi

Nonostante l’agguerrita concorrenza, l’accesso alla finalissima è finito nelle mani dei favoriti della vigilia: visto il rallentamento dei progressi di Komodo e l’assenza di Houdini, è toccato come sempre a Stockfish difendere l’onore della tradizione, mentre Leela si è piazzata al secondo posto della massima serie davanti alle altre due reti neurali. La superfinale ha visto il netto quanto imprevisto successo di Stockfish, che ha confermato i progressi ottenuti nelle frenetiche settimane di sviluppo precedenti al torneo.

Il periodo attuale rappresenta un’era fortunata per gli scacchi al silicio: violando il principio espresso da Kramnik (“quanto più alto è il livello tanto meno è possibile avere uno stile peculiare”), i due motori più forti al mondo interpretano il nobil giuoco con approcci radicalmente differenti, ed è stato molto piacevole ammirare, durante la finale e nelle fasi precedenti, la lotta fra le due contrastanti concezioni. Citiamo qui l’opinione di un curatore del blog di Lc0: “I fan di Leela amano comprendere ciò che accade sulla scacchiera, amano le mosse semplici che si combinano con logica, amano vedere dei piani. I fan di Stockfish amano le combinazioni brillanti, le partite violente, anche se questo tipo di gioco tende ad essere difficile da comprendere.

Anche per lo scacchista meno esperto (come chi scrive) non è difficile riconoscere le differenze nel gioco dei due motori. Stockfish mira a condurre il gioco sul piano tattico, e quando è in vantaggio cerca di semplificare pezzi con combinazioni forzanti per entrare in posizioni con vantaggi materiali minimi, che la sua potenza bruta gli permette di giocare con precisione quasi da tablebase. Ecco un esempio tratto dalla fase a gironi (partita completa):

Stockfish – AllieStein, TCEC S18 – Premier League, posizione dopo la 44ª mossa del Bianco
8/1p1q2rk/4BQ1p/p7/4P3/2P3P1/1P5P/6K1 b – – 3 44

posiz-1

 

Qui Stockfish ha un vantaggio materiale minimo (due pedoni per la qualità), ma calcolando variazioni fino alla 94ª mossa vede il modo di far progressi e si valuta in vantaggio decisivo (+2,27). La rete neurale sua avversaria non riesce a spingersi al di là della 67ª mossa e assegna all’avversario solo un leggero vantaggio (+0,67): la sua più raffinata valutazione strategica non può aiutarla molto in una situazione che esige calcoli di variazioni concrete.

Per contro, Leela punta alla supremazia strategica e ottiene i suoi maggiori successi quando quelli che Capablanca chiamava “i principi generali della posizione” provocano effetti a lungo termine, che la mera esplorazione delle singole posizioni non riesce a vedere. Ecco un esempio meraviglioso (partita completa)

Lc0 – Stockfish, TCEC S18 – Superfinal, 65ª del match, posizione dopo la 20ª mossa del Nero (Cxb4)
2rqr1k1/pp1bbp1p/4p1pB/4P3/1nQpN3/P4N2/5PP1/3RR1K1 w – – 0 21

posiz-2

 

Qui la quantità di pezzi in gioco non consente a Stockfish di calcolare al di là della 28ª mossa. Il motore si aspetta la normale risposta Dxd4 e valuta di aver raggiunto la parità (+0,00). Leela, che ha già sacrificato tre pedoni per massimizzare la mobilità dei suoi pezzi, intuisce invece che l’Alfiere camposcuro Nero è la trave portante della difesa e che la sua eliminazione val bene un’ulteriore e supremo investimento di materiale. Dopo 21. Dxb4!! la rete neurale si dà in vantaggio (+1,46) e due mosse dopo anche Stockfish si rede conto, troppo tardi, del collasso che lo attende (+2,41 dopo la propria 22ª).

In altre partite Lc0 non è stata nemmeno costretta a sfornare mosse particolarmente brillanti per ottenere il punto intero contro il rivale. In particolare, la Francese col Nero sembra essere la bestia nera di Stockfish, che non comprende affatto i piani di lungo termine previsti da questa difesa e si ostina in ogni partita a bloccare l’ala di Donna con …c4, rimanendo esposto all’attacco a Est del Bianco senza avere controgiochi plausibili. Anche l’Est Indiana e la Benoni sono materie in cui il motore di Costalba & C. ha dimostrato debolezze, sia pure leggermente ridotte negli ultimi mesi.

Un difetto di tutti i motori, indipendentemente dalla tecnologia, resta quello del trattamento delle posizioni bloccate. Ancora troppe partite, anche dei due leader, prevedono sequenze di inutili mossette dietro propria la linea di pedoni. Molto spesso occorre attendere che la regola delle 50 mosse entri nell’orizzonte dei motori prima che quello in vantaggio si decida a tentare una rottura. Si può ipotizzare che agli sviluppatori manchino incentivi per migliorare la situazione: fintantoché l’insulsa melina a metà partita non influenza le probabilità di vittoria non vi sono molte ragioni per ricercare tecniche migliori in questo tipo di posizioni.

Un problema invece specifico delle reti neurali sembra essere la cattiva tecnica nei finali. Anche in questo caso, al motore importa poco se una posizione vincente viene concretizzata in 20 mosse o in 40, ma l’effetto estetico nel secondo caso è senza dubbio assai peggiore.

L’affaire Houdini

Houdini, il celebre motore di Robert Houdart plurivincitore del TCEC, in questa edizione non è apparso. Ufficialmente la causa è il fatto che non è più sviluppato attivamente: l’autore è passato da un paio d’anni ad altre attività professionali e il torneo ha adottato la politica di preferire software in crescita, anche se più deboli, rispetto a motori “in pensione”.

La verità dietro l’esclusione potrebbe però essere più complessa: in un clamoroso post pubblicato sul forum di Talkchess, un anonimo utente ha dichiarato di essere riuscito a infiltrarsi nel server contenente il codice sorgente di Houdini 6 e, avendolo analizzato, di avere scoperto che enormi e importantissime sezioni del motore erano state copiate a pie’ pari da Stockfish. A volte l’unica modifica apportata al codice del motore open-source, stando alle dichiarazioni, è la traduzione in olandese dei nomi di funzioni e variabili.

La dichiarazione ha ovviamente sollevato molte polemiche e scetticismi. Nel corso dei giorni successivi, il codice è stato condiviso dall’anonimo ad alcuni contatti scelti, uno dei quali lo ha poi reso scaricabile al vasto pubblico. Molti utenti del forum hanno confermato sia che la compilazione del codice produce un motore esattamente equivalente all’Houdini 6 venduto su Chessbase, sia che molte parti sono sostanzialmente plagiate da Stockfish. Le differenze rispetto al rivale state descritte come il frutto di molto lavoro fatto da una mano esperta, ma non sono mancate altre scoperte imbarazzanti: Mark Lefler, uno degli autori di Komodo, ha rilevato che nel codice pubblicato compare una tabella di coefficienti identica a quella usata dalla sua creatura, che assai difficilmente poteva essere stata ottenuta in altro modo che non decompilando il suo eseguibile.

Più grottesca la scoperta che la funzione di conteggio dei nodi nel “presunto Houdini” è identica a quella di Stockfish eccetto per un dettaglio: un’operazione che gonfia del 15% il numero di nodi mostrato all’utente. Alcuni utenti hanno notato che la rozza tecnica usata per taroccare il conteggio avrebbe prodotto anomalie statistiche osservabili nelle analisi del motore. Un collaboratore del progetto Stockfish ha esaminato una partita del “vero Houdini” e rilevato esattamente l’alterazione statistica prevista.

Alla bomba scoppiata sui forum non sono seguite azioni più concrete. Le discussioni su Talkchess sono in fretta degenerate in vari sofismi sulla legalità e la moralità delle azioni sia di Houdart che dell’anonimo iniziatore della faccenda. È assai probabile che, vista l’assai scarsa quantità di denaro che ruota intorno ai motori scacchistici, una causa legale costerebbe di più della somma rivendicabile, non contando il fatto che le prove sarebbero difficilmente utilizzabili in quanto ottenute illegalmente. Houdart non ha rilasciato dichiarazioni sulla questione e pare del resto essersi ritirato dall’ambiente, anche se Houdini resta per ora in vendita su vari siti. Di sicuro la reputazione del programmatore belga ha subito un colpo molto duro, superiore a quello avuto anni fa quando fu sostenuto con argomenti piuttosto solidi che le prime versioni di Houdini erano basate su Robbolito.

Con il tramonto di Houdini, Komodo resta l’unico motore commerciale di qualche rilevanza. Il motore di Lefler e Kaufman ha perso qualche colpo, chiudendo al quinto posto il TCEC, ma il suo team sembra ancora intenzionato a lottare seriamente: ha annunciato a maggio una nuova edizione del motore con varie nuove funzionalità e sta integrando l’approccio tradizionale con la ricerca Monte Carlo tipica delle reti neurali. Vedremo se, nel generale mutamento di era nel mondo dei motori scacchistici, Komodo seguirà il declino di altri motori alfa-beta o riuscirà a tenere il campo, come ha fatto Stockfish, e a sfidare le nuove generazioni.

Fonti e riferimenti

12 Commenti a “TCEC 18: una retrospettiva”

  1. Megalovic
    3 luglio 2020 - 11:05

    Leela avrà anche perso il Match, ma il sacrificio di Donna della 65ª del match è meraviglioso, e la partita è un capolavoro. L’immortale dei motori scacchistici?

Lascia un commento

Devi essere loggato per lasciare un commento. Clicca per Registrati.