Komodo - Echecs et informatique sur PC-Windows

Rechercher
Aller au contenu

Menu principal :

Moteurs

Komodo et Dragon by Komodo
Parfait pour l'analyse et le conseil






Créé en 2007 par Don Dailey et Larry Kaufman, deux grands noms des échecs informatiques, Komodo a gravi rapidement les échelons. En 2013, alors que Don Dailey se mourrait d'une leucémie, la version 6 remportait pour la première fois le TCEC, la plus prestigieuse des compétitions ouvertes aux moteurs d'échecs. Mark Lefler a remplacé Don Dailey en tant que programmeur principal et Komodo a poursuivi sa route jusqu'à aujourd'hui sans jamais quitter le peloton de tête des plus forts moteurs d'échecs du monde. En 2021 Komodo a intégré la nouvelle technologie NNUE et a donné naissance à une nouvelle lignée : Dragon by Komodo, qui affiche actuellement (en octobre 2023) plus de 3500 Elo en format 40/15, à quelques petits points Elo derrière Stockfish et ShashChess.

Mais ce qui différencie Komodo de la plupart des autres très forts moteurs, c'est la qualité de son jeu : Komodo et Dragon restent des moteurs équilibrés entre stratégie positionnelle et capacités tactiques. Moyennement forts en calcul, mais soutenus par une connaissance aiguë de la position, ils offrent un jeu très solide et qui reste d'apparence humaine. Ce sont des moteurs parfaits pour l'analyse et le conseil.
Lorsque Komodo a dépassé Rybka en force en 2009, le moteur est devenu un produit commercial. Cependant les auteurs ont toujours eu à cœur de proposer gratuitement des versions plus anciennes. Ainsi, depuis peu, ils nous offrent la première version Dragon de Komodo, datant seulement de novembre 2020. Une véritable aubaine !




IMPORTANT : l'article ci-dessous a été rédigé il y a plusieurs années sur la base de l'examen de Komodo 12 1.1 mais les auteurs ont libéré successivement plusieurs versions plus récentes : la V 13.02, puis la 14.1 et enfin, dernièrement, la première version Dragon by Komodo. Elle est nettement plus puissante, avec un Elo estimé à environ 3450 Elo sur une bonne machine à quatre cœurs. Bien entendu, ce n'est pas la seule amélioration.
Pour l'essentiel, tout ce qui a été écrit pour Komodo 12 1.1 et Komodo 13.02 reste valable. On note juste par-çi, par-là, des changements dans les valeurs par défaut de certains paramètres. Je me contenterais donc pour le moment de simplement faire état de ce qui est nouveau, en particulier de l'intégration de la technologie NNUE.


(voir aussi la page du blog consacrée à Komodo 13)


Dragon by Komodo offert gratuitement

Komodo est un engine commercial mais ses ayant-droits ont l'habitude de mettre dans le public d'anciennes versions. Longtemps, ce role de vitrine a été dévolu à Komodo 9. Il y a quelques années, alors que Komodo 14 venait d'être commercialisé, les versions 10 et 11 ont été mises en libre téléchargement sur le site officiel.  Plus récemment ce sont les versions 12 et 13 qui sont devenues "free" puis la première version Dragon by Komodo, datant de novembre 2020. C'est une nouvelle importante car  Dragon by Komodo représente un saut technologique important par rapport à Komodo.  
Disponible pour Linux, MacOs et Windows, en version 32 et 64 bits (seul Komodo 8 est proposé avec une version Androïd), Dragon by Komodo première version approche les 3450 Elo sur une bonne machine à quatre coeurs et offre en prime un mode Monté-Carlo Tree Search - utilisable uniquement si on le souhaite. En effet, ce système substitue une évaluation probabiliste à l'habituelle évaluation logique de Komodo, ce qui fait perdre de la force au moteur mais lui donne une personnalité différente, beaucoup plus offensive et d'allure plus humaine.


Dragon by Komodo 1 et Komodo 14.1 :
ce qui est nouveau



