Stockfish - Echecs et informatique sur PC-Windows

Rechercher
Aller au contenu

Menu principal :

Stockfish
Le plus fort moteur d'échecs du monde




Stockfish est actuellement (exception faite de AlphaChess Zero, logiciel expérimental) le plus fort moteur d'échecs au monde, libre ou commercial. Plus de 3500 Elo ! Ca en jette !
Dire qu'il a un jeu humain serait sans doute exagéré. Mais ce champion, beaucoup plus fort que les meilleurs humains, est néanmoins le plus équilibré des moteurs tactiques. Utile moins comme adversaire que comme moteur d'analyse et de conseils pour Lucas Chess, Scid vs PC ou Arena.  



J'aurais été ingrat de ne pas placer Stockfish dans cette sélection - bien qu'il ne soit pas du tout le genre de moteur que j'affectionne. Performant, ultra-fort, largement paramétrable, bien documenté…   Il faut reconnaître qu'il est bien utile. Les moteurs tactiques sont à priori moins bons que les moteurs positionnels pour l'analyse mais Stockfish est hors normes. Il excelle dans tous les domaines, y compris dans la connaissance des positions.
En tant que joueur, il ne s'adresse clairement pas aux débutants ou aux joueurs occasionnels, pour qui il est définitivement trop fort*. Sa polyvalence, sa puissance et sa rapidité l'impose comme LE moteur pour l'analyse et le conseil. Un rôle que je lui fait partager toutefois avec Komodo.

Au sujet de la version 14 de Stockfish, lire l'intéressant article de Sébastien Jouve sur le site CapaKaspa.

* Mais les joueurs moyens pourront avantageusement en tirer profit en limitant fortement son niveau. Il est possible, depuis le menu de configuration, d'abaisser le "Skill level" de Stockfish. Par défaut il est au maxi, à 20. Une autre méthode sera, depuis l'interface qui l'accueille, de réduire son niveau Elo entre 1350 et 2850, grâce à la commande UCI_Elo.


Evaluation NNUE

Depuis la version 12, Stockfish intègre une évaluation basée sur la connaissance d'un réseau de neurones artificiels, qui intervient en amont d'une évaluation plus classique, en profondeur. C'est même le premier moteur d'échecs à avoir utilisé cette technique, testée initalement sur le jeu de Shogi. Le gain en force a été immédiatement considérable. Il permet à la version 14 de faire jeu égal avec Leela Chess Zero et de reprendre sa place de plus fort moteur du monde, avec un classement de 3550 Elo sur CCRL 40/15. De plus, contrairement à un moteur 100% neuronal comme Leela Zero, dont les perfomances sont tributaires de la présence dans la machine d'une puissante carte graphiques, le noyau neuronal de Stockfish se débrouille très bien avec un bon CPU.
L'évaluation NNUE de Stockfish évalue moins de positions mais elle le fait plus efficacement que l'évaluation classique seule*. Il n'y a donc pas lieu de la désactiver, d'autant plus que le jeu à base d'évaluation NNUE est censé avoir une allure plus humaine.

A noter : le réseau neuronal de la version 14, intégrée au binaire du moteur, a été constitué en combinant le réseau neuronal constitué par l'équipe de développement de Leela Chess Zero et le réseau constitué des milliards de positions évaluées par Stockfish. L'architecture de ce réseau a été par ailleurs sensiblement améliorée.



* Selon les auteurs, Stockfish en version NNUE explore une quantité de positions inférieure d'environ 20% à son évaluation classique.





Téléchargement et installation


