Leela Chess Zero

82
3
mar.
2021
Jeu

Avec plus de 320 millions de parties d’échecs au compteur, Leela Chess Zero (Lc0) ne joue pas aux échecs comme les autres. Disponible sous licence GPL-3.0, ce programme a un Elo autour de 3 000, et côtoie les sommets de la (petite) planète échecs. Logo LC0

Sommaire

Introduction

Depuis de nombreuses années, les jeux d’échecs et de go ont vu des affrontements entre humains et ordinateurs. En ce qui concerne les échecs, le tournant qui va entériner la domination des machines sur les hommes est la série de matchs Deep Blue - Kasparov de 1996 à 1997. Pour le jeu de go, les humains ont longtemps conservé un avantage, le match entre AlphaGo et Lee Sedol de 2016 marquant probablement le passage à la domination des machines sur les humains.

Développé chez DeepMind, société spécialisée dans l’intelligence artificielle, AlphaGo est un logiciel s’appuyant sur l’apprentissage supervisé. Des parties de go ont donc été choisies et utilisées pour entraîner un réseau de neurones profond. L’hégémonie de AlphaGo va cependant être de courte durée : fin 2017, une équipe de Deepmind publie un article dans Nature décrivant AlphaGo Zero, un logiciel s’appuyant sur l’apprentissage non supervisé. Le réseau de neurones commence par jouer des coups aléatoires et devient un peu plus fort après chaque partie. Après en avoir joué près de 5 millions, AlphaGo Zero écrase purement et simplement ses concurrents, avec notamment une victoire cent à zéro contre la version de AlphaGo ayant vaincu Lee Sedol. Le roi est mort, vive le roi !

Fin 2017, un second article de DeepMind présente le logiciel AlphaZero, adaptation de AlphaGo Zero aux jeux d’échecs et de shogi, jeux dans lesquels il remporte des victoires contre les meilleurs programmes. Quelques parties d’échecs entre AlphaZero et Stockfish sont montrées. De nouvelles stratégies sont ainsi esquissées, ouvrant la voie à de nouvelles ouvertures et à des avancées théoriques dans la compréhension de ce jeu millénaire. Malheureusement, le logiciel développé par DeepMind n’est pas accessible à tous, au grand dam des passionnés. C’est dans ce contexte qu’arrivent Leela Zero (initié par Gian-Carlo Pascutto) et Leela Chess Zero. Basés sur les publications de DeepMind, les deux logiciels sous licence libre aspirent à dominer les jeux de go et d’échecs.

La clé de voûte d’un logiciel jouant aux échecs est l’évaluation d’une position donnée, ainsi que la sélection des coups jouables. Les évaluations les plus simples sont linéaires : les probabilités de gain associées à l’avantage matériel — la tour est plus forte que le pion —, à l’avantage positionnel — le pion qui atteint la dernière ligne est plus fort que la tour — et à l’initiative — simplifions en assimilant l’initiative à l’attaque — sont combinées linéairement à travers une somme pondérée. Les réseaux de neurones s’affranchissent d’une telle hypothèse et ont une évaluation de la position qui est non-linéaire. En ce qui concerne Lc0, le réseau de neurones est chargé de l’évaluation. À partir d’une position donnée, des coups jouables sont sélectionnés aléatoirement (recherche arborescente Monte-Carlo) et évalués. Pour des raisons d’efficacité, la sélection des coups jouables n’est pas totalement aléatoire : elle s’appuie sur une variante de la stratégie UCT, elle-même inspirée du problème du bandit manchot.

Pour les jeux de go et d’échecs, les machines ont atteint un niveau considérable. En ce qui concerne les échecs, les adversaires redoutables des années 90 sont désormais les partenaires et les enseignants des joueurs professionnels, et ils assistent les plateformes de jeu en ligne dans la détection des tricheurs (point abordé vers 1h03 cet article). Stockfish a longtemps été caricaturé comme un prodige de calcul et un défenseur sans égal, la promesse d’un jeu soporifique à haut niveau. Certaines des parties opposant AlphaZero et Lc0 à Stockfish ont chamboulé cette conception, les réseaux de neurones n’hésitant pas à sacrifier des pièces pour obtenir une position avantageuse à long terme, échappant ainsi à la ligne Maginot qu’avait dressée Stockfish. À n’en pas douter, AlphaZero et Lc0 sont disruptifs.

