Leela Zero - Les jeux gratuits de Rob Robinson

Rechercher
Aller au contenu

Menu principal :

Jeux de réflexion > Grands classiques

Leela zéro



Leela Zero est une vedette qui méritait bien une page dédiée. Dérivé du moteur de Leela, déjà très bon, Leela Zero s'inspire de l'algorithme d'AlphaGo Zero, que Google a eu la bonne idée de documenter. Avec pour résultat un programme aussi fort voir plus fort que les meilleurs joueurs humains, mais libre et gratuit.

Contrairement à Leela, qui est un programme autonome complet pour jouer au Go, doté d'une intelligence artificielle très forte, basée sur un réseau neuronal à apprentissage profond, Leela Zero n'est qu'un moteur de réflexion, qui a besoin d'une interface pour fonctionner.



Titre

Genre

Plateformes

Note

 

Leela Zero

Réflexion - Go

Windows

******



AlphaGo,  AlphaGo Zero et Leela Zero

Pour bien comprendre comment fonctionne Leela Z, il faut en savoir un minimum au sujet d'AlphaGo Zero.  La société britannique Deepmind  travaillait à la réalisation d'intelligences artificielles à base de deepp learning - les fameux réseau neuronaux à apprentissage profond -  lorsqu'elle a été rachetée par Google. DeepMind a alors développé un moteur de Go expérimental, AlphaGo, lequel a été le premier programme à battre les meilleurs joueurs humains.
La société a poursuivi ses recherches et une seconde version, bien plus puissante encore, dite AlphaGo Zero, est apparue. Elle utilise un réseau deep learning à renforcement. Ce qui signifie que le moteur part en ne connaissant que les règles et rien d'autre du jeu. Il n'y a pas préapprentissage, ni fourniture de parties de grands maîtres.  Il part de zéro, créant en jouant contre lui-même ses propres conceptions du jeu. D'où son nom.  
Le résultat a été spectaculaire. Le nouveau moteur a battu AlphaGo en seulement trois jours de construction de son réseau neuronal !
En faisant jouer AlphaGo Zero contre lui-même pendant des mois avec des machines à nombreux coeurs et équipées de plusieurs dizaines de processeurs graphiques, le programme a construit un réseau neuronal constitué des données de millions de parties de Go. Ce qu'on appelle les "poids" (je ne lancerais pas dans une explication de la notion de poids, qui serait laborieuse et sûrement peu claire). Au bout de 40 jours d'accumulation de données d'apprentissage, le moteur avait joué 29 millions de parties et était devenu "le meilleur joueur de Go au monde". Il ne peut plus maintenant que devenir plus fort que lui-même.




Leela Z s'inspire des techniques de programmation employées pour AlphaGo Zero. Mais le moteur lui-même n'est qu'un cerveau vide. Il lui faut aussi un réseau neuronal. Seulement il faudrait à une seule grosse machine standard 1700 ans de fonctionnement ininterrompu de Leela Z pour arriver à constituer un fichier de poids équivalent à celui du moteur de Deepmind. Mais en faisant jouer de nombreux ordinateurs équipés de Leela Zero et de bonnes cartes graphiques, des fichiers de poids conséquents ont été générés et mis à disposition du public. Loin du réseau neuronal d'AlphaGo sans doute mais suffisant pour donner au moteur un niveau de force jamais atteint jusqu'ici par un programme libre.


Les différents composants nécessaires

CPU ou GPU ?

Pour utiliser Leela Zero, vous devez d'abord vous procurer le moteur. Vous le trouverez sur cette page :
https://github.com/gcp/leela-zero/releases
La version disponible est actuellement la 0.16. Elle est proposée en 4 versions :
➤Version GPU pour Windows 32 bits
➤Version GPU pour Windows 64 bits
➤Version CPU pour Windows 32 bits
➤Version CPU pour Windows 64 bits

