Echecs : Les tables de finales - Echecs et informatique sur PC-Windows

Rechercher
Aller au contenu

Menu principal :

Technique

Les tables de finales


Il y a dix ans, quand j'ai rédigé la première mouture de cet article, j'étais davantage concentré sur la performance des moteurs et j'avais crédité ces fameuses tables de plus d'intérêt qu'elles n'en avaient réellement. Le mieux est de repartir de zéro et de tout remettre à plat.


Image prélevée sur le blog de Peter Wong


Sommaire

A quoi servent les tables de finales ?

     A l'origine, une utilité contestable
     Plus utiles maintenant

Les différents formats de Tablebase

     Le format Nalimov
     Le format Gaviota
     Le format Syzygy

Gestion des tables

     Arena et Scid vs PC en première ligne
     Avec Arena
     Avec Scid
     Et pour Lucas Chess ?

Réglage pour limiter l'accès aux EGTB

Syzygy à 7 pièces en ligne

     Le site de Guo et de Man
     Tablebases de Lichess






A quoi servent les tables de finales ?

Le rôle des tables de finales (mentionnées souvent sous leurs appellations anglo-saxone Endgame Tablebase, EGTB ou encore TB) est de rassembler l'ensemble des configurations possibles lorsqu'il ne reste plus que 3 à 7 pièces sur l'échiquier (on trouve à présent des tables à 7 pièces).  Cela a pu paraître important à une époque car la finale était le moment de la partie où les forces des moteurs anciens s'affaiblissaient, parfois jusqu'à l'effondrement.


A l'origine, une utilité contestable

Pour simplifier, en caricaturant, la cause principale de cet affaiblissement résidait dans l'inaptitude du moteur à voir un événement critique au delà de sa profondeur d'analyse maximale. C'est ce qu'on appelait l'effet "horizon", qui pouvait par exemple empêcher le moteur de voir le petit pion ordinaire sur le point de passer et de se transformer en une redoutable dame.
L'effet "horizon" existait bien sûr durant toute la partie mais lorsqu'il ne restait plus que quelques pièces sur le plateau il devenait très problématique. Le nombre de coups possibles restait très important (les pièces sur un espace presque vide avaient de nombreuses possibilités de mouvement) et par ailleurs, il pouvait se succéder de très nombreux coups, parfois plusieurs dizaines, avant qu'il n'y ait quelque chose de significatif à mesurer sur l'échiquier.  
Théoriquement, les tables de finales étaient la solution. En pratique, elles étaient peu utilisées et même très peu populaires. Elle présentaient en effet plusieurs inconvénients qui ont freiné leur diffusion dans le grand public :
1/ La taille des fichiers (7 Go pour les tables à 5 pièces Nalimov compressée et plus de 1000 Go pour une pièce de plus)
2/ La nécessité d'accéder sans cesse au disque dur pour lire les données
3/ L'obligation pour le moteur de décompresser les fichiers à la volée.
Ces deux derniers processus occasionnaient un ralentissement tel que, en pratique, la force du moteur avait tendance à baisser au lieu d'augmenter - sauf à disposer d'un ordinateur de compétition.
Finalement le problème des finales s'est résolu autrement. D'une part, la profondeur d'exploration des moteurs a été décuplée ; d'autre part, de nombreux algorithmes et procédés divers ont permis, sans le recours aux tables de finales, d'améliorer la vision du jeu du moteur lorsqu'il ne reste presque plus de pièces sur l'échiquier. Un moteur moderne comme Stockfish est déjà fortement enrichi en connaissances de fin de parties et se débrouillera très bien en finale sans le secours de tables spécialisées. On peut donc se reposer la question : les tables de finales, est ce vraiment utile aujourd'hui ?


Plus utiles maintenant