Le grand rival, StockFish

Il existe un grand nombre de logiciels sachant jouer aux échecs. Les performances de ces derniers évoluent au cours des mises à jour, mais également avec les progrès des (co)processeurs.

L’un des logiciels ayant le plus haut niveau est StockFish, dont la version 12 a fait l’objet d’une dépêche ici, et dont la version 13 est disponible depuis Février 2021. Il est disponible sous licence GPL v3.0 sur github. Une de ses forces, c’est sa plateforme de tests distribués Fishtest. Des volontaires donnent du temps de calcul afin d’évaluer les modifications apportées au programme. L’ajout d’un réseau de neurones à partir de la version 12 a donné un avantage important à StockFish. Avantage d’autant plus précieux qu’il ne nécessite pas l’utilisation d’une carte graphique ou d’un coprocesseur.

StockFish peut utiliser jusqu’à 512 fils d’exécution pour évaluer une position et sélectionner les meilleurs coups. Plus le programme a accès à une puissance de calcul élevée, plus son évaluation est précise. Ainsi, certaines positions complexes ne peuvent être évaluées précisément qu’avec une puissance de calcul élevée, ou après un temps de calcul long. La finesse de l’analyse correspond plus ou moins à la profondeur qui la caractérise. Par exemple, avec une profondeur d’analyse de 20, StockFish évalue la position après 20 coups joués, soit 10 coups pour chaque camp, l’exploration du graphe étant non exhaustive.

La mêlée des prétendants

L’offre est pléthorique, et la liste qui suit n’est qu’illustrative.

En premier lieu, citons Komodo (par Don Dailey et Mark Lefler). Le varan a remporté de nombreuses compétitions. Depuis novembre 2020, la version dragon intègre d’ailleurs un réseau de neurones. Les versions 12 et antérieures sont disponibles gratuitement.

À la sortie du podium constitué par Lc0, StockFish et Komodo, nous trouvons l’illustre Houdini (par Robert Houdart). Les performances passées étaient impressionnantes, mais le logiciel est en perte de vitesse et la dernière version date de novembre 2017. Les versions 1.5a et antérieures sont disponibles gratuitement. La version 6 du magicien a fait l’objet de sérieuses controverses.

Enfin, signalons le superbe Stoofvlees (par Gian-Carlo Pascutto, l’initiateur de Leela Zero). Ce logiciel comporte un réseau de neurones qui a été entraîné à partir de parties de grands maîtres, dans l’espoir de produire un jeu humain à très haut niveau. La carbonade flamande figure en bonne place dans les compétitions internationales mais n’est pas téléchargeable.

La controverse ayant frappé Houdini a probablement hérissé le poil des aficionados du logiciel libre qui peuplent cet espace. Dans la même veine, on peut évoquer les controverses entourant AllieStein dont une partie provenait de Lc0. Plus récemment, chessbase (Albert Silver) a récidivé : Deus X était une copie de Lc0, Fat Fritz 2 est une copie de StockFish. Et c’est 100 euros la copie.

La montée en puissance dans les tournois

En avril 2018, un match est organisé entre Lc0 et le Grand Maître (GM) Andrew Tang. Le réseau de neurones s’appuie sur une GTX 1060 et concède quelques défaites contre le GM. Outre le résumé du match sur lichess, n’hésitez pas à visualiser la performance impressionnante du GM en cadence ultra-rapide sur twitch.

Août 2018, saison 13 du Top Chess Engine Championship (TCEC) : Lc0 remporte la division 4 mais stagne en division 3 après un départage défavorable contre le logiciel Arasan. Les performances de Lc0 sont jugées décevantes, à juste titre, les cartes graphiques étaient en surchauffe.