On trouve le moteur sur le site officiel :
Télécharger Stockfish ?
Actuellement (septembre 2021), Stockfish est disponible en version 14, pour Windows, MacOs, Androïd et Linux.
Pour Windows, seuls deux versions sont proposées sur cette page:  pour ordinateurs récents PopCnt et plus anciens (version 64 bits sans jeu d'instruction particulier). Mais vous pourrez aussi trouver sur cette autre page des versions de Stockfish pour des architectures plus spécifiques: BMI2, AVX2, SSSE3 et Windows 32 bits. Suivez les liens proposés pour savoir à quel type de machine ils correspondent.
Utiliser la version la mieux adaptée à votre machine peut vous faire gagner entre 5 et 15% de vitesse supplémentaire. Si vous ne savez pas laquelle vous devez installer, essayez-les toutes en commençant par la version Bmi2. Si ca plante, changez pour la version AVX2, puis SSSE3 et enfin PopCnt. Si aucune des versions précédentes ne fonctionne, rabattez-vous sur la version 64 bits simple.
La version 32 bits ne devrait être utilisée que sur les très vielles configurations de Windows. E
lle est beaucoup plus lente.


Installation dans Arena : copiez le dossier du moteur dans le répertoire "Engines" d'Arena. Notez que les sous-répertoires ".github'', "src" et "tests" ne contiennent pas d'informations utiles au moteur. Vous pouvez les supprimer.
Lancez Arena, puis menu "Modules" > "Installer nouveau module" et allez chercher le bon fichier exécutable, par exemple "stockfish_14_x64_popcnt.exe".

Installation dans Lucas Chess : Stockfish est déjà l'un des moteurs internes de Lucas Chess. Comme toujours sans possibilité d'accès au module de configuration. Vous pouvez cependant le réinstaller comme moteur externe : menu "Outils" > "Moteurs" > "Moteurs externes" ; bouton "Nouveau" et allez cherchez le bon exécutable.



Configuration

Si vous utilisez l'interface Arena, vous accéderez au menu de configuration du moteur depuis le menu "Modules" > "Module 1" > "Configurer" (ou Ctrl+1). Voici ce que ce menu contient (les signes + à +++ pvous guident vers les fonctions les plus importantes).




Paramètres généraux

Debug log file : si vous voulez avoir un retour du fonctionnement du moteur, créez avec le bloc-notes de Windows un fichier "logfile.txt" et utilisez le sélecteur de fichier pour y conduire le moteur.

Threads
(+++) :
indiquez ici le nombre de coeurs physiques de votre ordinateur. C'est important si vous utilisez Stockfish pour l'analyse ou le conseil. Il sera beaucoup plus rapide s'il utilise deux coeurs ou plus au lieu d'un seul.

Hash (+++) : taille de la table de hachage. La valeur par défaut, 16 Mo, est ridiculement faible pour un moteur tactique aussi puissant que Stockfish. Surtout s'il est utilisé à pleine puissance pour l'analyse. Choisissez au minimum 128 Mo. Si vous pouvez passer à 256, voire 512 ce sera encore mieux.

Clear hash : cliquez sur ce bouton pour vider la table de hachage.

Ponder (pondération) (+) : réflexion sur temps adverse. Mieux vaut la laisser "off". Stockfish est déjà bien assez fort. Par ailleurs, inutile si le moteur est utilisé pour l'analyse.

MultiPv (++) : par défaut le MultiPv est sur 1, c'est-à-dire désactivé. Vous pouvez demander à Stockfish de suivre plus de lignes en même temps (jusqu'à 500), au prix d'une baisse de son niveau de jeu, qui peut devenir sensible si le nombre de lignes est trop élevé.
Si vous utilisez Stockfish en mode d'analyse et que vous lui laissez le temps nécessaire pour réfléchir, vous avez tout intérêt à activer 5 ou 6 pistes de Multi-Pv. La qualité de l'analyse sera meilleure.

Move Overhead : fixe le nombre x de millisecondes nécessaire à l'interface pour gérer correctement la partie. Par défaut : 10. Augmenter ce chiffre si Stockfish perd au temps.

Slow Mover : ce paramètre détermine si le moteur va préférer prendre moins de temps entre chaque coup pour réfléchir (Slow Mover bas) ou plus de temps (Slow Mover haut), ce qui lui permettra d'explorer plus profondément au risque de manquer de temps en milieu ou fin de partie, voire de perdre au temps. Plage de réglage entre 10 et 1000. Par défaut 100, valeur moyenne qu'il vaut mieux conserver  - à moins que Stockfish semble ne pas gérer correctement le temps.
Nodestime : indique au moteur de se baser sur les nœuds recherchés plutôt que sur la limite de temps pour tenir compte du temps écoulé. Sans intérêt pour une utilisation courante.

UCI_Chess 960 (+) : cochez si vous voulez que Stockfish joue à cette variante des échecs.

UCI_ShowWDL : si cette option est cochée, des données statistiques WDL font s'afficher en grand nombre au cours de la partie sur la sortie du moteur. D'une part, ces données sont inexploitables pour la plupart des utilisateurs, d'autre part elles ralentissent le moteur et sont mal interprêtées ou pas du tout interprêtées par beaucoup d'interfaces graphiques. Mieux vaut laisser cette option non-cochée, sauf besoins très particuliers.  

UCI_AnalyseMode (+++) : si coché, Stockfish pourra être utilisé pour l'analyse. Certaines interfaces prennent cette fonction en charge automatiquement. C'est le cas par exemple d'Arena, qui ne propose donc pas UCI_AnalyseMode dans le menu de configuration du moteur. Pour d'autres interfaces, Lucas Chess en particulier, le choix apparait dans le menu de configuration du moteur et, par défaut, il est désactivé. N'oubliez pas de l'activer si vous utiliser le moteur pour l'analyse ou le conseil.


