Leela - Les jeux gratuits de Rob Robinson

Rechercher
Aller au contenu

Menu principal :

Jeux de réflexion > Grands classiques

Leela ******




Utilisant un algorithme Monte Carlo, les versions anciennes de ce programme de Go étaient déjà assez bonnes ; mais à partir de 2016, son auteur, le belge Gian-Carlo Pascutto, l'a doté d'un réseau neuronal à apprentissage profond. C'est ce qui l'a propulsé en tête des programmes actuels. Il devançait même les forts programmes commerciaux tels que Crazy Stones - dont les dernières versions utilisent aussi maintenant la technique deep learning. En 2017, le client de parties en ligne KGS classait la version 0.9 de Leela à 8 dan, soit le niveau d'un fort amateur de Go. Or, nous en sommes à la version 0.11 et le programme s'est encore amélioré.
Le moteur Leela a depuis été rejoint par des moteurs libres (AQ, Phoenix Go)... et par le moteur frère, Leela Zero qui le dépasse même d'une bonne tête en utilisant la technique de deep learning à renforcement d'AlphaGo Zero. Le moteur de Google lui est, c'est vrai, nettement supérieur, mais il s'agit d'un logiciel expérimental, développé avec de gros moyens.





Titre

Genre

Plateformes

Note

 

Leela

Réflexion

Windows / Mac /Linux Ubuntu, Fedora, Arch

******


Attention quand même : l'efficacité de tous les moteurs de jeu de réflexion dépendent aussi des performances de la machine sur laquelle on les fait tourner, mais plus encore pour Leela. Un des apports remarquables du programmeur belge a été d'utiliser les capacités de traitement des cartes graphiques, beaucoup plus aptes à manipuler les grosses quantités de données que les processeurs des ordinateurs. Car le deep learning consiste moins à faire des calculs qu'à stocker des millions de configurations et d'isoler parmi elles celles qui sont gagnantes.
C'est pourquoi d'ailleurs le programme est livré en deux versions, une normale et l'autre utilisant le potentiel de votre carte graphique. Les gamers dotés de machines équipées de grosses cartes vidéo seront nettement avantagés sur ceux qui feront tourner Leela sur un PC portable basique.


Programme pour joueurs confirmés ?


D'après ce que j'ai pu lire, Leela ne serait pas un très bon partenaire pour les joueurs débutants ou faibles. Il serait plus judicieux de se faire la main en jouant contre GnuGo ou Amigo Gtp. Comme adversaire il concernerait davantage les joueurs de moyens à bon, voire très bon, à partir de 6-10 k. Ne connaissant pas suffisamment le Go, je n'ai pas d'avis sur la question. Par contre, quel que soit votre niveau, je suis certain que ce sera le meilleur outil pour analyser vos parties. L'analyseur de Leela est lent et prend beaucoup de temps car son exploration est très profonde, mais les résultats sont à la hauteur. De très forts joueurs l'utilisent pour apporter des corrections à leur propre jeu.



Leela offre un nombre inhabituel de formats de goban : les classiques 9x9 et 19x19 bien sûr, mais aussi le tout petit 7x7, le 13x13, le 17x17 et le gros 25x25. Mais attention : le réseau neuronal n'est activé que pour la configuration 19x19. Cela n'empêchera pas Leela d'être fort avec sa seule routine Monte Carlo pour 7x7, le 9x9 et, dans une moindre mesure, le 13x13, le nombre de configurations à étudier étant beaucoup plus réduit qu'avec le 19x19. Par contre n'attendez pas grand chose de Leela sur le 25x25, pour lequel la problématique est inversée.


Règles du jeu et notions de base

Ce n'est pas mon job de vous apprendre à jouer au Go et j'en serais d'ailleurs bien incapable. Heureusement, d'autres ont déjà fait ce travail, certains très brillamment. C'est le cas de Brendan, qui, avec son site "Art du Go", propose non seulement une page très bien faite pour apprendre les règles du jeu, mais aussi un véritable cours d'initiation à la pratique du Go. Après avoir étudié certaines configurations de base, il s'intéresse aux débuts de parties, à la prise des coins, aux Josekis (des séquences de coups standards) et enfin aux fins de partie. Puis il monte en niveau avec l'études des grandes configurations tactiques, avant de s'attaquer à la stratégie. Bref, un cours complet, très didactique et très bien illustré. Voir :
https://artdugo.fr/regles-du-jeu-de-go/
https://www.marginalgamers.com/divers/apprendre-jeu-go-comment-bien-debuter





Téléchargement et installations

Vous trouverez sur le site officiel de Leela la dernière version (la 0.11.0 au moment de la publication de cet article) dans 7 déclinaisons différentes :
➤Pour Windows, version en anglais
➤Pour Windows, version en chinois
➤Pour MacOs
➤Pour Linux Ubuntu
➤Pour Linux Arch / Manjaro
➤Pour Linux Fedora
➤Et enfin le moteur seul, à intégrer à d'autres programmes.


De sorte que Leela est assez universel, du moins pour les ordis. Par contre, pas de version smartphone !


L'installation se fait sans problème par lancement du setup mais il y a une importante particularité à connaître: deux exécutables permettent de lancer le programme. L'un a pour nom Leela0110.exe et l'autre Leela0110_OpenCL.exe. Selon les caractéristiques de l'ordinateur sur lequel est installé le programme, vous devez choisir l'une ou l'autre de ces versions pour jouer. L'exécutable Leela0110_OpenCL lance le programme qui a été spécialement modifié pour que Leela utilise à son profit les capacités de traitement de données de votre carte graphique. Leela0110.exe concerne les machines, généralement peu puissance, dont les cartes vidéo sont faibles.

Utiliser - ou pas - l'accélération GPU ?


Si vous avez un ordinateur de bureau récent ou mieux, de gamer,  avec une carte graphique externe à la carte mère, vous pouvez probablement lancer la version OpenCL. Mais vérifiez tout de même sur le site passMark software (https://www.videocardbenchmark.net/) qu'elle offre au moins 900 ou 1000 points de performance. En dessous, mieux vaut lancer la version non-GPU de Leela.
A moins que ce se soit une  très vieille machine, cette carte sera compatible OpenCL et pourra donc utiliser la version GPU du programme. C'est très important car le chipset d'une carte graphique, même de milieu de gamme, sera capable de traiter les informations nécessaires au réseau neuronal environ 15 fois plus vite qu'un processeur Intel Core de milieu de gamme, selon les auteurs.  



Sur cet ordi portable basique la carte intégrée, du type Intel Accelerator HD, ne fournit que 116 points de performances. Beaucoup trop peu pour Leela GPU.


Si vous utilisez Leela avec un ordi portable, le choix sera moins évident. Sur les portables d'entrée de gamme, le chipset graphique incorporé à la carte mère est souvent très faiblard. Si votre ordi à base d'Intel Core incorpore une carte vidéo intégrée du type Intel Accelerator HD, vos chances sont maigres. Sur le site de comparaison de chipsets vidéo les modèles courants Intel HD obtiennent de 100 points pour les moins performants à 8 ou 900 points pour les meilleurs. Pas assez pour être utilisés, d'autant plus que les Core disposent d'une puissance brute plus élevée que les processeurs AMD. Le choix de Leela0110_OpenCL.exe risquerait donc d'être contre-productif.
Si c'est une GeForce ou une Radeon, vous aurez plus de chances mais il faut quand même vérifier car certaines de ces cartes intégrées à la carte-mère des portables sont vraiment nulles. Exemple:  la Nvidia Geforce 320M, qui n'offre que 272 points de performance.
Moralité : vous devez identifier la carte graphique de votre ordi et tapper dans Google une requête du type "videocard benchmarks votre carte graphique". Cherchez dans les résultats le lien qui commence par https://www.videocardbenchmark.net/.

Si votre carte affiche moins de 1000 points mais que vous avez un doute, lancez les deux versions l'une contre l'autre simultanément et observez le résultat de la confrontation. Attention, il faut sélectionner des parties de 19x19 car en dessous le réseau neuronal n'est pas utilisé ! Comme paramètres choisissez 10 ou 20.000 simulations pour 20 minutes de jeu.



Leela "simple" contre Leela GPU. Victoire de Leela GPU par 1,5 points d'avance, komi pour Leela compris.


C'est assez fastidieux il faut bien le dire. Et le seul résultat d'une partie n'est pas très significatif. Si tout comme moi vous ne souhaitez pas passer votre vie là-dessus, demandez à Leela de l'analyser (voir plus bas l'usage de l'analyseur) puis, lorsqu'il aura à peu près terminé, observez l'histogramme de la partie. Le plus fort est celui des deux camps dont les courbes s'affichent davantage dans sa partie du graphe.




Sur l'histogramme de la partie que j'ai fait jouer à Leela contre Leela GPU, on voit que les noirs, pris en charge par Leela GPU, sont presque constamment meilleurs que Leela simple (voir ci-dessous la section "analyseur de parties"). Logique puisque j'ai effectué le test sur une machine de bureau équipée d'une carte vidéo qui n'est pas extraordinaire mais qui fournit quand même 2200 points. Cela a suffit à donner un net avantage à la version GPU.

Jouer contre Leela

Ouvrez d'abord le menu "Tools", "Settings" et cochez tout. Vérifiez en particulier que "Neural networks" est activé. Maintenant ouvrez le menu "Files" pour lancer une première partie. Vous avez le choix entre une partie normale ("New game") ou une partie qui va forcer Leela a s'imposer un handicap dans vos parties suivantes ("New rated game") afin de tenir compte de votre niveau. Mais dans ce dernier cas vous devrez d'abord choisir si vous voulez jouer sur une grille de 9x9 ou de 19x19 ("Set rated board size"). Sinon ca démarre sur une partie 9x9.


Une première partie ?

Pour la première partie avec handicap, ne connaissant pas votre niveau, Leela vous considère comme débutant et s'impose le boulet maxi en plaçant 21 de vos pions sur le goban. Si vous êtes bon, il réduira de lui même son handicap dans les parties suivantes.

Vous avez le choix entre des parties sur goban de 7X7, 9x9, 13x13, 17x17, 19x19 et 25x25. Mais vous noterez que le réseau neuronal ne prend en charge que le goban de 19x19.
Par défaut le komi est de 7 (plus 0,5 point pour éviter les parties nulles). Le handicap est à zéro pour une partie non-rated mais vous pouvez mettre ici une autre valeur.
Important : vous devez choisir un temps maximum pour la partie. Si vous êtes bon joueur et que vous souhaitez une partie de qualité, donnez-vous au moins 1/2 heure et réglez le niveau de Leela sur 20.000 simulations par coup.
Si vous n'imposez pas de limites ("Unlimited") aux simulations, Leela prendra tout son temps pour jouer certains coups, surtout si vous avez réglé le temps maxi sur 1 heure ou plus. Evidemment, il jouera mieux s'il peut explorer 200.000 noeuds plutôt que 10 fois moins. Si vous trouvez que Leela prend trop de temps vous pouvez le forcer à jouer (menu "Game", "Force computer move" ou touches "Ctrl + F").

En cours de partie vous pouvez demander conseil à l'ordi pour jouer. Menu "Tools", "Show best moves" ou touche "F4". Les propositions de coups sont matérialisées par des taches de couleur qui vont du gris-bleu (les moins bons coups), au rouge, en passant par l'orange et le jaune.
Si vous laissez le temps à l'ordinateur de réfléchir, il pourra réviser son jugement et modifier les teintes en conséquence.
J'ai rencontré des problèmes avec les suggestions de coup, qui avaient parfois du mal à s'afficher, surtout lorsque l'exploration n'était pas fixée sur "Unlimited".

















Propositions de coups : gris, coup très passable, gris-bleu passable,  jaune assez bon coup, orange bon coup, rouge, très bon coup.



Quelques remarques pour finir :

➤Il y a toujours un point rouge sur la dernière pierre jouée de chaque camp.
➤Lorsque c'est à vous de jouer, l'ordinateur ne perd pas son temps. Il en profite pour continuer à explorer des noeuds.
➤Vous pouvez bien sûr passer votre tour...
➤Ou abandonner ("Game", "Resign" ou "Alt + R").


Sauvegarde de parties

Vous pouvez interrompre une partie et la sauvegarder pour la reprendre. Ou bien la terminer et la sauvegarder, en particulier pour en demander l'analyse à Leela. Pour cela, menu "Files", "Save game" et "Load game". La partie sera sauvegardée au format sgf, le plus courant au Go.


L'analyseur de parties

L'analyseur de parties de Leela est un outil précieux pour qui veut améliorer son jeu. Même de très forts joueurs l'utilisent. Il faut comprendre que dans le cours d'une partie, le moteur de Leela n'a que quelques secondes pour choisir un coup. Par contre, lorsque vous lancez une analyse, si vous lui laissez prendre son temps, son niveau de force augmentera sensiblement et il vous proposera des alternatives de grande valeur. J'en profite pour vous donner un premier conseil: avant d'explorer les propositions de Leela, laissez l'analyseur travailler une petite 1/2 heure. N'oubliez pas qu'il n'étudie pas un seul mais tous les coups de la partie en même temps !

L'analyseur de parties est aussi ce qu'il y a de plus complexe à utiliser sur Leela. Voici donc un petit mode d'emploi qui vous sera utile:

Pour analyser une partie il faut d'abord la charger. Depuis le menu, "File", faire "Open game" et allez chercher une partie sauvegardée (Leela ne reconnaît que le format sgf, le plus courant). Ensuite menu "Analyse" et "Start/Stop analysis" ou touche de fonction "F2".

La fenêtre d'analyse

Par défaut, l'exploration de la partie se fait en tâche de fond, sans que rien ne s'affiche, à l'exception de quelques informations basiques en dessous du goban. Si vous voulez voir en détails les résultats de la recherche de Leela, vous avez deux outils: la fenêtre d'analyse et l'histogramme.



Faites apparaître la fenêtre d'analyse depuis le menu "Analyse" et "Analysis windows" ou touche de fonction "F7". Adaptez sa taille à vos besoins.
Le principe est le suivant : vous vous déplacez dans la partie analysée avec la molette de la souris, les touches fléchées de votre clavier ou les icônes de déplacements de la barre d'icônes (coup par coup ou 10 coups par 10 coups). Lorsque vous avez atteint un stade de la partie où vous souhaitez une évaluation, observez les données de la fenêtre. Leela va vous proposer de 2 à 15 séquences de coups alternatifs (parfois plus), le meilleur à l'instant T étant celui du haut. Si vous cliquez sur cette séquence, elle s'affichera sur le goban sous forme d'une suite de chiffres de 1 à n apparaissant sur les pierres.
Mais avant d'aller plus loin, voyons la signification des différentes valeurs affichées dans la fenêtre d'analyse:

Move : coordonnées du premier coup de la séquence proposée par Leela.
Effort%: le pourcentage d'effort de recherche que Leela a consacré à un coup (ou une série de coups) alternatif. Un effort de recherche important signifie que la série de coups étudiés à tenu ses promesses et que Leela continue à se concentrer sur lui. A moins que, continuant à explorer l'arborescence, un nouveau candidat encore plus prometteur n'apparaisse. Mais lorsque le chiffre de 90% est atteint, il est peu probable qu'une nouvelle séquence soit proposée. Continuer l'évaluation ne va faire qu'affiner les coups de cette séquence.
Simulations: nombre d'explorations de Monte Carlo utilisées pour étudier le coup. Plus de simulations signifient plus de confiance dans la qualité de la proposition car le jeu a été étudié plus en profondeur.
Win%: représente la meilleure estimation de Leela quant à la probabilité que le joueur au trait et gagne la partie (vous comprendrez plus bas en quoi c'est important). S'il y a un coup qui n'a pas encore été étudié en profondeur, mais qui semble offrir une meilleure chance de gagner que le meilleur mouvement actuel, il s'affichera en gras. Dans ce cas, laissez à Leela un peu plus de temps pour qu'il puisse l'explorer.  
MC Win%: probabilité que le joueur au trait gagne la partie, telle que déterminée par les projections de la routine de sélection de Monte Carlo à partir de la position actuelle. Cette donnée est un facteur qui intervient dans le calcul de Win%.
Net Win%: probabilité que le joueur au trait gagne la partie, déterminée par l'analyse de la position avec le réseau neuronal deep learning. Cette donnée intervient également dans le calcul de Win%.
Net Prob%: la probabilité qu'un joueur professionnel joue ce mouvement, estimée par le réseau de neurones.
Eval: cette donnée n'est affichée que dans des jeux autres que 19x19 au lieu de Net Prob%. Nombre exprimant la probabilité que le déplacement soit bon, basé sur une base de données de motifs.
PV: la variation principale. La séquence de mouvements suggérés pour les deux joueurs qui, selon Leela, est optimale.

Maintenant revenons à l'étude de l'analyse de Leela. Commencez à vous déplacer dans les coups en cherchant les anomalies dans la colonne Win%. Un chiffre voisin de 50% indique que les joueurs sont à peu près à égalité. Lorsque le chiffre grimpe au dessus de 55% ou descend en dessous de 45%, c'est qu'il y a eu une rupture dans le jeu. L'un des joueurs a réussi un très bon coup et s'est assuré un net avantage ; ce sont les étapes de la partie sur lesquelles vous devez vous concentrez.
Regardez les mouvements suggérés par Leela. Vous pouvez aussi afficher des aides visuelles directement sur le goban. Menu "Tools" et "Show Network Probabilities" (ou touche "F3") et "Show Best Moves" (touche "F4")  peuvent aider à comprendre les erreurs commises. "Show Territory" (touche "F5") aide à visualiser  la situation tactique. De même que "Show moyo" (touche "F6") qui montre les territoires potentiels de noir et de blanc à l'instant T de la partie.

A ce stade, vous pouvez marquer la position en appuyant sur le "+" de la barre d'icônes, puis essayer une variante suggérée dans la fenêtre d'analyse.
Si vous souhaitez suspendre cette exploration et revenir à la partie non modifiée, il suffira d'ouvrir le menu "Analyze", et de sélectionner "Revert to stored" (touches "Alt + M") pour revenir à la position que vous avez marquée précédemment.



Résultat provisoire d'une analyse en cours.  On voit sur cet exemple que pour sa meilleure proposition, le mouvement F3 et ses suites, pour lequel Leela a consacré déjà plus de 93% de son temps de réflexion, il a exploré plus de 760.000 noeuds de l'arborescence des coups. Les autres séquences sont les coups repérés puis abandonnés. Mais la mise en gras des valeurs Win% des coups F17, R11 et K17 montre que Leela n'a pas encore de jugement définitif sur ces propositions.
Depuis le début de l'analyse, la séquence F3 a sensiblement évolué et le nombre de coups proposés à fortement augmenté. D'où l'intérêt de laisser à Leela le temps de réfléchir.


L'histogramme

L'histogramme (menu "Analyse", "Show histogram", touche "F8") est une autre manière de saisir la partie. Il montre le winrate (la performance en somme) de chaque joueur, les noirs étant en dessus de la position médiane et les blancs en dessous. Il y a trois courbes différentes : la bleue montre l'évaluation de la routine Monte Carlo ; la rouge celle du réseau neuronal. La courbe noire est une moyenne des courbes bleue et rouge.
Lorsque noir n'est pas performant, la courbe s'affiche dans le territoire de blanc. Plus le point est bas, plus le winrate est mauvais pour noir. Si noir est performant, la courbe s'affiche dans son camp. Plus le point est haut plus son winrate est élevé.
Pour blanc tout est évidemment inversé. Les bonnes performances s'affichent dans son camp vers le bas, les mauvaises dans celui de noir, vers le haut.
J'ai pu observer souvent que les courbes rouge et bleue peuvent diverger assez fortement. Autrement dit la routine Monte Carlo et le réseau neuronal ne sont pas d'accord sur l'évaluation. Ca m'a laissé tout de même un peu perplexe, d'autant plus que malgré beaucoup de temps supplémentaire laissé à Leela, cet écart ne se comble généralement pas. Du coup je me demande comment Leela arbitre entre ces propositions contradictoires...


Utilisation indépendante du moteur

Les auteurs ont la gentillesse de nous offrir le moteur de réflexion, que vous pourrez télécharger sur le site officiel du jeu. https://www.sjeng.org/leela.html
Il pourra ensuite être utilisé dans tout programme ou interface capable d'accepter les moteurs utilisant la norme "Go Text Protocole" ou GTP. L'intérêt ? Par exemple d'avoir la possibilité de charger le meilleur moteur freeware actuel dans Drago, une interface qui n'est pas très belle mais qui offre des outils d'études bien plus poussés que l'interface de Leela.
Il faudra cependant passer quelques paramètres pour le faire fonctionner. En l'occurrence:
--g
--noponder
--playout 1000

J'ai réussi à faire fonctionner Leela GPU avec Drago et avec Sabaki sans trop de difficultés. J'y reviendrai quand je parlerai de ces deux interfaces de gestion de parties de Go.


Ce que j'en pense ?

Leela est actuellement le plus fort programme de Go, en dehors d'AlphaGo, qui est hors catégorie. Il est probable qu'une nouvelle version du très bon logiciel commercial Crazy Stones arrivera à son niveau ou le dépassera, dans un avenir proche, si ce n'est pas déjà fait. Mais dans le monde du gratuit, Leela restera sûrement longtemps la référence absolue, comme GnuGo l'a été auparavant.
Son outil d'analyse de parties est lui aussi exceptionnel et sans équivalent. Dommage qu'il ne soit pas possible de sauvegarder une analyse. Il faudra exploiter immédiatement ses résultats ou recommencer l'exploration.
L'interface est facile à utiliser et pas moche à regarder, sans plus. Mais le fun est souvent l'argument des programmes qui n'ont pas grand chose d'autres à offrir.
Enfin, au dire des utilisateurs expérimentés, Leela est, cerise sur le gâteau,  l'un des premiers programmes de Go dont le style se rapproche du jeu humain. Que demander de plus ?
Si je devais quand même faire une critique je dirais qu'il est dommage que l'analyseur de parties ne soit pas complété par la batterie d'outils habituels. Leela n'a pas d'éditeur de positions, il n'est pas possible de commenter soit même les parties, ni très pratique de rejouer une partie en cours à une position donnée, en rendant la main à l'ordinateur. Toute chose que Drago fera très bien par contre en utilisant le moteur de Leela.

Rob Robinson, janvier 2018


 




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