Février 2019, saison 14 du TCEC : Lc0 accède à la finale. Défaite contre StockFish d’un petit point après 100 parties.

Mai 2019, saison 15 du TCEC : Lc0 remporte le tournoi avec 7 points d’avance sur StockFish au bout de 100 matchs. À titre illustratif, les parties 61 et 62 de la finale entre StockFish et Lc0 sont visibles ci-dessous. Lc0 remporte les deux parties, avec les pièces noires pour la partie 61 et avec les pièces blanches pour la partie 62. Dans le cadre du TCEC, les premiers coups de chaque position sont imposés par les organisateurs afin d’introduire un déséquilibre dans la position. La position imposée est jouée deux fois, les logiciels alternant les couleurs. En ce qui concerne la position imposée pour les parties 61 et 62, une variante de la Trompowsky, la victoire de Lc0 dans les deux parties montre une compréhension de la position nettement supérieure. Notez que les positions n’aboutissent généralement pas à un mat, la partie s’arrêtant lorsque les deux logiciels s’accordent pour évaluer la position gagnante pour un camp.

TCEC15, partie 61 TCEC15, partie 62
TCEC15, partie 61 TCEC15, partie 62

Octobre 2019, saison 16 du TCEC : remportée par StockFish, Lc0 termine à la troisième place et échoue à se qualifier en finale. Le finaliste perdant, AllieStein, s’appuie partiellement sur Lc0.

Avril 2020, saison 17 du TCEC : remportée par Lc0 avec 5 points d’avance sur StockFish au bout de 100 matchs.

Juillet 2020, saison 18 du TCEC : Lc0 échoue en finale contre StockFish avec 7 points de retard. Ci-dessous une des victoires de Lc0 avec les blancs : après le sacrifice de la dame, victoire par abandon, l’avantage final de deux pièces (fou + cavalier) est décisif.
GIF-TCE18-Game65

Juillet 2020, lors de la sixième coupe TCEC, Lc0 échoue en finale contre AllieStein. Ce dernier a vaincu StockFish en demi-finale, et s’appuie partiellement sur Lc0.

Août 2020 : StockFish intègre un réseau de neurones et passe à la vitesse supérieure.

Octobre 2020, saison 19 du TCEC : Lc0 échoue en finale contre StockFish avec 9 points de retard. Ci-dessous une des victoires de StockFish avec les blancs : après le sacrifice d’un cavalier puis d’une qualité (échange d’une tour contre un fou), l’avantage final de quatre pions contre une tour est décisif. Le réseau de neurones assistant l’algorithme d’évaluation de la position ajouté dans la version 12 de Stockfish semble renforcer le logiciel, avec une capacité accrue à convertir en victoire les positions avantageuses.
gif-TCEC19-game18

Novembre 2020, septième coupe TCEC : Lc0 échoue en finale contre StockFish.

Décembre 2020, saison 20 du TCEC : Lc0 échoue à nouveau en finale contre StockFish avec 6 points de retard.

Février 2021, huitième coupe TCEC : Lc0 échoue encore en finale contre StockFish. Ci-dessous la victoire de Lc0 contre AllieStein en demi-finale.
TCEC Cup 8, semi-final, Lc0 VS StockFish

Impact sur les échecs, perspectives

Les derniers tournois montrent que Lc0 joue très bien aux échecs. Mais le roi StockFish semble indétrônable, en particulier depuis qu’il intègre un réseau de neurones. Cependant, l’année 2021 pourrait réserver de belles surprises. L’un des principaux développeurs de Lc0 a écrit un nouveau moteur, Ceres, dont le niveau de parallélisme semble doubler la puissance de calcul de Lc0. Dans ces conditions, le duel entre Stockfish et Lc0 pourrait tourner à l’avantage de Lc0, mais pour bénéficier des nouveaux algorithmes apportés par Ceres, une réécriture complète de Lc0 semble inéluctable.