Eh bien oui car leurs conditions d'utilisation se sont notablement améliorées. Aujourd'hui, les ordinateurs décompressent les tables beaucoup plus rapidement et la plupart des utilisateurs disposent de disques durs SSD aux accès en lecture 5 à 6 fois plus rapides. Si vous utilisez comme moi de vieux moteurs capables de gérer un type ou un autre de tablebases, les employer améliorera sensiblement, enfin, leurs performances en finale.
Pour les moteurs les plus récents, le bilan est à nouveau mitigé. Si vous utilisez une version de Stockfish ou de Komodo vieille de quelques années - concrètement non NNUE -  ils seront quand même un peu meilleurs en finale s'ils peuvent s'appuyer sur ces fameuses tables. Depuis que la technologie NNUE s'est généralisée, le gain apporté par les tables est quasi-nul dans une partie chronométrée.  Les réseaux NNUE bénéficient d'un entraînement renforcé sur les configurations de fin de partie et se passe facilement du recours aux TB.
Par contre, il ne faut pas oublier qu'aujourd'hui comme hier, les tables de finales sont une aide précieuse lorsqu'on utilise un moteur pour l'analyse d'une partie ou lorsqu'on étudie simplement les fins de parties. Dans ce registre d'utilisation, le facteur "temps de traitement", qui n'était déjà plus aussi déterminant, est devenu négligeable. Les tables stockent la totalité des mouvements possibles ; aucun dispositif algorithmique et aucun réseau NNUE ne pourra donner un meilleur résultat si on laisse au moteur le temps nécessaire pour fouiller les tables.





Les différents formats de Tablebase


Comme toujours, pour compliquer les choses, il y a 5 ou 6 formats de database de fin de parties et les moteurs utilisent les uns et pas les autres. Trois sont tout de même plus courants : le formats Nalimov, le format Gaviota - et le format Syzygy.


Le format Nalimov

Le format Nalimov est l'un des plus anciens. Il présente l'inconvénient de générer de gros fichiers, difficiles à stocker et à manipuler. Mais énormément de vieux moteurs les utilisent. C'est le cas de la grande majorité des moteurs Winboard (du moins ceux qui sont capables d'exploiter de telles bases) et beaucoup d'anciens moteurs UCI.
Les tables à 3 ou 4 pièces ne pèsent pas grand chose, mais il n'en va pas de même des tables à 5 pièces (à 6 pièces n'en parlons même pas !). Les sources ayant tendance à se tarir, j'en propose plusieurs ci-dessous. Merci de me signaler toute disparition par mail.
On trouve les bases à 3 et 4 pièces Nalimov ici :

http://horizonchess.com/FAQ/Winboard/egtb.html#%5BA.7%5D
Cherchez sur la page "Alternatively, Frank Quisinsky offers all the 3 and 4 men tablebase for download in one 30 meg file". Presque tous les autres liens sont morts.
Si vous voulez les 5 pièces, vous les trouverez ici :
http://tablebase.sesse.net/3-4-5/
C'est galère ! 7 Go de données répartis en près de 300 fichiers, à télécharger un par un ! On en bave, quand même !


Le format Gaviota


Le format Gaviota peut être considéré comme une évolution du format Nalimov, dont il est  proche. Un peu plus moderne, il bénéficie d'un encombrement inférieur de 10% environ. Pas assez pour détroner Nalimov, Gaviota est resté assez marginal. Mais quelques très bons moteurs de ma sélection sont capables de le gérer. Et c'est aussi le choix standard de l'interface Arena.

Voici une source pérenne où télécharger les tables Gaviota de 3 à 5 pièces :
https://chess.cygnitec.com/tablebases/gaviota/

Le fichier à 4 pièces est une unique archive appelée "4.7z". Téléchargez-là, ouvrez l'archive, elle contient un dossier "4".
La base à 5 pièces, beaucoup plus grosse, est scindée en 53 parties au format de 7zip. Ca va prendre du temps ! La décompression est aussi plus compliquée. Il faut coller tous les morceaux dans un dossier, y compris le fichier "md5sum" (qui sert à vérifier que des fichiers ne sont pas altérés). Ensuite venir sur le fichier "5.7z.001" et le décompresser avec 7-zip. Il va alors vous sortir automatiquement de l'archive tous les autres fichiers. Si vous n'avez pas cet archiveur, vous devrez le télécharger et l'installer (
c'est un gratuit). Vous le trouverez ici : https://7zip.fr/
Merci de me signaler toute disparition par mail.