Niveau de force : Skill Level et UCI_LimitStregth

Deux méthodes différentes permettent de limiter le niveau de force du moteur :
a) Activation de la fonction UCI_LimitStregth.
b) Activation de Skill Level.
Si UCI_LimitStregth est activé, Skill Level est automatiquement désactivé.

Skill level (+++) : vous pouvez choisir un niveau de force entre 0 et 20. Le module fonctionne de la façon suivante : il active en interne le MultiPv et choisira un coup plus faible selon une probabilité qui dépend du niveau de Skill Level choisi. A 20, Skill level est désactivé et Stockfish jouera au maximum de ses possibilités.
Inconvénients : on ne sait pas à quel niveau de force correspondent les 19 premières graduations ; on risque d'oublier d'avoir abaissé le niveau de fonctionnement du moteur. Avantages : niveau de jeu amoindri réaliste.


UCI_LimitStregth (+++) : ce module pilote la commande UCI_Elo, qui permet de choisir un niveau de force entre 1350 et 2850 Elo. Avec Arena, le choix se fait depuis l'interface et non depuis le menu de configuration. On y accède par le menu "Niveaux" > "Limite Elo de la force de jeu..."


Menu UCI_Elo d'Arena

Avec d'autres interface, Lucas Chess par exemple, il faut cocher le choix UCI_LimitStrength depuis le menu de configuration du moteur puis choisir un niveau Elo entre 1350 et 2850. Lorsque UCI_LimitStrength est coché, Skill Level est désactivé. C'est le choix par défaut, le niveau de force étant de plus fixé au plus bas (voir écran ci-dessous),  aussi prenez-y garde, sans quoi Stockfish jouera très faiblement.


Menu de configuration de Lucas Chess

Inconvénient : la méthode est moins réaliste, surtout lorsque l'on choisi un niveau de force très faible. Avantages : le réglage est accessible directement depuis l'interface (avec Arena). On connait avec précision le niveau de force du moteur.


Gestion des bases de finales SyzygyPath


SyzygyPath (++) : si vous avez les tables Syzygy, utilisez le sélecteur de fichiers de SyzygyPath pour lui indiquer le chemin de leur emplacement.


SyzygyProbeDepth (++) détermine la profondeur en 1/2 coups à partir de laquelle les EGTB seront sondées à la place de l'évaluation interne. La valeur par défaut, "1", sera tout à fait inadaptée à la plupart des  utilisateurs. Elle signifie en effet que le recours aux tables de finales se fera sans aucune restriction. Or, si vous avez 2 coeurs, 4 Go de mémoire et un disque dur mécanique - ce qui est le cas de la machine avec laquelle je teste tous les programmes d'échecs - au lieu d'améliorer le jeu du moteur le recours systématique aux EGTB va le dégrader. En effet les accès disque et la décompression des données ralentissent sensiblement la réflexion de Stockfish.
Mes propositions en fonction du matériel, "à la hache", basées  sur des discussions de forums:

➤Portable basique : Syzygy Probe Depth entre 20 et 25
➤Portable moyen : Syzygy Probe Depth entre 15 et 20
➤Machine de bureau à 2 coeurs, 4 go de ram et disque dur mécanique: Syzygy Probe Depth entre 10 et 15
➤Machine de bureau à 4 coeurs, 4 go de ram et disque dur mécanique récent: Syzygy Probe Depth entre 5 et 10
➤Machine de bureau de 4 à 6 coeurs, de 4 à 8 go de ram et disque dur SSD: Syzygy Probe Depth entre 1 et 5.

SyzygyProbeLimit (++) détermine le nombre de pièces sur l'échiquier à partir duquel Stockfish commence à sonder les tables Syzygy. Par défaut, il est défini sur 6. Comme vous n'avez probablement que les tables Syzygy à 5 pièces, ramenez le à 5. Vous pouvez le laisser à cette valeur si vous avez au moins 4 Go de ram. Si vous manquez de ram, descendez à 4.
Si vous avez les tables à 6 pièces, j'espère pour vous que votre machine est en rapport. Il ne serait pas du tout raisonnable de les utiliser avec une machine ordinaire à disque dur mécanique et avec 4 Go de ram.  Dans le cas contraire, mieux vaut ramener SyzygyProbeLimit à 5.

Syzygy50MoveRule
(+) : cocher pour imposer au moteur la "règle des 50 coups"

Pour en savoir plus sur
la gestion des tables de finales Syzygy voir cette page.


