« Gott würfelt nicht ! » s’exclame Albert Einstein au congrès Solvay de 1927.
Il refuse l’interprétation que la nature puisse obéir aux seules lois du hasard : « Dieu ne joue pas aux dès ! »
En 2005, les programmes de jeu d’échecs goûtent au Fruit défendu de Fabien Letouzey. Dans la décade 2010, StockFish réchauffe gracieusement la petite friture Rybka-iènne à la chaleur réconfortante des CPU multi-cœurs. Il n’y a qu’un gros lézard, Komodo, qui croque en 2017 les filets italiano-norvégiens (en référence à Magnus qui n’y est pour rien). La version 9 du varan peu commode est désormais offerte !
Mais que fait Gary ? Pas Kasparov mais Linscott ! Il sort de son stock l’environnement FishTest de tests distribués sur internet permettant la non-régression des améliorations StockFish.
Avec la floraison printanière 2018 du lilas, Linscott préfère le générateur de coups de StockFish (SF) dans son implémentation de Leela chess zero (Lc0). Il a fait perdre de la mémoire toutes les connaissances échiquéennes sur l’évaluation des positions de SF en ne gardant que les règles de bases pour savoir jouer aux échecs : la règle de nullité des 50 coups sans capture ni avance de pions a été connectée au réseau de neurones le 5 mai 2018. La signification du suffixe « zero » signifie que Leela chess est un programme d’échecs à apprentissage neuronal renforcé partant de presque ... zéro.
Après avoir jeté la première pierre au Go, ...
… l’annonce Googlesque qu’un AlphaZero (A0) puisse apprendre en quelques heures les connaissances échiquéennes pour surpasser stratégiquement SF sidère. Dans les conditions spécifiques du tournoi (par exemple temps limité par coup), la pauvre morue séchée au courant d’air marin des îles Lofoten semble jouer comme un débutant (Cg7 dans un fianchetto en lieu et place du Fg7 solide comme une pyramide égyptienne pour protéger le roque du monarque de noir vêtu).
L’écrasement de SF par AlphaZero est sans appel. AlphaZero pousse SF dans l’effet horizon au-delà de la profondeur d’analyse pourtant inhumaine de SF qui constate les dégâts quand c’est trop tard. A la différence d’AlphaZero, SF n’apprend pas. Il a besoin d’une longue période dans FishTest pour valider ses améliorations.
L’objectif de Leela chess zero est de reprendre les principes d’AlphaZero dans une version domaine publique : c’est comme si on jouait au casino ou aux dès à Monte-Carlo pour choisir telle branche à explorer alors que le jeu d’échecs est à information complète. Il ne cache rien. Seul le tirage des couleurs avant que la partie ne commence peut être tiré au sort ou le système d’appariement selon le classement Elo et les résultats des rondes précédentes choisit qui rencontre qui.
Leela-chess par Gary Linscott a le vent en poupe. Monte-Carlo Upper Confidence bounds applied to Trees (UCT) est beaucoup plus populaire que les méthodes statistiques de FishTest implémentées par le même auteur. L’environnement bouge beaucoup avec des forks qui témoignent du succès.
Téléchargement du moteur lczero.exe : v0.10
- cpu-win.zip 11.3 MB
- gpu-win.zip 11.4 MB GPU à 97% (55°C) et CPU à 50% (51°C ventilé)
- lczero10_mkl_bmi2_and_popcnt.zip 545 KB
cpu-win est un moteur d’échecs UCI standard sous Windows qui peut être optimisé par les instructions bmi et popcnt si la CPU (Central Processing Unit) d’Intel les supportent. Ces téléchargements pourront être testés ultérieurement par des volontaires.
Le test suivant concerne l’innovation d’un moteur d’échecs UCI sous Windows utilisant une GPU (Graphics Processing Unit) comme par exemple la carte graphique NVIDIA en architecture parallèle Compute Unified Device Architecture (CUDA) alors qu’un moteur d’échecs ne fait que calculer le meilleur coup dans une position donnée et n’affiche aucun élément graphique à la différence des jeux vidéos. L’affichage de l’échiquier est de la responsabilité de l’interface graphique Arena ou Scid vs. PC.
GPU : étalonnage de la carte graphique
Cette configuration est à faire une seule fois avant la première utilisation dans l’interface graphique GUI. Dans la console en ligne de commande, les 578 configurations à tester peuvent prendre de quelques secondes à moins de 5 minutes.
Clic avec le bouton droit sur le "logo Windows" 10 > menu contextuel "Windows PowerShell"
REM Si Leela a été dézippée dans le répertoire D:\Chess\Leela\Prog
cd D:\Chess\Leela\Prog
REM Attention d'utiliser le répertoire local ".\" sinon l'exécutable n'est pas trouvé
.\lczero.exe --tune-only
Detecting residual layers...v2...192 channels...15 blocks.
Initializing OpenCL.
Detected 2 OpenCL platforms.
Platform version : OpenCL 2.1
Platform profile : FULL_PROFILE
Platform name : Intel(R) OpenCL
Platform vendor : Intel(R) Corporation
Device ID : 0
Device name : Intel(R) HD Graphics 530
Device type : GPU
Device vendor : Intel(R) Corporation
Device driver : 24.20.100.6094
Device speed : 950 MHz
Device cores : 23 CU
Device score : 621
Device ID : 1
Device name : Intel(R) Core(TM) i5-6300HQ CPU @ 2.30GHz
Device type : CPU
Device vendor : Intel(R) Corporation
Device driver : 7.6.0.698
Device speed : 2300 MHz
Device cores : 4 CU
Device score : 521
Platform version : OpenCL 1.2 CUDA 8.0.0
Platform profile : FULL_PROFILE
Platform name : NVIDIA CUDA
Platform vendor : NVIDIA Corporation
Device ID : 2
Device name : GeForce GTX 950M
Device type : GPU
Device vendor : NVIDIA Corporation
Device driver : 382.05
Device speed : 1124 MHz
Device cores : 5 CU
Device score : 1112
Selected platform : NVIDIA CUDA
Selected device : GeForce GTX 950M
with OpenCL 1.2 capability.
Started OpenCL SGEMM tuner.
RNG seed : 0x88c320a4 (thread : 408685198)
Will try 578 valid configurations.
(1/578) KWG=32 KWI=2 MDIMA=8 MDIMC=8 MWG=16 NDIMB=8 NDIMC=8 NWG=16 SA=0 SB=0 STRM=0 STRN=0 VWM=1 VWN=1 0.2626 ms (71.9 GFLOPS)
(2/578) KWG=32 KWI=2 MDIMA=8 MDIMC=8 MWG=32 NDIMB=8 NDIMC=8 NWG=16 SA=0 SB=0 STRM=0 STRN=0 VWM=1 VWN=1 0.1768 ms (106.8 GFLOPS)
(66/578) KWG=32 KWI=2 MDIMA=8 MDIMC=8 MWG=32 NDIMB=8 NDIMC=8 NWG=16 SA=0 SB=0 STRM=0 STRN=0 VWM=2 VWN=1 0.1394 ms (135.4 GFLOPS)
(114/578) KWG=32 KWI=2 MDIMA=8 MDIMC=8 MWG=64 NDIMB=8 NDIMC=8 NWG=16 SA=0 SB=0 STRM=0 STRN=0 VWM=4 VWN=1 0.1329 ms (142.1 GFLOPS)
(290/578) KWG=32 KWI=2 MDIMA=8 MDIMC=8 MWG=16 NDIMB=8 NDIMC=8 NWG=16 SA=1 SB=1 STRM=0 STRN=0 VWM=1 VWN=1 0.1253 ms (150.6 GFLOPS)
(300/578) KWG=32 KWI=2 MDIMA=16 MDIMC=16 MWG=32 NDIMB=8 NDIMC=8 NWG=16 SA=1 SB=1 STRM=0 STRN=0 VWM=1 VWN=1 0.1035 ms (182.4 GFLOPS)
(354/578) KWG=32 KWI=2 MDIMA=8 MDIMC=8 MWG=16 NDIMB=8 NDIMC=8 NWG=16 SA=1 SB=1 STRM=0 STRN=0 VWM=2 VWN=1 0.0985 ms (191.6 GFLOPS)
(363/578) KWG=32 KWI=2 MDIMA=16 MDIMC=16 MWG=32 NDIMB=8 NDIMC=8 NWG=16 SA=1 SB=1 STRM=0 STRN=0 VWM=2 VWN=1 0.0927 ms (203.6 GFLOPS)
(483/578) KWG=32 KWI=2 MDIMA=16 MDIMC=16 MWG=32 NDIMB=8 NDIMC=8 NWG=16 SA=1 SB=1 STRM=0 STRN=0 VWM=2 VWN=2 0.0913 ms (206.8 GFLOPS)
(516/578) KWG=32 KWI=2 MDIMA=16 MDIMC=16 MWG=64 NDIMB=8 NDIMC=8 NWG=16 SA=1 SB=1 STRM=0 STRN=0 VWM=4 VWN=2 0.0910 ms (207.5 GFLOPS)
Ce traitement génère 210 octets dans le fichier texte leelaz_opencl_tuning (sans extension de fichier) contenant :
0 ;XgemmBatched ;64 ;16 ;64 ;16 ; -DKWG=32 -DKWI=2 -DMDIMA=16 -DMDIMC=16 -DMWG=64 -DNDIMB=8 -DNDIMC=8 -DNWG=16 -DSA=1 -DSB=1 -DSTRM=0 -DSTRN=0 -DVWM=4 -DVWN=2 ;OpenCL : NVIDIA Corporation GeForce GTX 950M @ 1124MHz
Le préfixe « leelaz » provient du projet leela-zero dont l’exécutable leelaz.exe v0.15 de Gian-Carlo Pascutto dans l’archive zippée leela-zero-0.15-win64.zip (CPU + GPU) ou celle de leela-zero-0.15-cpuonly-win64.zip (CPU) ne semble pas jouer le premier coup dans Arena (s’il y a des volontaires pour investiguer ?).
Selon sjeng.org, Leela go fonctionne 15 fois plus vite avec une GPU AMD R9 390 qu’avec une CPU Intel Core i5-6600.
Dans ce qui suit, il n’est utilisé que l’exécutable lczero.exe de Gary Linscott.
Configuration du réseau neuronal
Il n’est livré aucun fichier de configuration du réseau neuronal.
Télécharger la première instance en colonne 2 « Network » au singulier :
Id | Network | Elo | Games | Blocks | Filters | Time |
367 | 9efeefb3 | 5922.08 | 37151 | 15 | 192 | 2018-06-02 12:51:14.161623 -0400 EDT |
366 | 3fc4c8d8 | 5905.21 | 38514 | 15 | 192 | 2018-06-02 06:52:26.861374 -0400 EDT |
8 | 03d94904 | 1555.89 | 50496 | 6 | 64 | 2018-03-08 16:06:44.648266 -0500 EST |
Chaque apprentissage neuronal est identifié par un numéro d’id en première colonne.
Le choix de la configuration du réseau neuronal à télécharger est libre.
L’URL est une clef Secure Hash Algorithm (SHA) qui garantit l’unicité.
L’entrée la plus récente ne signifie pas qu’il s’agit du meilleur apprentissage. Il peut très bien y avoir des régressions.
En colonne 3, l’Elo n’est pas à comparer aux valeurs d’usage : enfant débutant à 699 Elo, seuil des 2000 Elo pour les joueurs de club, professionnels à partir de 2500 Elo et l’élite des Grands Maîtres au-dessus de 2700, Magnus Carlsen a 2843 Elo. Il s’agit en fait d’un classement obtenu par auto-apprentissage. Selon Bhagwad, la formule de régression linéaire suivante établit une relation entre le ELO Fide et le classement obtenu par auto-apprentissage :
ClassementParAutoApprentissage = (EloFide + 511.7) / 0.6
Exemple : L’ELO Fide 1500 correspond au classement par auto-apprentissage de 3352 c-a-d à l’id 19 du 21 mars 2018 encadré de rouge. les id 20 et 21 fluctuent autour de ce classement alors que l’id 22 marque une nette progression.
EloFide = (ClassementParAutoApprentissage * 0.6) - 511.7
Exemple : l’id 423 du 18 juin 2018 a atteint un classement par auto-apprentissage de 5879, c-a-d à un ELO d’ordinateur de 3015. Notez que le classement par auto-apprentissage a baissé entre l’id 367 du 2 juin 2018 dans la table ci-dessus et l’id 423. Cela montre que l’apprentissage converge plus difficilement dans les niveaux supérieurs.
Dans un blitz dans le GUI Arena, Leela chess zero v0.10 id 367 vs. StockFish 9 bmi2, SF avec les Noirs a réussi à placer une finesse tactique gagnant un pion et donc la partie. Le « Elo » de 5922.08 avec chiffre à virgule n’est donc pas réaliste. Cependant un joueur de club se fera aussi bien casser par SF que par Leela sauf avec l’id 8 d’un Elo relatif de 1555.89 pour constater que dans ses premiers id, il y avait encore des progrès à faire. Ce qui surprend est la vitesse d’apprentissage renforcé par rapport à un humain qui serait incapable physiquement de jouer autant de parties d’échecs.
Id | Zip Ko | Unzip Ko | Elo | Games |
367 | 67 458 | 186 751 | 5922.08 | 37151 |
8 | 18 325 | 051 435 | 1555.89 | 50496 |
Comme avec le format textuel PGN des parties d’échecs, l’apprentissage neuronal dans Leela en est encore au format textuel : cela signifie des dizaines de Ko à télécharger même zippés.
Renommer l’apprentissage neuronal dézippé en weights.txt à placer dans le même répertoire que lczero.exe :
02/06/2018 18:36 191 232 998 weights.txt
08/03/2018 22:06 052 669 226 weights1555.txt référence id 8 à 1555 Elo
02/06/2018 18:36 191 232 998 weights5922.txt référence id 367 > 3000 Elo
Comme ces fichiers sont gros, il est possible de les référencer dans un répertoire unique par l’option « —w » comme weights sur la ligne de commande de lczero.exe ou dans la zone de paramètre d’Arena ou Scid vs. PC.
L’auto-apprentissage, c-a-d la propre amélioration de weights.txt, n’est pas dans l’objectif de cette introduction à Leela.
Structure de l’apprentissage
Les poids qui paramètrent le réseau de neurones artificiels se présentent sous la forme d’une série de chiffres comment autant de boutons de réglages pour obtenir la sortie souhaitée lors de l’apprentissage :
1
- 0.00119084 -0.0405696 -0.104492 0.0265214 -0.0811853 0.0255728 -0.0252112 0.0464284
Id | Elo | Games | Blocks | Filters | Time |
376 | 5895 | 51 698 | 15 | 192 | 2018-06-04 |
227 | 5501 | 55 108 | 15 | 192 | 2018-04-30 |
226 | 5403 | 27 595 | 10 | 128 | 2018-04-30 |
124 | 4843 | 56 175 | 10 | 128 | 2018-04-13 |
008 | 1555 | 50 496 | 06 | 064 | 2018-03-08 |
006 | 0988 | 50 150 | 06 | 064 | 2018-03-04 |
OpenCL configuration de la carte graphique : « Detecting residual layers...v2...192 channels (ou Filters) ...15 blocks. »
Configurer le moteur lc0 dans le GUI échiquéen
Pour configurer le moteur UCI dans divers interfaces échiquéens GUI, consulter :
Running Leela Chess Zero in a Chess GUI
TCEC 2018 saison 13 division 4
11 août 2018 : Leela Chess Zero wins the gold medal in TCEC Div 4
TCEC Season 13 – the advance of the NNs
Div 4 : 30mn + 10s
NN : Neural Network
1er Leela Lc0 0.16 NN, 2e DeusX 1.0 NN, 3e Wasp 3.2 Alfaβ
Deus X est un clone de Lc0 avec un apprentissage supervisé différent. Cela a déclenché une polémique pour savoir si TCEC est un championnat de moteurs ou de réseaux neuronaux. La saison 14 clarifiera le règlement sur les NN.
Lc0 0.16 vs. Chess22k 1.10 : finale de l’enfermement thématique de Ta7 noire par Fb7 blanc protégé par a6.
N | Engine | Rtng | Pts | SB | Elo | Perf | Lc | De | Wa | Ro | Se | Ch | Tu | Iv |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | Lc0 0.16 | 3219 | 20.0 | 251.25 | +1 | 71.4 | ···· | 1=0= | 0=1= | 1=1= | 111= | 11=1 | ==11 | ==11 |
2 | DeusX 1.0 | 3200 | 18.5 | 229.75 | -24 | 66.1 | 0=1= | ···· | 001= | ==== | ===1 | 111= | 1110 | 1111 |
3 | Wasp 3.2 | 2964 | 18.0 | 236.25 | +273 | 64.3 | 1=0= | 110= | ···· | =111 | ==1= | =0== | 1==1 | 1==1 |
4 | Rodent III 0.258 | 3030 | 12.5 | 161.25 | +10 | 44.6 | 0=0= | ==== | =000 | ···· | ==== | =0== | 1101 | ==1= |
5 | Senpai 2.0 | 3062 | 12.5 | 160.50 | -33 | 44.6 | 000= | ===0 | ==0= | ==== | ···· | ==== | 1=== | 01=1 |
6 | Chess22k 1.10 | 3072 | 11.0 | 149.75 | -95 | 39.3 | 00=0 | 000= | =1== | =1== | ==== | ···· | 1=00 | ===0 |
7 | Tucano 7.05 | 2919 | 10.0 | 134.25 | +72 | 35.7 | ==00 | 0001 | 0==0 | 0010 | 0=== | 0=11 | ···· | ==== |
8 | Ivanhoe 999946h | 3116 | 9.5 | 123.00 | -203 | 33.9 | ==00 | 0000 | 0==0 | ==0= | 10=0 | ===1 | ==== | ···· |
TCEC 2018 saison 12 division 4
18 avril 2018 : Breaking : Leela Chess Zero enters TCEC Season 12
Leela chess zero v0.27 id 125 s’est qualifiée pour TCEC saison 12. Elle est configurée avec les tablebases Syzygy à 6 pièces.
N | Engine | Rtng | Pts | Gm | SB | Ethe | Xiph | Rode | Tuca | TheB | Frui | Scor | Lcze |
1 | Ethereal 9.60 | 2985 | 23.5 | 28 | 282.25 | ···· | 11== | ==1= | 1111 | ===1 | 11=1 | 1111 | 1111 |
2 | Xiphos 0.2 | 2986 | 22.0 | 28 | 253.75 | 00== | ···· | 1111 | =11= | 111= | 101= | 1111 | 1111 |
3 | Rodent III 0.244 | 3076 | 18.0 | 28 | 187.00 | ==0= | 0000 | ···· | 1=== | 11=1 | =11= | 111= | 1111 |
4 | Tucano 7.00 | 2830 | 13.5 | 28 | 135.25 | 0000 | =00= | 0=== | ···· | =111 | 1=01 | ==00 | 1111 |
5 | The Baron 3.41 | 2840 | 11.5 | 28 | 123.00 | ===0 | 000= | 00=0 | =000 | ···· | =1=1 | 1001 | =111 |
6 | Fruit 20180416 | 2934 | 11.0 | 28 | 118.25 | 00=0 | 010= | =00= | 0=10 | =0=0 | ···· | =010 | 1111 |
7 | Scorpio 2.82 | 2831 | 10.5 | 28 | 105.00 | 0000 | 0000 | 000= | ==11 | 0110 | =101 | ···· | 101= |
8 | Lc0 0.07 id 125 | 2714 | 2.0 | 28 | 21.50 | 0000 | 0000 | 0000 | 0000 | =000 | 0000 | 010= | ···· |
Avec la dernière place de la division 4, Leela a encore de la marge pour progresser. Les autres moteurs en ont fait des confettis floraux. Leela a annulé contre The Baron ayant une tour de moins et Scorpio (Fou contre Cavalier avec 4 pions de part et d’autre). Sa victoire contre Scorpio en trois coups (1. d4 d5 2. c4 c6 3. e3 1-0) n’est pas significative.
Lichess bot LeelaChessOfficial id 185 vs. SF 9 CruelBot
Lichess bot LeelaChessOfficial vs. GM 2500
Le bot LeelaChessOfficial id 125 a été introduit dans la plateforme en ligne Lichess pour un match avec le GM Andrew Tang (Elo 2502 rapide : 2281 blitz : 2469) : 37 victoire, 6 nulles et 1 défaite pour Leela.
Komodo Monte-Carlo
Le 24 mai 2018, à l’occasion de l’acquisition de Komodo par Chess.com, un nouveau moteur d’échecs Komodo Monte-Carlo ou Komodo MCTS (Tree Search = arbre de recherche) version 12 présente le varan vert jouant avec deux dés rouges (6+6 = 12) inspiré d’A0 et Lc0.
Komodo MCTS n’utilise que la CPU alors que Lc0 peut utiliser la GPU.
Selon les ELO évalués par CCRL 40/4 :
- Komodo 12 64-bit 4CPU reste loin devant avec un ELO de 3504 : le meilleur coup est choisi selon une fonction d’évaluation de la position simulée dans un arbre,
- Komodo MCTS 64-bit débute avec un ELO de 3047 : le meilleur coup est choisi selon une probabilité de gains par apprentissage de réseaux de neurones artificiels.
L’option Multi-PV (plusieurs Principales Variations calculées en parallèle) affecte beaucoup moins Komodo MCTS que Komodo 12.
Komodo MCTS doit encore s’améliorer dans le domaine tactique. Il dispose d’une meilleure compréhension stratégique que Komodo 12. L’évaluation de la position est plus stable. Et l’équipe de Komodo MCTS n’en est qu’à la première version.
Le 17 juin 2018, le champion américain GMI Hikaru Nakamura a remporté le match de blitz contre Komodo MCTS à différents niveaux et variantes de la position de départ sur le score de 20.5 à 2.5.
DeepMind
AlphaZero vs. SF Game Downloads
29 mars 2018, ouverture de DeepMind Paris avec Rémi Munos : « Retour à Paris »
« AI is one of the most transformative technological developments of our time, and I believe we’ve only just begun to recognise its potential for positive impact around the world. »
Lila Ibrahim, Chief Operating Officer, 11 avril 2018
Références
Date | Titre | Auteur | Site |
09/11/2015 | TensorFlow, outil open source d’apprentissage automatique Python, C++, CUDA | Google Brain | Wikipédia |
09/01/2018 | Announcing lczero | Gladius | Talkchess |
31/03/2018 | Tutorial on How to Run Leela (LCzero) in Arena at any given ELO Rating | BJPark | |
05/04/2018 | Leela Chess | Paul | Northwestern |
11/04/2018 | How influential will Leela Zero be in the computerized world of chess ? | Shaun Press | Quora |
25/04/2018 | Financement participatif atteint orienté hardware | Folkert Huizinga | GoFundMe |
26/04/2018 | Leela Chess Zero : AlphaZero for the PC | Albert Silver | Chessbase |
31/05/2018 | Ideas to increase the interest in developing leela zero among the general public | Ovi | Google groups |
03/06/2018 | Jouez contre LCZero dans votre navigateur en ligne sans installation | lczero.org |