Comme toujours, Dragon 1 bénéficie par rapport aux précédentes versions d'un grand nombre d'améliorations dans beaucoup de domaines. Ainsi, le mode MCTS est nettement plus fort lui aussi. Toutefois la principale grande nouveauté de Dragon par rapport à la lignée Komodo réside dans la mise en place d'une évaluation NNUE.
Les nouveautés apparues sur Komodo 14.1 (et donc je n'avais pas encore parlé) sont bien sûr disponibles aussi sur la version Dragon. Il s'agit principalement des sept personnalités alternatives, du mode Armageddon et du réglage de force Skill / AutoSkill.


Evaluation NNUE

La mise en place de l'évaluation NNUE a permis au moteur de faire un bond de force spectaculaire. J'ai un peu de mal à m'y retrouver avec les côtes Elo des différentes versions de Komodo... mais il semblerait que sur une configuration très musclée, avec huit coeurs actifs, on passe avec Dragon 1 de 3400 à 3450 Elo. C'est déjà bien mais d'après Mark Lefler et Larry Kaufman ce sont sur les configurations les plus faibles que le gain de force de la version NNUE est considérable. On parle d'environ 200 Elo sur une machine à simple cœur!
Dragon fonctionne par défaut en mode NNUE. Si vous ouvrez son menu de configuration vous verrez que le paramètre "Use Regular Eval" est décoché. Si vous le cochez, Dragon tournera dans le mode ancien, fournissant un jeu identique à celui de Komodo 14.1. Mais cela ne présente pas beaucoup d'intérêt.


Menu de configuration de Dragon by Komodo dans Arena

Depuis "WeightsFile" il est théoriquement possible de charger un autre réseau neuronal mais en pratique ce champ ne sert à rien car les auteurs ne fournissent pas de réseau alternatif et il n'est pas possible d'utiliser d'autres réseaux, par exemple ceux de LC0.
Le champ "NNU-scale" n'a lui non plus aucun intérêt pratique puisqu'il permet juste d'ajuster un hypothétique réseau externe réglé sur des plages d'évaluation différentes.


Personality

Le champ "Personality" s'ouvre sur un pop-up permettant de choisir parmi sept nouvelles personnalités pour le moteur. C'est une très belle amélioration ! Nous avons :
"Agressive" : cette personnalité a un style romantique. Elle déploie un jeu très actif, attaquant sans relâche et sans se préoccuper de sa propre sécurité. Elle a une préférence pour la reine.

"Defensive" : personnalité conservant une position solide et mobilisant beaucoup de pièces pour assurer la protection de son roi.
"Active" : personnalité au jeu très dynamique, recherchant prioritairement la maîtrise de l'espace dans des positions très ouvertes.
"Positionnal" : la personnalité positionnelle tend vers un jeu solide, de préférence dans des positions fermées.
"EndGame" : personnalité qui poursuit le but d'arriver coûte que coûte en fin de partie pour promouvoir un pion.
"Beginner" : personnalité volontairement affligée de défauts typiques de joueurs débutants. Par exemple, elle sera particulièrement avide des pièces de l'adversaire et très mauvaise en fin de partie.
"Human" : cette personnalité est censée jouer comme un maître humain fort. Elle est assez agressive,  "évitant les simplifications et les répétitions inutiles, en visant des positions ouvertes et en mettant l'accent sur les avantages statiques". Le mieux est de la faire jouer pour voir vraiment de quoi il retourne...

Toutes ces personnalités ont pour but de fournir des partenaires de jeu pour joueurs humains et doivent donc être utilisées avec un niveau de force ("Skill") nécessairement inférieur à 25 (voir ci-dessous).
Il serait aussi certainement opportun de changer la valeur de "Variety", par défaut sur zéro. Une valeur positive poussera le moteur à jouer de temps à autre un coup un peu moins bon que le meilleur trouvé. Bien entendu cela signifie que le moteur va s'affaiblir un peu. Avec Variety sur 40, par exemple, il faudrait s'attendre à une perte de l'ordre d'une dizaine de Elo.



Skill et Auto Skill

Skill est un réglage permettant de limiter la force du moteur. C'est une jauge qui s'étend de 1 à 25. A 1 le moteur à l'intelligence d'un enfant en bas-âge ; à 25, valeur par défaut, il est à la force maximale, soit plus de 3400 Elo sur une bonne machine avec quatre cœurs actifs. La force baisse approximativement de 200 points Elo sur les deux premiers niveaux puis de 125 Elo par palier, pour atteindre 250 Elo au niveau 1.


Les auteurs préviennent que le niveau de force dépend du nombre de cœurs activés. Pour deux cœurs, je conseille de retrancher 50 Elo et pour un cœur 100 Elo.
Pour les niveaux 1 à 23 ces réglages seront probablement assez fiables quelque soit la machine utilisée si elle est assez récente. Les deux derniers niveaux dépendent en partie de la puissance de votre matériel.

Sur les versions les plus récentes de Dragon, les développeurs du moteur ont enfin renoncé à ce réglage Skill pour le remplacer par un réglage de type "UCI_Elo", beaucoup plus parlant, pour lequel on choisit directement un niveau Elo. Il faudra attendre encore quelques années, sans doute, pour en bénéficier sur une version libérée.

L'auto Skill est un système qui force le moteur à abaisser son niveau de jeu si vous êtes vraiment dans les choux ou au contraire à l'augmenter si votre position venait à être nettement supérieure. Par défaut, AutoSkill est bien sûr désactivé.



Armageddon


Armageddon est un mode jusqu'au-boutiste pour lequel le facteur Contempt est poussé au maximum. Autrement dit, le moteur voudra gagner, quoi qu'il arrive, qu'il soit blanc ou noir. Annuler revient à perdre.



Un style positionnel et prudent


Proche par son jeu du célèbre moteur commercial Shredder, Komodo et son successeur Dragon offrent un jeu solide mais assez peu entreprenant, plutôt défensif et matérialiste. Si je devais absolument les ranger dans une case, je dirais que Komodo et Dragon, du moins en mode "normal" (non-MCTS - voir plus bas), sont des "attaquants positionnels" dont le jeu évoque Karpov ou plus près de nous Magnus Carlsen. Ils sont agressifs non pour acquérir du matériel ou pour forcer le mat mais pour obtenir un avantage positionnel. Sachez néanmoins qu'ils vous attaqueront quand même avec vigueur si vous leur donnez une bonne occasion de le faire.




Sommaire

Téléchargement
Installation
Configuration
    Paramètres généraux
        Contempt
        Gestion des bibliothèques d'ouvertures
        Table de fin de parties Syzygy
    Paramètres de l'évaluation alpha/bêta
        Table de hachage
        Elagage de l'arbre des coups
        Autres paramètres
    Paramétres du mode Monté-Carlo
Le mode Monté-Carlo : avantages, inconvénients et restrictions
    Plus offensif et plus humain
    Moins fort sauf avec le MultiPv activé
    Bonne configuration matérielle indispensable
    Points divers
Komodo pour le conseil et l'analyse
    Généralités
    Laisser du temps au moteur pour réfléchir
    Préparer l'environnement matériel
    Bien configurer le moteur



Téléchargement

On téléchargera le moteur sur la page officielle. Télécharger Komodo Free ?

Komodo utilise les bibliothèques d'ouvertures au format polyglot (*.bin). Les différentes versions de Komodo sont fournies sans bibliothèque mais vous trouverez sur la page de téléchargement la "Komodo 3 Polyglot book by Salvo Spitaleri", qui accompagnait Komodo 3. Téléchargez-là,  copiez là dans le dossier du moteur et vous pourrez depuis le menu de configuration indiquer le chemin pour la trouver. Tout autre bibliothèque d'ouvertures polyglot pourra être utilisée de la même façon.




Installation

Pour Arena :

1/ Collez la bibliothèque "komodo.bin" dans le dossier de Komodo (ou une autre bibliothèque polyglot)
2/Menu "Modules" > "Installer nouveau module" et allez chercher celui des deux exécutables qui s'accorde le mieux à votre ordinateur:

➤"dragon-64bit.exe" (Wpour indows 64 bits standard)
➤"dragon-64bit-avx2.exe" (pour Windows 64 bits plus évolués)
Notez qu'il n'est plus proposé de versions pour vieux systèles en 32 bits.


Menu de configuration de Dragon dans l'interface Lucas Chess

Komodo 13.02 est déjà un moteur interne de Lucas Chess mais pas encore Dragon. Il est donc intéressant de l'installer en "externe" : menu "Jouer" > "Jouer contre un moteur", onglet "Configuration", onglet "Nouveau" et allez chercher l'exécutable du moteur là où il se trouve sur votre ordinateur. Notez que la configuration du moteur peut se faire dès ce stade en changeant les paramètres dans la partie droite du menu.


Configuration

Le module de configuration de Komodo, accessible avec Arena depui "Modules" > "Module 1" > "Configurer"  permet de faire de très nombreux réglages. Komodo 12 étant proposé avec évaluation classique ou avec recherche Monté-Carlo, il importe de distinguer les paramètres valables pour les deux systèmes, ceux qui concernent l'évaluation classique et celle de la recherche MCTS.
Etant donné le nombre élevé de réglages, j'indique par +++ les paramètres les plus importants, par ++ ceux qui compte et par + ceux, moins importants, que vous pourriez négliger.


Paramètres généraux


Threads +++: indiquez ici, de préférence, le nombre de coeurs physiques de votre ordinateur.  C'est un paramètres important. Si vous avez quatre coeurs et que vous laissez ce paramètre sur "1", la puissance de Komodo sera très inférieure à ce que vous pourriez espérer.


Remarque : le fichier d'aide recommande de désactiver l'Hyperthreading si vous avez plus de six coeurs physiques.

MultiPv ++: Komodo gère bien sûr le MultiPv. Par défaut seule une piste de recherche est explorée - ce qui équivaut à dire qu'il est désactivé. Si vous l'utilisez pour l'analyse ou le conseil, vous pouvez lui demander d'en explorer quelques autres mais la chute de Elo est importante. Prévoir d'allonger le temps de réflexion.
Dans ce domaine, la recherche MCTS est particulièrement performante car elle permet de suivre un très grand nombre de pistes en mobilisant très peu de ressources-machine supplémentaire. Sur trois ou quatre pistes elle devient plus performante que la recherche classique.  

Ponder ++ : par défaut, la pondération est désactivée. Autant la laisser ainsi.

UCI Chess 960 ++ : si ce paramètre est coché, le moteur jouera avec les règles des échecs aléatoire de Bobby Fischer, une variante assez intéressante des échecs pour laquelle la position des pièces mineures et lourdes est tirée au sort en début de partie.

Time usage + : ce paramètre permet de manipuler le contrôle du temps de Komodo. Le paramètre par défaut, "0" est à priori le meilleur et conviendra à la plupart des situations. Si on choisi une valeur négative, Komodo prendra moins de temps à réfléchir et jouera donc plus rapidement. Si on l'augmente, c'est l'inverse. Le paramètre peut être réglé entre -90 et +90 mais, indiquent les auteurs, il est prudent de ne tester que de faibles variations.
L'utilité de "Time usage" est de permettre de compenser le temps nécessaire à transmettre les données à l'interface dans les cas où l'on fait tourner Komodo sur un ordinateur très peu puissant ou lorsque Komodo est utilisé pour jouer à distance avec une connexion à bas débits. Au temps de jeu du moteur s'ajoute en effet le temps de transfert à l'interface et le moteur, dans les pires des cas, peut arriver en zeinot et perdre au temps. Evidemment, comme on réduit le temps de réflexion du moteur, il faut s'attendre aussi à une baisse de force.

Overhead ms + : ce paramètre gère le temps laissé à l'interface pour prendre en compte le transfert d'informations depuis le moteur. Son but est de compenser une éventuelle lenteur d'une interface tournant sur une machine peu performante, par exemple un vieux portable, ou dans le cas d'une connexion à distance.
La valeur par défaut est réglé sur 40 millisecondes et dans la grande majorité des cas, vous n'aurez pas à la changer.  

Log file + : si vous voulez avoir une sortie texte du fonctionnement de Komodo, demandez lui d'aller sauvegarder un fichier - que vous appellerez "logfile" -  dans le dossier du moteur.

Minimal reporting + : ce paramètre diminue la quantité d'information qui sera affichée par le output moteur. A moins que vous n'ayiez un ordinateur du siècle dernier, vous ne devriez pas toucher à la valeur par défaut, "0", qui ne limite aucunement les données affichées.
Il s'agit de prendre en charge les situations où le débit de communication entre l'interface et le moteur est faible, par exemple si vous utilisez Komodo sur Internet via un serveur de parties en ligne ou un réseau privé, avec une connexion limitée. Concrètement, la valeur x choisi correspond aux premières x plis qui ne seront pas affichées par le output moteur.


FACTEUR DE "MEPRIS"

Contempt ++ : le contempt ou "mépris" est utilisé par l'évaluation de l'ordinateur pour encourager (valeur négative) ou décourager (valeur positive) les échanges de pièces, les structures de pions bloquées et les nullités intempestives. Il traduit l'optimisme plus ou moins grand du moteur face à sa situation sur l'échiquier. Un contempt fortement négatif poussera par exemple le moteur à accepter la nullité de la partie dans des situations proches de l'égalité.
La valeur par défaut est maintenant de 16 centipawns, ce qui devrait aider contre les adversaires les plus faibles, indique la documentation. Le moteur sera en effet enclin à accepter la nullité assez facilement. Contre un adversaire humain, il doit être d'au moins 40, même s'il est le champion du monde. Pour plus de précisions, se référer à la documentation anglaise du moteur.

White Contempt + : si ce paramètre est coché, Komodo utilisera la valeur de Contempt du point de vue des blancs. Par défaut White Contempt est décoché. Le mieux est de le laisser ainsi. Pour plus de précisions, voir la documentation du moteur.


GESTION DES BIBLIOTHEQUES D'OUVERTURES

Ici, vous devez d'abord décider si vous allez demander au moteur d'utiliser sa ou ses propres bibliothèques d'ouvertures ou bien laisser l'interface s'en occupper. Ensuite, sélectionner une ou plusieurs bibliothèques .bin à utiliser et enfin indiquer à Komodo où se trouve celle que vous voulez employer.

OwnBook +++ : si coché (choix par défaut), OwnBook va ordonner au moteur de lire dans le répertoire du moteur la bibliothèque "komodo.bin" - qui initialement ne s'y trouve pas ! Il faut donc copier une bibliothèque "komodo.bin" à cet emplacement.  Ou bien , utiliser "Book file" pour guider le moteur vers une autre bibliothèque.
Si décoché, vous devrez demander à l'interface utilisé de gérer elle-même les bibliothèques.

Pour Arena, menu "Modules" > "Gérer" puis choix du moteur dans la liste, onglet "Détails", onglet "Bibliothèque" et cocher "Utiliser bibliothèque principale d'Arena" ou faîtes un autre choix avec le sélecteur de fichiers.
Avec Lucas Chess c'est la bibliothèque par défaut, "GMopenings.bin", qui est utilisée automatiquement. Mais lorsque vous débutez une partie, vous pouvez changer de bibliothèque depuis l'onglet "Coups initiaux" du menu. N'importe quelle bibliothèque Polyglot valide (extension .bin) pourra être utilisée. Dans la zone "Activer répertoire : adversaire" (qui doit être coché) cliquez sur le petit "+" Bleu à côté de "GMopenings". C'est le sélecteur de fichiers qui vous permettra d'aller chercher où vous voulez la bonne bibliothèque .bin. L'intérêt de procéder ainsi est double : 1/ Vous pouvez limiter ici la profondeur d'utilisation de la bibliothèque (par défaut 8 coups) 2/ Vous pouvez forcer une ouverture particulière ou agir sur les paramètres de sélection d'une ouverture :
Aléatoire équitable : tirage au sort de n'importe quelle ouverture
Aléatoire proportionnel : tirage au sort aléatoire mais proportionnel au nombre de fois où l'ouverture a été utilisée dans l'échantillon qui a servi à créer la bibliothèque. Une ouverture fortement utilisée aura plus de chance d'être sélectionnée qu'un ouverture très peu utilisée.
Toujours le pourcentage le plus élevé : sélection des ouvertures qui ont donné le plus de victoires - donc les plus performantes.

Book file +++ : sélecteur de fichier permettant de lier le moteur avec une autre bibliothèque polyglot.

Best book line ++ : si la case est cochée, Komodo utilisera les lignes d'ouvertures les plus performantes. Ce qui veut dire qu'il aura tendance à jouer toujours le même petit nombre d'ouvertures. Si vous décochez la case (valeur par défaut), Komodo pourra choisir de temps en temps une ligne au score moins élevé. Il perdra un petit peu en force mais ses ouvertures seront plus variées.

Book Moves ++ : ici est défini le nombre de mouvements, exprimé en 1/2 coups, qui seront pris en compte dans l'ouverture. La plage de valeur s'étend de 0 à 1000. 1000 est le choix par défaut. Autant dire qu'il n'y a pas de limitation ! Si vous voulez que la bibliothèque ne soit utilisée que pour les 10 premiers coups des blancs et les 10 premiers coups des noirs, il suffit de donner la valeur 20 à Book Moves.

Remarque : en mode MCTS, Komodo refuse d'utiliser sa propre bibliothèque. Par contre si le moteur est réglé dans Arena pour employer l'une des bibliothèques de l'interface (ou sa bibliothèque principale), ça fonctionne.  


TABLES DE FIN DE PARTIES SYZYGY

Pour géer ses fins de parties Komodo peut s'appuyer sur les tables Syzygy, si vous les avez (voir le dossier sur les tables de finales).

Use Syzygy +++, SyzygyPath +++ et Syzygy 50 Moves rule ++ : "Use Syzygy" est coché par défaut, ce qui signifie que le moteur va tenter de lire les tables lorsqu'il ne restera que cinq pièces ou moins sur l'échiquier. Vous devrez cependant indiquer, avec "SyzygyPath", où elles se trouvent sur votre ordinateur. Si vous n'avez pas les tables, décochez "Use Syzygy" (ce n'est pas très grave si vous oubliez de le faire).
"Syzygy 50 Moves rule" est coché par défaut, afin d'éviter d'interminables finales (voir règle des "50 coups").