Le format Syzygy


Le format Syzygy est de conception beaucoup plus récente et beaucoup plus légère: ainsi, les Syzygy à 7 pièces pèsent environ 160 Go, soit 7 fois moins que les Nalimov. Autre différence importante : contrairement aux tables précédentes, qui ne cherchent qu'à atteindre le mat le plus vite possible, les Syzygy vont plutôt rechercher d'abord une capture gagnante ou un déplacement de pions. C'est parce qu'elles fonctionnent un peu comme les réseaux neuronaux en fouillant les fichiers à la recherche des coups qui ont donnée les meilleurs résultats (WDL).
Au moment de leur apparition les tables Syzygy n'étaient pas considérées comme vraiment meilleures que les anciennes, en terme d'efficacité, mais l'expérience a tranché en leur faveur. Plus légères, plus rapides, plus naturelles...
Les tables
Syzygy restent marginales quantitativement mais la plupart des plus importants moteurs d'aujourd'hui s'y sont convertis : Deep Fritz depuis la version 14, Stockfish depuis la version 7, Komodo à compter la v8, Houdini à partir de la v4...



Les tables Syzygy sont sous licence libre, donc elles-aussi librement téléchargeables. Le plus pratique est de se les procurer sur l'excellent site  chess.massimilianogoi.com/. Les données à 3, 4 et 5 pièces sont rassemblées dans une unique archive de près d'un Go.

Sur le même site on peut télécharger les fichiers Syzygy à 6 pièces. Ici vous obtenez deux fichiers torrent, l'un pour les fichiers dtz et l'autre pour les wdl. Pour les utiliser vous devez avoir un client BitTorrent. Je vous conseille µTorrent, facile à utiliser et gratuit. Rappel : ça pèse lourd : 150 Go !

Alternative pour les 3,4,5 pièces: https://tablebase.lichess.ovh/tables/standard/3-4-5/
Pour les six pièces :
https://tablebase.lichess.ovh/tables/standard/6-dtz/
https://tablebase.lichess.ovh/tables/standard/6-wdl/

Ou encore :

Pour les 3,4 et 5 pièces :
http://tablebase.sesse.net/syzygy/3-4-5/

Pour les six pièces :
http://tablebase.sesse.net/syzygy/6-DTZ/
http://tablebase.sesse.net/syzygy/6-WDL/

On trouve même ici les fichiers à 7 pièces :
http://tablebase.sesse.net/syzygy/7-DTZ/
http://tablebase.sesse.net/syzygy/7-WDL/
Mais alors là bon courage ! Des centaines de fichiers et plus de 16 térabits de données, vous n'avez pas encore fini !


Il est à noter que l'on peut faire analyser une position quelconque avec les tables Syzygy à 7 pièces sur ce site :

https://syzygy-tables.info/
J'y reviens plus bas.


Gestion des tables

Commencez par utiliser les sources ci-dessus pour télécharger les fichiers des tables que vous souhaitez utiliser. Voyons comment cela fonctionne avec les principales interfaces gratuites...


Arena et Scid vs PC en première ligne


En matière d'interface de jeu, j'utilise principalement Lucas Chess et Arena. Mais Scid vs PC, gestionnaire de bases de données, est aussi une bonne interface.  
    