Les ordinateurs et l’intelligence artificielle ont révolutionné le jeu d’échecs à haut niveau. Les premières études théoriques dont on a trace étaient dédiées aux finales et remontent à environ 820. À partir de la fin des années 90, les analyses informatiques deviennent prépondérantes. Typiquement, les positions étaient étudiées avec StockFish ou ses précurseurs, véritables oracles permettant d’évaluer les chances de gain associées à différentes variantes. L’arrivée des réseaux de neurones AlphaZero et Lc0 change complètement la donne : on peut ré-évaluer la plupart des ouvertures ainsi que les positions complexes obtenues en milieu de jeu. Le fait d’avoir accès à plusieurs programmes, chacun ayant une approche spécifique, conduit à mieux comprendre et évaluer les positions complexes.

Aller plus loin

  • # Une équipe Linuxfr.org sur Lichess.org ?

    Posté par  . Évalué à 8.

    Cette bien sympathique dépêche (merci !) évoque Lichess, communauté d'échec sur les Internet basée sur un logiciel FLOSS : Lila évoqué ici une fois il y presque 5ans déjà, toujours présente, toujours active, toujours en évolution et disponible d'ailleurs sur ordiphone.
    A quand une équipe LinuxFr.org sur Lichess ?

    Alcyone

    • [^] # Re: Une équipe Linuxfr.org sur Lichess.org ?

      Posté par  . Évalué à 5. Dernière modification le 05 mars 2021 à 07:43.

      Je plussoie : Lichess est top. C'est ce que j'ai utilisé pour générer les gif : https://lichess.org/study/kaIgLLlp

      Pourquoi pas une équipe, mais à quoi sert une équipe dans Lichess ?

      • [^] # Re: Une équipe Linuxfr.org sur Lichess.org ?

        Posté par  . Évalué à 3.

        Autant que je sache, ni plus, ni moins à faire des tournois sous une étiquette d'équipe :-)

        Alcyone

        • [^] # Re: Une équipe Linuxfr.org sur Lichess.org ?

          Posté par  (site web personnel) . Évalué à 6.

          Bonjour,

          J'avais rédigé le journal concernant Lichess il y a cinq ans, mon compte est toujours actif et je ne suis pas contre une équipe Linuxfr, même si mon niveau reste plus que modeste.

          • [^] # Re: Une équipe Linuxfr.org sur Lichess.org ?

            Posté par  . Évalué à 3.

            Mon niveau est également très modeste et mon compte pas bien vieux ^

            Alcyone

            • [^] # Re: Une équipe Linuxfr.org sur Lichess.org ?

              Posté par  . Évalué à 4.

              C’est quoi que tu appelles modeste ?

              J’ai un Elo de 950-1000 en parties rapides sur chess.com (je joue surtout des parties de 10 minutes en général, 30 minutes parfois), en blitz et bullet je suis complètement nul (les positions ne sont pas assez instinctives pour moi) et je dois mes victoires principalement à la chance.

              • [^] # Re: Une équipe Linuxfr.org sur Lichess.org ?

                Posté par  . Évalué à 2.

                J'ai l'impression que les Elo sur lichess sont supérieurs à ceux de chess.com. Mais je pratique peu sur ce dernier.

                • [^] # Re: Une équipe Linuxfr.org sur Lichess.org ?

                  Posté par  (site web personnel) . Évalué à 3.

                  Matériellement comment constituer l'équipe? Comment la rejoindre?

                  • [^] # Re: Une équipe Linuxfr.org sur Lichess.org ?

                    Posté par  . Évalué à 3. Dernière modification le 09 mars 2021 à 22:02.

                    Faut reconnaître que la doc Lichess est assez avare sur pas mal de points (ou bien cachée)…dont celui-ci mais bref : une fois connecté à ton profil, il faut aller dans le menu dédié aux équipes "Communauté > Équipes" et sélectionner "Nouvelle équipe" pour démarrer la création (je note que le CAPTCHA de circonstance m'a bien fait rire).

                    Et pour rejoindre une équipe, depuis la page d'une équipe, cliquer sur le bouton "Rejoindre l'équipe" (les modalités dépendant visiblement du paramétrage de l'équipe : demander un pass, rédiger une demande, etc.).

                    Alcyone

              • [^] # Re: Une équipe Linuxfr.org sur Lichess.org ?

                Posté par  . Évalué à 2. Dernière modification le 09 mars 2021 à 21:54.

                Je n'ai pas joué assez joué sur Lichess pour être classé sauf en Blitz (environ 1100 sur moins de 20 parties de mémoire), je joue surtout contre StockFish '
                Ma remise aux échecs est assez récente, j'ai un petit niveau sans appétence particulière.

                Alcyone

  • # Estimation Elo

    Posté par  . Évalué à 3.

    Le texte de la dépêche dit "Ce programme a un Elo autour de 3000", mais ça doit être beaucoup plus que ça. On en avait discuté lors de la récente dépêche sur Stockfish, le principal concurrent; si Leela est à peu près au niveau de Stockfish, son Elo doit être largement supérieur à 3500. Il me semble que pout Stockfish 12, on parlait même de 3800.

    3000, c'est pas beaucoup pour un moteur, ça veut dire que le programme perd parfois (rarement, certes, mais c'est possible) contre les meilleurs joueurs (qui sont autour de 2800).

    Après, les Elo sont plus difficiles à évaluer quand il y a peu de concurrence et de gros écarts, il faut les calculer en prenant en compte les versions précédentes (moins performantes) des programmes et faire des approximations non vérifiables. 3500 ou 3800, de toutes manières, c'est totalement imbattable pas un humain.

    Pour les programmes, les perfs dépendent évidemment des machines sur lesquels ils tournent. Du coup, peut-être qu'un Elo de 3000, c'est sur un ordinateur de bureau? Ça m'étonnerait quand même, c'est vraiment peu.

    • [^] # Re: Estimation Elo

      Posté par  . Évalué à 2.

      Le Elo dépends du niveau général des joueurs et de la cadence. Sur internet en cadence hyper-rapide, les meilleurs humains dépassent largement les 3000

      • [^] # Re: Estimation Elo

        Posté par  . Évalué à 5.

        J'imagine que ça n'aurait aucun sens de quantifier la puissance des moteurs autrement qu'en fournissant des Elo comparables aux Elo FIDE en partie longue…

        Le score Elo est relatif, donc les Elo proposés par les sites d'échecs sont évidemment incomparables avec les Elo FIDE (il faut les corriger; en général il faut augmenter les Elo faibles (il y a plus de joueurs faibles et moyens sur les sites que dans les compétitions officielles), et diminuer les Elo forts (parce que la concentration des joueurs forts est plus forte en compet officielle). Si les Elo en parte rapide sont plus élevés, c'est soit parce que la base est plus large (plus il y a de joueurs et plus il y a de points Elo à se partager), soit parce qu'il y a plus de variance entre les joueurs forts et les joueurs faibles.

        Ce qui n'est pas très clair, c'est comment calculer l'Elo d'un programme informatique, faut-il le mettre à la même cadence qu'une partie longue, mais comment prendre en compte la machine? L'Elo des programmes augmente avec les progrès techniques des machines; c'est à la fois anormal (puisque du coup, c'est la perf du couple machine/logiciel qui est mesurée), mais ça correspond à une réalité. Sans compter qu'il est parfois difficile de distinguer logiciel et matériel, puisque la programmation sur cartes graphiques a par exemple amélioré les perfs des logiciels.

    • [^] # Re: Estimation Elo

      Posté par  . Évalué à 2.

      J'avais rédigé ce paragraphe il y a un moment. C'est vrai que ce n'est pas super clair. D'autant plus que pour un logiciel, le niveau Elo va dépendre de la puissance de calcul de la machine.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.