Les accès aux tables de fin de parties peuvent être couteux en temps et abaisser la force du moteur au lieu de lui en faire gagner. Les choix à faire dépendent essentiellement de la performance de votre matériel et du nombre de pièces gérés par les tables. Si vous avez les tables Syzygy à six pièces, mais que vous ne disposez que d'un simple ordinateur de bureau avec un disque dur mécanique, Komodo va passer son temps à sonder les tables et perdra à tous les coups beaucoup de points de Elo. Or, les paramètres par défaut sont très optimistes sur les capacités de votre matériel ! Pour la majorité des utilisateurs, il sera nécessaire de restreindre l'accès aux tables et/ou d'augmenter la capacité de votre ordinateur - par exemple en ajoutant de la mémoire et en adoptant un disque dur SSD.
Dans le cas où vous devriez vous contenter d'un matériel moyen, le menu de configuration offre plusieurs possibilités pour que votre ordinateur soit moins solicité.

Syzygy ProbeDepth ++, Syzygy Probe Limit ++ et Smart Syzygy +++

Syzygy Probe Depth
détermine la profondeur en 1/2 coups à partir de laquelle les tables de finales seront sondées à la place de l'évaluation interne. Le chiffre par défaut est très bas (2) si vos tables sont stockées sur un disque dur mécanique. En effet cela signifie qu'elles seront sondées très tôt, ce qui va occasionner un ralentissement de la réflexion et probablement une baisse de la force. une valeur de 6 à 10 sera probablement mieux, d'autant que Komodo est naturellement fort en finale même sans recours aux tablebases. Par contre si les tables sont sur un disque dur SSD, 7 ou 8 fois plus rapide, une valeur inférieure à 6 est recommandée.