Lucas Chess, très moderne, très ludique, exceptionnel outil d'études doté d'une module d'analyse de parties extra. a carrément fait l'impasse sur les bases de finales ! La dernière version contient 50 moteurs et n'offre en guise de database de fin de parties que les fichiers à 3 pièces au format Syzygy; le plus moderne mais le moins courant et dont ne se servent que les versions récentes de quelques moteurs ultra-puissants. Surtout, rien dans l'interface, n'est prévu pour valoriser le contenu de ces databases, pas plus les Syzygy que les autres.
Arena, plus ancien, plus austère que Lucas Chess, reste incontournable car il offre des possibilités ignorée de Lucas Chess ou d'autres interfaces. En matière de gestion des bases de fin de parties, tout a bien été prévu. Cette interface sera donc naturellement le support de notre expérimentation de ces fameuses endgame database.
Mais pour l'étude des finales, il ne faudrait pas oublier Scid versus PC. Le gestionnaire de bases de parties est également une interface d'échecs assez polyvalente, qui sait utiliser les tables Nalimov, les plus courantes. Dans les phases finales d'une partie, les données des tables sont présentées de façon originale et utile.



Avec Arena

Installer les tables

Gaviota : Arena propose en standard dans son dossier "TB" les finales à trois pièces des databases Gaviota. Il est judicieux d'y ajouter au moins les fichiers à 4 pièces. Et à 5 pièces si c'est possible. Utilisez l'une des sources mentionnées ci-dessus et copiez tous les fichiers décompressés dans le dossier "gtb5" d'Arena.

Nalimov : pour les Nalimov, créez un répertoire "Nalimov" dans le dossier "TB" d'Arena et copiez-y vos fichiers.

Syzygy : Arena n'a intégré dans son fonctionnement que l'usage des tables Gaviota, Nalimov et Scorpio.  Pour les moteurs utilisant les tables Syzygy, rien n'est prévu. Mais ils ont toujours un module de configuration - ou à défaut un fichier d'initialisation - à modifier pour indiquer au moteur le chemin vers les tables. Voyons ça sur un exemple, avec Stockfish :
1/ D'abord faire de Stockfish le moteur 1 d'Arena (Menu "Modules" > "Gérer" et choisissez Stockfish).
2/ Ensuite menu "Modules" > "module1" > "configurer", pour ouvrir le menu de configuration.  Dans le champ "Syzygy path", allez chercher le chemin de la base Syzygy.

Comment les moteurs utilisent-ils les databases ?

Par défaut, Arena conduit les moteurs UCI vers le dossier "TB". Si vous voulez le vérifier : menu "Modules" > "Gérer", onglet "Détails", puis onglet "UCI". Assurez-vous que "Chemin des tablebases communes (Nalimov)" est coché et que le chemin vers le dossier "TB" est bon.

Remarques : si vous avez installé les tables Gaviota et les tables Nalimov, vous n'avez pas à choisir entre les deux. L'adresse du répertoire "TB" suffit.  
Vous pouvez cocher aussi "Cache des tablebases communes (Nalimov)" et choisir une valeur - par exemple 64 mo. Dans ce cas, cette valeur sera commune à tous les moteurs utilisant les EGTB Nalimov. Vous n'auriez plus besoin de vous en soucier.



Pour les moteurs Winboard, le principe est le même. Ouvrez l'onglet "Winboard" : il y a trois chemins par défaut : vers Gaviota, vers Scorpio et vers Nalinov. Là, par contre, vous devez être très précis dans l'adressage.



L'ensemble de ces paramètres sont communs à tous les moteurs d'Arena. Autrement dit, si vous avez copié vos fichiers dans les bons répertoires et si tout est bien coché et renseigné, vous n'avez en principe pas à y revenir chaque fois que vous installez un nouveau moteur. Celui-ci devrait être capable d'aller chercher de lui-même ce dont il a besoin. Cependant ces réglages ne sont valables que pour ceux qui utilisent les tables Nalimov ou Gaviota.


Pour tous les moteurs n'utilisant pas de tables de finales, vous devez aussi indiquer à Arena s'il doit lancer la consultation de ses tables Gaviota : menu "Options" > "Configuration tablebases". Cochez la case  "Utilise tablebases des finales" et assurez-vous que le nombre de pièces que vous avez installé est bien reconnue par Arena, comme sur l'illustration ci-dessous.
Vous devrez aussi indiquer ici à Arena le chemin vers les répertoires à 3, 4 et 5 pièces.