Evaluation NNUE

Use NNUE (+++) et EvalFile : si Use NNUE est coché, Stockfish utilisera un réseau neuronal intégré au binaire pour évaluer les positions, plutôt que son évaluation algorithmique classique.

A noter :  il est possible de faire fonctionner le moteur avec un réseau de neurones alternatif. Dans ce cas, utiliser EvalFile pour indiquer son emplacement au moteur. Cette possibilité n'intéressera cependant que les hyper-spécialistes. Il est peu probable que l'on puisse trouver avant quelques mois un réseau de neurores de meilleure qualité que celui qui est intégré à Stockfish.



Des paramètres manquent ?

Si certains paramètres importants, tels que "Threads" ou "Hash" sont absents du menu de configuration de Stockfish avec Arena, c'est certainement parce que l'interface est paramétrée pour attribuer une valeur standard à tous les moteurs UCI. Pour vérifier : menu "Modules" > "Gérer", onglet "Détails", puis onglet  "UCI". Si les paramètres concernant l'abandon (comtempt), l'utilisation des bibliothèques d'ouvertures, des tables de finales, des tables de hachages ou des coeurs CPU sont réglés et cochés ici, il est logique qu'ils n'apparaissent plus dans les menus de configuration puisqu'ils sont déjà déterminés.




Vous pouvez fixer en effet toutes ces valeurs depuis ce menu et ne plus vous en préoccuper.  Mais vous ne pourrez plus faire de réglage spécifique à un moteur. Ce n'est pas un problème pour le nombre de coeurs dont vous disposez, puisque ça ne changera jamais. C'est beaucoup moins évident pour la plupart des autres paramètres, qui dépendent beaucoup du moteur lui-même et du rôle que vous lui faites joueur. Si vous jouez contre Stockfish en partie blitz avec "Skill level" à "1", une table de Hash de 64 Mo sera amplement suffisante. C'est le contraire si vous utilisez Stockfish comme moteur d'analyse. Car dans ce cas il a besoin de toute sa puissance. 256 Mo sera un minium.
Il parait donc judicieux de ne pas utiliser la possibilité de fixer la taille de la table de hash depuis les réglages généraux d'Arena.



Bibliothèque d'ouvertures

Bizarrement, Stockfish ne propose aucune bibliothèque d'ouvertures et la documentation ne dit rien à ce sujet. J'ai installé Stockfish 14 avec Arena, Lucas Chess, Scid vs PC et Mayura Chess Board et le menu de configuration du moteur n'affiche jamais d'option "Use Book". Pourtant Stockfish gère très bien les bibliothèques polyglot et il peut même mixer le contenu de deux, trois ou quatre bibliothèques *.bin", comme on peut le voir sur la copie d'écran du menu de Stockfish 13, visible sur cette page.  Pourquoi "Use book" et tous les paramètres de gestion des bibliothèques ne s'affichent pas sur les interfaces citées, je n'en sais rien et je n'ai rien trouvé à ce sujet. Si quelqu'un sait comment résoudre ce problème, je suis preneur.
C'est dommage, mais chacune des interfaces offrant la possibilité de diriger le moteur vers une bibliothèque d'ouvertures.

Si vous utilisez Stockfish avec Arena, il suffira de le forcer à utiliser une de celles que contient l'interface : 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 utilisez le sélecteur de fichiers pour en choisir une autre, au format abk d'Arena.

Nativement, le style de Stockfish est assez ressemblant à celui de Kasparov (hors évaluation NNUE). Si la perspective d'utiliser le moteur comme un clone de Kasparov vous séduit, je vous conseille de télécharger ici la bibliothèque "Kasparov Opening Book for Arena.abk", obtenue à partir de parties de l'ancien champion du monde.

Télécharger la biblio Kasparov pour Arena ?

Copiez le fichier dans le dossier "Books" d'Arena. Puis forcez le moteur à aller lire cette bibliothèque: "Modules" > "Gérer", onglet "Détails" puis choix de Stockfish dans la liste, onglet "Bibliothèque" et utilisez le sélecteur de fichiers pour aller chercher la bibliothèque.  

On peut obtenir à peu près la même chose avec Lucas Chess en changeant de bibliothèque au lancement d'une partie depuis l'onglet "Coups initiaux". Offrez-lui par exemple la bibliothèque Polyglot qui accompagne le profil Kasparov de ce grand joueur.

Télécharger la biblio Kasparov polyglot ?

Extrayez la bibliothèque de l'archive et copiez-là dans le répertoire "Openings" de Lucas Chess.


Rob Rob, avril 2019 (révision en septembre 2021)

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