Syzygy Probe Limit détermine le nombre de pièces restant sur l'échiquier à partir duquel Komodo va commencer à sonder les tables Syzygy. Par défaut, il est défini sur 6, alors que vous n'avez probablement, comme moi, que les tables à 5 pièces. Autant mettre le bon chiffre dans le champ. J'en profite pour dire qu'il ne serait pas raisonnable d'installer les 150 Go des tables Syzygy à 6 pièces sur une machine ordinaire puis de laisser Komodo les sonder sans restriction. Pour explorer une base aussi grosse, il faut des processeurs musclés, 8 Go de mémoire au moins et un disque dur SSD.

Smart Syzygy, s'il est activé, va limiter le recours aux tables, en tenant compte des valeurs de Probe Deth et de Probe Limit. Ce paramètre, décoché par défaut, est prévu pour compenser la lenteur d'un disque dur mécanique. On considère donc que vous avez un disque SSD ! N'oubliez pas de cocher Smart Syzygy si ce n'est pas le cas. Inversement, ne cochez pas Smart Syzygy si vous avez un disque SSD...

Remarque : le mode MCTS utilise bien les tables de finales

Paramètres de l'évaluation alpha/bêta

Ce sont les paramètres qui agissent sur la fonction d'évaluation classique de Komodo mais restent sans effets sur la recherche MCTS.

TABLE DE HACHAGE

Hash +++ : ici est définie la quantité maximale de mémoire que va utiliser la table de transposition. C'est un paramètre à bien maîtriser pour obtenir un jeu performant. La valeur par défaut, 192 Mo, est suffisante pour des parties rapides ou blitz. Mais si vous utilisez Komodo pour jouer une partie de longue durée ou pour le conseil et l'analyse, il faudra l'augmenter. 500 Mo est une bonne valeur si vous avez au moins 4 Go de mémoire ram.

Hash File name + : sur Komodo 12, il est possible d'interrompre une analyse approfondie d'une partie et de sauvegarder le contenu de la table de hachage, afin que le moteur puisse travailler plus rapidement lorsque vous reprendrez l'analyse. Mode d'emploi : avant de commencer l'analyse, ouvrez le menu de configuration du moteur et utilisez le sélecteur de fichier de "Hash File Name" pour donner un nom au fichier et une localisation sur votre ordinateur, de préférence dans le répertoire de Komodo.
Lorsque que vous interromprez l'analyse, vous reviendrez au menu de configuration et vous cliquerez sur le bouton "Save Hash to File". Le contenu de la table sera sauvegardé sur votre disque dur.
Avant de reprendre l'analyse, vous reviendrez dans ce menu cliquer sur le bouton "Load Hash from File", pour recharger la table.

Table Memory ++ : ce paramètre détermine la quantité de mémoire que Komodo allouera à diverses tables internes telles que la table de hachage de la structure du pion, le cache d'évaluation et d'autres. Par défaut, elle est fixée à 128 Mo, une valeur correcte pour des parties rapides ou blitz. Pour une utilisation de Komodo à plus haut niveau, par exemple pour le conseil ou l'analyse, 256 Mo sera mieux.

Clear Hash + : cliquez sur ce bouton pour vider la table de transposition.

A noter : un moteur comme Komodo, utilisé à haut niveau, consomme beaucoup de ressources machine et de mémoire. Si vous l'employez comme tuteur, il est probable que vous utilisez également un autre moteur, celui contre lequel vous êtes en train de jouer. Il  est donc indispensable de fermer toutes les applications inutiles, et en particulier les navigateurs internet, gros consommateurs de Ram. Personnellement, je fais un "Ctrl Alt Suppr" et j'arrête manuellement tous les processus et services dont je n'ai pas immédiatement besoin (voir aussi "Comment régler une table de hash?")

Remarque : le mode MCTS fonctionne avec sa propre (grosse) table de hachage, mais comme il utilise aussi une mini-évaluation alpha-bêta, il faut conserver une table de hachage minimale.



ELAGAGE DE L'ARBRE DES COUPS

Komodo met en œuvre deux gammes de procédés pour élaguer l'arbre des coups des branches qui, pour différentes raisons, lui donnent à penser qu'elles seraient moins productives. Grâce à elles, le moteur peut explorer beaucoup plus profondément et gagne considérablement en force. Ces procédés ont tous le même défaut : le moteur va forcément laisser de côté de temps à autre des lignes qui auraient pu être fructueuses. Il pourra aussi louper quelque chose d'important. C'est pourquoi, si vous utilisez Komodo pour analyser une partie, vous pourriez avoir intérêt, selon le résultat recherché, à réduire l'efficacité des procédés d'élagage et à augmenter, pour compenser, le temps que vous laisserez au moteur pour effectuer son analyse. Le résultat sera obtenu plus lentement mais sera de meilleure qualité (voir ci-dessous).


Use LMR ++ : LMR (Late Move Reductions) est une technique de recherche conçue pour réduire de manière agressive certains mouvements dans l'arborescence de recherche, afin d'obtenir de plus grandes profondeurs. C'est une bascule : ou vous élaguez ou vous n'élaguez pas. Mais "Reduction" permet plus loin de paramétrer l'élagage, si LMR est activé.
En général, Komodo joue beaucoup plus fort avec LMR activé. Si vous l'éteignez, la recherche sera moins profonde mais certaines positions seront mieux explorées.
A noter : par défaut, l'algorithme est activé.  

Null Move Pruning ++ : comme LMR, c'est aussi une technique pour élaguer l'arbre de recherche. Komodo joue beaucoup plus fort avec Null Move Pruning activé, mais peut laisser passer des choses importantes.

Reduction + : contrôle la profondeur des recherches de Komodo. La plage de valeurs s'étend de -1000 à +120. Les valeurs élevées conduisent le moteur à explorer à plus grande profondeur mais au prix du sacrifice de plus de lignes. Selon les auteurs, les valeurs autour de zéro apportent le meilleur compromis entre qualité de la recherche et efficacité de l'évaluation.  
A noter :
LMR est inutile en mode MCTS.

Selectivity + : autre moyen d'ajuster l'agressivité de l'élagage, cette fois en poussant le moteur à élaguer moins ou davantage à de faibles profondeurs. Plage de réglage : 0 à 250. Valeur par défaut : 140. Plus la valeur est élevée plus le moteur élaguera tôt, plus il pourra explorer profondément mais plus il risque de manquer certains mouvements.
Inutile en mode MCTS.

Je crois comprendre que Reduction et Selectivity agisent sur Null Move Pruning et sur LMR, mais je n'en suis pas sûr à 100%.


AUTRES PARAMETRES


King Safety ++ : ce paramètre contrôle l'importance que Komodo accorde à la sécurité de son roi.  Plus la valeur est élevée, plus les effets des attaques sur le roi seront importants dans l'évaluation de Komodo, dont le jeu sera plus défensif. Une valeur faible poussera Komodo à consacrer plus d'effort à son action offensive. La plage de valeur s'étend de zéro à 200. La valeur par défaut est de 70.
King Safety n'a pas d'effet sur l'exploration MCTS.

Dynamism ++ : ce paramètre agit sur le comportement de Komodo en majorant ou minorant l'importance, si j'ai bien compris, de l'évaluation de la mobilité (en gros le nombre de mouvements disponibles à tous moments de la partie). La plage de réglage s'étend de zéro à 400 ; la valeur par défaut est de 140. En dessous, le moteur accordera moins d'importance à sa mobilité. Son jeu sera plus sage, plus conservateur ; en dessus, le moteur sera davantage incité à prendre de risques, à être plus offensif.
Selon les auteurs, un Dynamism fixé à 80 fera perdre 20 à 30 points de Elo - et rendra le jeu du moteur frileux - mais donnera une évaluation plus naturelle, plus humaine.
Les valeurs extrêmes ne sont bien sûr pas recommandées. Elles feront perdre beaucoup de force au moteur.
Dynamism n'a aucun effet sur la recherche MCTS.

Variety ++ : ce paramètre impose au moteur de joueur d'autres coups que celui que son évaluation considère comme le meilleur. A zéro, valeur par défaut, Variety est désactivé et Komodo jouera son meilleur coup. La plage de valeur s'étend de 0 à 20. Plus le chiffre est élevé, plus la variété de mouvements sera grande. Bien entendu, cela fait perdre un peu de force au moteur, mais très peu. Selon les auteurs, l'affaiblissement est à peine d'un point de Elo par tranche de 5 points. Soit 4 points maximum pour la valeur 20. Ca ne vaut pas le coup de s'en priver !

Progress Threshold + (seuil de progression) : le seuil de progression permet de définir le nombre de demi-coups joués sans capture ni avance de pion (selon la règle des 50 coups) pour lequel Komodo commence à tirer le score d'évaluation vers zéro. Plus la valeur est basse, plus le moteur abandonnera tôt une ligne ne donnant aucun progrès pour une autre. La valeur par défaut est de 30, alors qu'elle était à 80 dans les précédentes versions du moteur. Ce qui coûte un ou deux points de Elo, mais fera de Komodo un meilleur outil d'analyse et raccourcira les longues finales.

Skill + : ce paramètre permet de diminuer le niveau de force du moteur. Par défaut, il est à 20, valeur maximale. On peut l'abaisser jusqu'à zéro mais j'ignore à quel niveau de force cela correspond.


Paramétres du mode Monté-Carlo


En ce qui concerne la recherche MCTS, il y a relativement peu de paramètres à régler, l'algorithme étant optimisé automatiquement. Mais puisque nous sommes dans la section "paramétrage", voyons rapidement ce qui nous est proposé (j'approfondirai certains points dans le chapitre suivant).  

Use MCTS +++ : pour activer le mode MCTS, il suffit de cocher "Use MCTS". L'évaluation classique et ses réglages seront désactivés.

MCTS Hash +++ : le mode MCTS utilise une grosse table de transposition pour fonctionner. D'où MCTS Hash réglé par défaut à 320 Mo, valeur minimale de la recherche MCTS. Une valeur très basse, avec laquelle on ne fera pas grand chose. Une valeur standard de 1 Go serait beaucoup plus raisonnable.  

MCTS Explore +++ : en mode MCTS, la recherche est contrôlée par le taux d'exploration (recherche d'un arbre plus large et ajout de plus de variations) et le taux d'exploitation (extension des lignes existantes pour voir plus profondément). La plage de valeur s'étend de 1 à 100. Plus MCTS Explore est élevé plus le moteur va utiliser d'exploration. Mais plus il va solliciter la mémoire ram disponible. La valeur par défaut est de 5.


Remarques IMPORTANTES

Komodo en mode standard propose des paramètres par défaut assez optimistes. Pour le MCTS, c'est l'inverse : tout semble sous-calibré, alors que ce système ne donne de résultats probants qu'à haut niveau d'utilisation. J'y reviendrai dans la section suivante.

En mode MCTS, Komodo ne lit plus sa bibliothèque d'ouvertures, même si "OwnBook" et coché. Embêtant car il est très important d'utiliser une bibliothèque solide pour les  premiers coups, afin de ne pas remplir inutilement l'arborescence. Si vous utilisez Arena ou Lucas Chess comme interface, vous pourrez cependant guider le moteur vers l'une des bibliothèques Abk d'Arena ou vers une bibliothèque polyglot pour Lucas Chess (comme vu plus haut).



Le mode Monté-Carlo : avantages, inconvénients et restrictions



Peu d'indications sont données sur la manière dont fonctionne la recherche MCTS sur Komodo. Voici ce que j'ai pu glaner, ici ou là : une recherche Monté-Carlo est une exploration basée sur la construction d'une arborescence de la partie en cours, les lignes étant choisies en partie aléatoirement (pour découvrir de nouvelles branches efficaces), en partie méthodiquement, en retenant les lignes qui montraient déjà un fort pourcentage de victoires. Pour estimer ces probabilités, d'autres moteurs s'appuient sur la connaissance profonde d'un réseau neuronal déjà constitué. Les développeurs de Komodo ont préféré utiliser une version allégée - et donc rapide - de l'algorithme alpha/bêta classique du moteur. Lequel effectue une courte recherche à chaque nœud MCTS, les scores obtenus étant sauvegardés à la racine de l'arbre. La recherche est d'abord très large, puis elle se resserre autour d'un certain nombre de lignes très prometteuses.
Le MCTS de Komodo est donc un système hybride, propre à ce moteur. Il a été développé et perfectionné sur Komodo 13 et 14. Au point de rejoindre l'évaluation classique en terme de force. Mais Komodo évolue maintenant vers la technologie NNUE, avec Dragon...


Plus offensif et plus humain

L'avantage principal du mode MCTS est que le moteur change totalement de style. Alors que l'évaluation classique de Komodo donne un jeu positionnel et prudent, en mode MCTS, il semble à l'opposé : moins matérialiste et beaucoup plus offensif, dans la style de Mikhaïl Tal, disent les auteurs. Le MCTS de Komodo "a battu (...) le champion des États-Unis Hikaru Nakamura par 2,5 à 1,5 malgré le fait qu'il lui ait donné une tour contre un cavalier, un pion f2, un pion f7 et quatre handicaps de coups".
Les parties semblent aussi plus humaines, car si l'évaluation alpha/bêta d'un moteur d'échecs tend vers un jeu parfait, face à un adversaire qui joue imparfaitement,  le MCTS va chercher seulement, comme un être humain, le mouvement qui lui donnera la meilleure chance de gagner - ou de faire nulle en cas de déséquilibre important. Quoi qu'il en soit, pour une même position, le MCTS choisira souvent un mouvement très différent de l'évaluation classique.


Moins fort sauf avec le MultiPv activé

Pour la version 12, le mode MCTS est moins compétitif que l'évaluation "normale" de Komodo. Sur l'échelle CCRL 40/4, la force de Komodo en mode MCTS est évaluée à :
➤3300 Elo sur douze coeurs
➤3220 Elo sur quatre coeurs
➤3170 Elo sur deux coeurs
➤3120 Elo sur un simple coeur
Cela reste une force respectable, bien suffisante pour une analyse de qualité. Cependant, le mode MCTS devient vraiment puissant lorsque le MultiPv est activé et que de nombreuses pistes sont suivies en même temps. Pour le MCTS, le MultiPv n'épuise pas le moteur comme le mode normal.


Bonne configuration matérielle indispensable

En mode MCTS, Komodo va développer l'arbre des mouvements en stockant les données dans sa table de hachage dédiée. D'une part ce processus consomme beaucoup de mémoire, d'autre part, il faut savoir que lorsque la table est pleine, la recherche se termine, tout simplement ! Le moteur ne fait pas le ménage dans la table, comme cela se passe avec une évaluation classique.  Il est donc important d'évaluer correctement les besoins du moteur pour déterminer la taille utile de MCTS Hash. Ce n'est pas évident. Voici quelques repères qui devraient vous aider. Pour une partie ou une analyse incluant deux heures de réflexion du moteur MCTS il faudrait :  

➤Avec un coeur : moins de 300 Mo. La valeur par défaut est donc suffisante.
➤Avec deux coeurs : 600 Mo
➤Avec quatre coeurs : 1,2 Go
➤Avec 8 coeurs : 2,4 Go

A noter : le mode MCTS ne peut utiliser que 12 cœurs au maximum.


Comme vous le voyez, le mode MCTS est un gros consommateur de ressources machine, en particulier de mémoire.
D'autant que Komodo conservant un noyau d'analyse alpha/bêta, une table de hachage classique d'une certaine taille reste nécessaire.  
Par ailleurs, c'est un système qui bénéficie davantage qu'une évaluation classique de la mobilisation de plusieurs threads. En conclusion, pour en tirer de bonnes performances, il vaudra mieux posséder une machine puissante et rapide, à quatre coeurs ou plus et dotée d'au moins 8 Go de mémoire vive.


Points divers

Pour finir avec le mode MCTS, deux derniers points méritant une observation...

Profondeur : les MCTS ne sont pas comme une recherche traditionnelle où, lorsque la profondeur augmente, cela est indiqué en sortie de moteur au fur et à mesure qu'une nouvelle itération est terminée. Au lieu de cela, les meilleurs choix de mouvements sont mis à jour une fois toutes les trois secondes, de sorte qu'il peut sembler que certaines profondeurs sont ignorées. Étant donné que la plupart des interfaces graphiques veulent voir une sortie de profondeur, Komodo l'estime en fonction des nœuds MCTS recherchés. Cette valeur n'est qu'indicative. Et c'est pourquoi il ne faut pas utiliser la profondeur comme moyen de fixer le niveau du moteur. La meilleure façon de limiter le moteur est le temps en seconde par 1/2 coup.  J'en profite pour signaler que la construction d'un arbre est un processus assez lent qui fait que le mode MTCS ne produit pas un jeu décent en dessous de 4 ou 5 secondes par coup.

Score d'évaluation : il en va de même pour l'évaluation, affichée dans le format traditionnel en centipawn, qui n'est réalité qu'une probabilité de victoire convertie en un score acceptable par l'interface.

MultiPv : une caractéristique intéressante de MCTS est que suivre un grand nombre de pistes avec le Multi-PV activé est pratiquement "gratuit". En mode "normal", chaque déplacement MultiPV supplémentaire prend plus de temps. Mais en mode MCTS, l'arborescence des mouvements est enregistrée comme probabilités gagnantes pour tous les mouvements de racine. Ne nous privons pas de l'utiliser massivement, si le besoin se fait sentir !


Komodo, pour le conseil et l'analyse