Remarque : ne perdez pas de vu que le processus de consultation des tables consomme des ressources-machine, surtout les fichiers à 5 pièces. Vous devez donc vous demander si les tables ne devraient pas être désactivées par défaut.





Visionner le travail des tables de finales

Si Arena est configuré pour utiliser les tables de finales, il pourra afficher le résultat des consulations dès qu'il n'y aura plus que trois, quatre ou cinq pièce sur l'échiquier de la partie en cours. Deux cas peuvent de présenter :

Le moteur en fonctionnement ne gère aucune table de finales :
dans ce cas, Arena consulte lui-même les tables Gaviota si cela n'a pas été interdit par la confiuguration de l'interface. Vous pouvez bien sûr afficher le résultat de ces consultations  : sous les boutons de déplacement vous avez quatre discrets petits onglets qui ont pour nom "Liste de coups", "Biblio./Tb", "Mix 1" et "Temp". Si vous sélectionnez "Biblio./Tb" puis "Mix 1" l'espace se partagera entre la liste des coups à gauche et les données des tables à droite, comme sur l'exemple ci-dessous.



Ici AnMon joue contre lui-même une partie où il ne reste que cinq pièces sur l'échiquier. Dans cette position, les tables de finales indiquent que si au prochain coup la tour noire prend la tour blanche c6, les noirs peuvent encore faire partie nulle. Tous les autres coups prédisent la défaite des noirs en un nombre de coups variables.


Evidemment, cette suggestion de coup n'est pas communiqué au moteur qui pourrait très bien en jouer un autre. L'interface ne pourra donc pas suppléer à une déficience du moteur en la matière.


Le moteur accède lui-même à des tables de finales : dans ce cas, c'est le retour de la consultation du moteur que vous pourrez observer, de la façon que vu ci-dessus, même si ce moteur utilise les tables Syzygy.Arena fait ici la démonstration de l'excellente intégration des tables de finales dans son fonctionnement global.


Avec Scid

L'intégration des tables de finales dans l'interface Scid est moins poussée que dans Arena. Le gestionnaires de bases de parties s'appuie sur les tables Nalimov et ne pourra pas en exploiter d'autres - même par moteur interposé.
Comme pour Arena, la fenêtre "Tables de finales" de Scid commence  à afficher des données dès que le nombre de pièces limite est atteint (3, 4 ou 5 pièces restantes). Si une partie est en cours, la fenêtre s'actualise à chaque nouveau 1/2 coup. Mais le moteur en fonctionnement peut bien utiliser les tables Syzygy, ce sont toujours les résultats des requêtes de Scid dans les tables Nalimov qui s'afficheront.  



Pour les blancs, si la partie est parfaitement menée jusqu'à la fin, les perspectives de victoire sont fortes (21 coups y mènent) et les risques de perte nuls, dans cette situation.


L'interface sera donc plus adaptée à l'étude post-mortem des parties. La présentation des données de consultation est claire et agréable : dans la section "Résultats" de la fenêtre dédiée sont indiquées d'abord les perspectives de gain (Win), de perte (Loss) ou de nul (Draw) pour la couleur au trait. Viennent ensuite dans l'ordre : les coups gagnants, s'il y en a, les coups menant à la nullité, s'il y en a,  et enfin les coups perdants.
Autre petit plus par rapport à Arena : la présentation de données statistiques tirées d'une grosse base de données dont Scid dispose. Ce sont toutefois des données très générales, sans lien directe avec la finale en cours. Pour en savoir plus, voir : Scid - Tables de finales




Et pour Lucas Chess ?