Quelle différence entre GPU et CPU ?
Si vous avez une bonne carte graphique de jeu Nvidia ou GeForce, de préférence pas trop vieille, vous utiliserez la version GPU (graphics processing unit).
Si vous n'avez pas cette chance, vous devrez vous contenter de faire faire le travail par votre ou vos CPU (central processing unit, autrement dit par les processeurs qui équipent la carte-mère de votre ordinateur) avec la version CPU. Sachant que Leela Zero sera beaucoup moins performant. Ce sera malheureusement le cas sur la plupart des machines de bureautique, dont les composants graphiques sont en général très faiblards. Nous nous trouvons ici devant la même problématique rencontrée avec Leela: si vous faites tourner la version GPU avec une machine dont le chipset graphique est trop juste, vous obtiendrez un moins bon résultat qu'avec la version CPU (voir "Utiliser - ou pas - l'accélération GPU ?" de l'article sur Leela)



Les fichiers de poids

Il vous faut maintenant le contenu du "cerveau" de Leela Zero, le fameux réseau neuronal appelé aussi souvent le fichier de poids. Vous le trouverez ici :
http://zero.sjeng.org/best-network
Si vous préférez un style de jeu plus "humain", un autre réseau neuronal, constituées de parties de joueurs humains, est également disponible. Vous le trouverez ici :
https://sjeng.org/zero/best_v1.txt.zip


L'interface de gestion

Leela Zero n'est qu'un moteur. Pour fonctionner il lui faut une interface. La seule qui soit adaptée, à ce jour, est Sabaki, qui lui a été étroitement associée.
Vous la trouverez ici :
https://github.com/SabakiHQ/Sabaki/releases
Sabaki existe en 6 versions : Linux 32 et 64 bits, Mac Os 64 bits, Windows 32 et 64 bits, plus une dernière pour le Web. Mais Leela Z n'est utilisable que sur Windows.
Installez Sabaki sur votre ordinateur.


Paramétrage de Leela Zero

Je peux vous dire que je me suis bien pris la tête pour arriver à faire fonctionner Leela Zero avec Sabaki. Les informations disponibles sont rares, en anglais, imprécises, parfois fausses... J'y suis quand même arrivé. Voici donc ce que vous devez faire :

Première étape : tout préparer

➤ Vous devez d'abord déterminer si vous allez utiliser la version GPU ou la version CPU. Pour vous aider à faire ce choix je vous invite à lire le passage "Utiliser - ou pas - l'accélération GPU ?" de l'article sur Leela. La problématique est tout à fait identique.
➤Créez un dossier Leela Zero dans le dossier de Sabaki. Décompressez-y l'archive de Leela Zero GPU ou de Leela Zero CPU.
➤Créez un dossier "networks", puis un dossier "human". Copiez le fichier de poids de Leela Zero dans le dossier "network" et le fichier de poids constitué de parties humaines dans le dossier "human".
➤Dans le dossier de Leela Zero, il y a un fichier "autogtp.exe".  Lancez-le. Si j'ai bien compris, ce programme va aller récupérer la plus récente version du réseau neuronal.  Puis il lancera une partie contre lui-même. Laissez-le faire au moins  le temps qu'il finisse une partie complète. Puis activez (si elle ne l'était pas) la fenêtre et tapez "Q" et "Entrée".
Autogtp va sauvegarder dans le dossier de Leela Zero un fichier sgf ressemblant à ça: "d7381225a11f4e628a0aa09c9491bac8.sgf". Il contient les données de la partie ainsi que les données d'entraînement. C'est donc une étape importante.
PS : il m'est arrivé que le programme ne crée pas le fichier sgf. Dans ce cas recommencez (Q+entrée) au milieu d'une partie.

2eme étape : prise en compte du moteur par Sabaki

Lancez Sabaki. Ouvrez le menu "Engines", puis "Manage engines". Cliquez sur "Add" pour ajouter un moteur. Donnez lui un nom : Leela Zero paraît approprié.
Cliquez sur l'icône représentant un petit dossier pour ouvrir la fenêtre de l'explorateur et liez Sabaki au fichier "leelaz.exe".
Nous devons maintenant faire passer un certain nombre de paramètres à Sabaki pour faire fonctionner Leela Zero. Pour cela vous devez collez dans le champ "Arguments" au minimum les paramètres :
-g (activation de Gtp)
-tx (x = nombre de coeur de votre ordinateur)
-w networks\ffe8ba44feb8eb8ec8ff6d9b17ac075e4d708beadbfa68fee5506d431bbde68e.gz
Précisions importantes :
➤"-w" est la commande qui permet d'aller lire le fichier de poids.
➤"networks" est le nom de votre dossier. S'il est bien à l'emplacement que je vous ai indiqué vous n'avez pas besoin d'indiquer un chemin plus précis. Le fichier de poids peut être ailleurs mais dans ce cas il faudra indiquer le chemin complet vers lui.
S'il vous venait à l'idée d'utiliser plutôt le fichier de poids humain, ca deviendrait "-w human\nom du fichier de poids humain"
➤"ffe8ba44feb8eb8ec8ff6d9b17ac075e4d708beadbfa68fee5506d431bbde68e.gz" est le nom de MON fichier de poids. Pour connaitre le votre vous devez ouvrir le dossier "networks" et copier le nom du fichier de poids, extension comprise, pour le reproduire dans le champ "Arguments"
Pour le fichier humain la commande était pour moi : -w human\best_v1.txt.zip
Vous me suivez ?

Je vous conseille fortement d'ajouter aussi "--noponder". Cette commande a pour but d'empêcher Leela Zero de continuer à réfléchir pendant que vous cherchez votre propre coup. Et surtout elle permet d'activer une autre commande,"--playouts x", x étant le nombre de la profondeur de calcul maximum que vous autorisez au moteur. Autrement dit vous vous donnez la possibilité de régler le niveau de force de Leela Zero. il est conseillé un peu partout de choisir un paramètre compris entre 1000 et 2500.
Si vous ne mettez ni noponder, ni playout, Leela Zero prendra un temps interminable pour jouer certains coups.  
Donc, in fine, nous avons une ligne de commande qui va ressembler à ça :

-g -tx --noponder --playouts 1000 -w networks\ffe8ba44feb8eb8ec8ff6d9b17ac075e4d708beadbfa68fee5506d431bbde68e.gz



3eme étape : premier essai

Fermez (Close) "Manage engines". Pour voir si tout marche bien, il est recommandé d'ouvrir la console GTP : menu "Engines", "Toogle GTP Console". La gauche de l'interface sera réservée à l'affichage des données de connexion et de la réflexion du moteur. S'il y a un problème vous aurez un ou des messages d'erreur dont le plus courant est "connexion impossible".
En principe ça devrait bien se passer.
Pour lancer une première partie, menu "File", puis "News". S'ouvre alors la fenêtre de paramétrage de la partie. Sur l'exemple ci-dessous j'ai programmé une partie de Leela Zero contre GnuGo version 3.8, sur un goban de 19x19, avec un komi de 6,5 et un handicap de 4 pierres pour Leela Z.




Cliquez sur "Ok" et la partie démarre.
Attention : l'initialisation de Leela Z est très longue. Si vous n'avez pas affiché la console, vous aurez l'impression que le moteur est planté. Il n'en est rien. Si vous avez ouvert la console vous verrez la progression de la connexion puis le premier coup joué par Leela Z.

Eh bien voilà. Après beaucoup d'effort pour faire fonctionner Leela Zero, je pense avoir fait à peu près le tour de la question - du moins pour vous mettre en état de jouer avec ce moteur surpuissant. J'espère ne pas avoir dit trop de bétises, car j'ai procédé empiriquement, sans rien connaître du mode de fonctionnement de gtp.



Ce que j'en pense ?

Il est clair que Leela Zero est un programme assez prodigieux, dans la lignée d'AlphaGo, mais qui ne s'adresse pas au joueur de Go lambda. Il intéressera surtout les très bons joueurs, qui peuvent espérer le battre en limitant quelque peu (voire beaucoup) sa puissance, et  puiser des idées dans son jeu.

Rob Robinson, janvier 2019




Ici, Leela Zero a affronté GnuGo. Le vénérable ancien moteur a du abandonner.

 




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