N'ayant jamais cessé de dire que Komodo est un excellent moteur pour l'analyse de parties, je vais profiter de l'actualisation de cet article, à l'occasion de la mise à disposition de Komodo 13,  pour pousser un peu le sujet. Si vous n'utilisez Komodo que pour une analyse sommaire de vos propres parties, afin que soient soulignées vos erreurs les plus grossières, il n'est probablement pas nécessaire que vous alliez plus loin. Si en revanche vous attendez de Komodo une analyse fine, qu'il soit capable de bien "comprendre" des positions complexes, en déjouant les pièges dans lesquels les moteurs tombent facilement, alors la suite vous sera sans doute utile.


Généralités

La première chose à faire est de s'armer pour comprendre comment fonctionnent les modules d'analyse et de faire le choix d'un module. Personnellement j'utilise essentiellement celui de Lucas Chess. Il est particulièrement performant, s'il peut s'appuyer sur un bon moteur. J'ai déjà publié plusieurs articles à ce sujet sur Echecs & Informatique. Je vous invite en particulier à lire :
L'analyse de parties (item du glossaire technique)
Le module d'analyse de Lucas Chess

Notez que le site Chess.com propose un module d'analyse de parties qui utilise au choix Komodo (actuellement 13.1) ou Stockfish comme moteur d'analyse. Mais je ne connais pas bien cet outil, qui n'est pas dans le champ d'Echecs & Informatique. Chess.com est en effet un site payant et si le module d'analyse est accessible gratuitement, toutes ses possibilités ne sont pas disponibles sans abonnement Premium.

Laisser du temps au moteur pour réfléchir

Si vous ne laissez à Komodo (ou n'importe quel autre moteur) qu'une seconde de réflexion par ½ coup, vous n'obtiendrez -
il ne faut pas rêver - qu'une analyse sommaire. Pour un résultat un peu pointu, 10 secondes par ½ coup est un minimum. Si une réflexion de plusieurs heures est envisageable pour vous, n'hésitez pas à laisser au moteur une minute par mouvement, ou plus encore.

Préparer l'environnement matériel

Pour donner de bons résultats, Komodo ou n'importe quel moteur d'analyse a besoin de mémoire et de toute la puissance de votre ordinateur. Tous les logiciels et applications en fonctionnement qui ne sont pas utiles doivent être arrêtés. Fermez en particulier les navigateurs internet, qui utilisent énormément de mémoire vive. Vous pouvez aussi arrêter manuellement (depuis Ctrl+Alt+Suppr) les processus qui tournent en tache de fond : gestionnaires d'imprimante, services de communication, applications de partage de fichiers, etc. La liste est souvent très longue !
Vous trouverez dans l'article "Comment régler une HashTable" quelques détails pratiques pour peaufiner ce ménage.


Bien configurer le moteur

Bien configurer un moteur comme Komodo est rébarbatif mais indispensable, en particulier lorsque l'on veut l'utiliser pour obtenir une analyse performante. Le plus gros a déjà été vu plus haut :

➤Mobiliser tous les coeurs de processeurs disponibles
➤Choisir une taille conséquente pour la table de hachage.
➤Augmenter la taille de "Table Memory"
➤Choisir une bibliothèque d'ouvertures très performante et bien scorée, ce qui permettra d'économiser pas mal de temps machine (Lucas Chess peut épargner au moteur l'analyse des coups de la bibliothèque).
➤Guider le moteur vers les tables de finales Syzygy et régler correctement l'ensemble.

C'est l'essentiel, mais on peut encore augmenter sensiblement la qualité de l'analyse en réglant finement certains paramètres.


Limiter l'élagage

Renoncer à l'élagage ou le limiter vigoureusement permet d'accroitre la qualité de l'analyse mais fait perdre beaucoup de vitesse à Komodo. Je parle de tous les dispositifs qui ont pour but de supprimer le maximum des branches sans intérêt afin de permettre au moteur d'explorer à plus grande profondeur. Pour Komodo, comme vu déjà plus haut, il s'agit de LMR et de Null move pruning.
Pour décider d'éliminer une branche, ces dispositifs prennent en compte certains indices laissant entrevoir qu'elle ne sera pas productive. Le pari est généralement gagnant et permet d'augmenter beaucoup la force du moteur. Mais la qualité générale de l'appréciation est en baisse. Ainsi, certaines positions, sur lesquelles le moteur est passé trop vite, ne seront pas bien "comprises". Il aura aussi plus de mal à percevoir des menaces très profondes ou anticiper de complexes positions de zugzwang. Il est donc important de limiter l'impact de l'élagage. Deux voies sont principalement envisageables :
1/ Désactiver LMR et Null move pruning. Ce choix radical est le plus efficace mais il faudra augmenter fortement le temps consacré à l'analyse, pour compenser. De combien ? Je ne sais pas trop. Il faudrait faire des tests, mais je n'ai pas tout mon temps pour les échecs ! Au doigt mouillé, je dirais qu'il faudrait doubler. En passant par exemple de 15 à 30 secondes par mouvement.  
2/ Réduire la quantité de branches élaguées en diminuant la valeur du paramètre "Reduction" pour diminuer la profondeur de recherche et en augmentant "Selectivity" pour retarder l'élagage. Reduction est par défaut sur zéro. Une idée est de l'abaisser à -150 par exemple. Selectivity est à 140. Essayez donc 80...
Il faudra là aussi compenser en augmentant la durée de réflexion du moteur, mais dans une moindre mesure. Disons de 30 à 50% selon le degré de limitation de la réduction.
C'est peut-être
le bon compromis entre performance et qualité.

Enfin, il est possible aussi de jouer sur la valeur de Dynamism, fixée par défaut à 140. Selon la documentation du moteur, la valeur de 80 produit un jeu plus défensif mais plus naturel.  Komodo y perdra de 25 points de Elo, qu'il faudra si possible compenser par une petite hausse du temps de réflexion.


Rob Rob, avril 2019 (article original pour Komodo 9) ; actualisation pour Komodo 12 en avril 2021. Actualisation pour Komodo 13 en mai 2022. Actualisation pour Dragon 1 en octobre 2023.

 
 
 
 
 
 
 
 
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); })();