Lucas Chess ne propose aucun moyen de consultation des résultats des tables de fin de parties. Pire : sur les 51 moteurs qu'il met en batterie, beaucoup sont capables d'utiliser un format de table ou un autre, mais rien ne permet de leur indiquer où sont vos tables, si vous en disposez. L'interface, comme vous le savez peut-être, ne propose aucun accès à un éventuel fichier de configuration pour les moteurs internes. Seuls les moteurs utilisant les tables Syzygy pourront lire les fichiers à trois pièces, présents dans la distribution de Lucas Chess.
En revanche, tout moteur "externe", que vous auriez installé vous-même dans Lucas Chess, pourra être éventuellement paramétré depuis son propre menu de configuration (ou par modification d'un fichier d'initialisation), s'il est disponible. Pour  les 23 moteurs que j'ai sélectionné pour vous, ce sera le cas pour : Leela Chess Zero, Komodo, Stockfish, Smarthink (utilisent les tables Syzygy), Fruit, AnMon et Mustang (utilisent les tables Nalimov), Houdini 1.5a (tables Gaviota)...





Réglage pour limiter l'accès aux EGTB

Les moteurs les plus modernes et les plus puissants, tels que Stockfish, Komodo ou Houdini, sont déjà très performants, sans accès aux tables de finales. Il est même probable que s'ils y accédaient sans restriction, ils perdraient de la force au lieu d'en gagner, surtout avec les EGTB stockées sur un disque dur mécanique. C'est pourquoi ces moteurs puissants proposent un paramètre de type "Probe Depth", qui va déterminer la profondeur de recherche la plus basse à partir de laquelle le moteur accèdera aux tables de finales, plutôt que de se contenter de son évaluation interne. Par exemple "Hard_Pro_Depth" (Houdini), SyzygyProbeDepth (Stockfish, Komodo)...
Le principe : plus votre disque dur est lent, moins votre processeur est puissant et moins vous avez de coeurs, plus vous avez intérêt à augmenter cette valeur.

Comme pour l'évaluation interne avec les tables de hachage, les données déjà obtenues par les accès EGTB peuvent être stockées dans une mémoire cache spécifique, dont la taille peut varier. Cette table porte un nom comme "NalimovCache" (Fruit, AnMon), GaviotaTBCache (anciennes versions d'Houdini) TBCacheSize (Mustang)...
Si vous avez au moins 4 Go de mémoire porter cette valeur à 64 Mo me parait judicieux. Si vous ne manquez pas de mémoire, 128 Mo sera bien sûr encore mieux.


Syzygy à 7 pièces en ligne

Durant longtemps la disponibilité gratuite des tables Syzygy à sept pièces n'étaient que théorique. Il fallait en effet une machine monstrueuse pour générer les fichiers dans un temps raisonnable et trouver un espace assez grand pour les stocker. Bojun Guo et Ronald de Man l'on fait pour nous. Ils proposent gratuitement une page où les consulter pour analyser une position, Lichess ayant offert de son côté d'héberger l'énorme masse de données (16 térabits, je rapelle). Ces tables peuvent être consultées de deux façons : directement depuis le site de Guo et de Man, ou par l'entremise de l'échiquier d'analyse de Lichess.


Le site de Guo et de Man

C'est un simple éditeur de position. Soit vous créez vous même ici la configuration de la finale, soit vous collez une position sous forme de FEN dans le champ adéquat, sous l'échiquier (notez que vous pouvez aussi prélever le FEN de la position que vous venez d'éditer...). La consultation des tables est instantanée. Chaque coup possible est classé par victoire, nulle ou perte (Win Draw Loss). Vous est indiqué également la DTZ, c'est-à-dire la distance à zéro du compteur pour la règle des 50 coups.




Tablebases de Lichess

Lichess utilise les Syzygy depuis son module d'analyse. Lorsque le site détecte une configuration de fin de parties (7 pièces ou moins sur le plateau), le module d'Arbre d'ouvertures devient automatiquement module de fin de parties et se met à lire les tables. Il suffit soit de partir depuis une configuration de l'éditeur de positions, soit de coller une position FEN dans le champ adéquat.  Si nécessaire, référez-vous à mon manuel gratuit de Lichess




Rob Rob, mai 2019 (page réécrite en décembre 2024)

 
 
 
 
 
 
Retourner au contenu | Retourner au menu _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })();