Des échecs de niveau grand maître sans recherche
(github.com/google-deepmind)- Le
searchless_chessde Google DeepMind est l’implémentation de l’article NeurIPS 2024 Amortized Planning with Large-Scale Transformers et évalue dans quelle mesure de grands Transformers peuvent résoudre des problèmes de planification aux échecs sans recherche explicite - Le jeu de données central, ChessBench, se compose de 10 millions de parties d’échecs avec des coups légaux et des annotations de valeur fournis par Stockfish 16, soit 15 milliards de points de données au total
- Des Transformers allant jusqu’à 270 millions de paramètres sont entraînés par apprentissage supervisé, en comparant l’effet de la taille du jeu de données, de la taille du modèle, du type d’architecture et de l’objectif de prédiction
- Le plus grand modèle prédit assez précisément les action-values sur de nouveaux plateaux, résout des puzzles d’échecs difficiles sans recherche explicite et atteint un Elo blitz Lichess de 2895 contre des adversaires humains
- L’algorithme fondé sur la recherche de Stockfish peut être distillé de façon très convaincante dans de grands Transformers, mais la distillation complète n’est pas encore atteinte, si bien que ChessBench reste un benchmark pour les recherches futures
Objectif du projet et contexte de l’article
searchless_chessest l’implémentation de Amortized Planning with Large-Scale Transformers: A Case Study on Chess- Les échecs servent de problème de planification emblématique en IA, et ce projet évalue les performances des Transformers sur une tâche où la mémorisation n’a pas de sens, même à grande échelle
- L’étude vérifie, sur le cas des échecs, s’il est possible de distiller par apprentissage supervisé dans un Transformer le comportement d’un moteur d’échecs fondé sur la recherche
Jeu de données ChessBench
- ChessBench inclut des coups légaux et des annotations de valeur fournis par Stockfish 16
- Nombre de parties d’échecs : 10 millions
- Nombre total de points de données : 15 milliards
- Stockfish 16 est utilisé comme moteur d’échecs de tout premier plan
- Le jeu de données est divisé selon l’objectif de prédiction
-
Action-Value
-
Behavioral Cloning
-
State-Value
puzzles.csvpour l’évaluation des puzzles- Exemples de tailles de téléchargement :
- Train Action-Value : premier shard 1.2GB, total 1.1TB, 2148 shards au total
- Train Behavioral Cloning : 34GB
- Train State-Value : 36GB
- Test Action-Value : 141MB
- Test Behavioral Cloning : 4.1MB
- Test State-Value : 4.4MB
- Puzzles : 4.5MB
-
Modèles et configuration expérimentale
- Des Transformers sont entraînés jusqu’à 270M paramètres
- L’entraînement est réalisé par apprentissage supervisé sur la base de ChessBench
- Les expériences comparent l’influence des éléments suivants
- taille du jeu de données
- taille du modèle
- type d’architecture
- objectif de prédiction : state-values, action-values, behavioral cloning
- Le plus grand modèle prédit assez précisément les action-values sur de nouveaux plateaux, montrant une généralisation au-delà de la simple mémorisation
Performances sans recherche et points de comparaison
- La politique d’échecs finale résout des puzzles d’échecs difficiles sans recherche explicite
- Elle atteint 2895 Elo en blitz sur Lichess contre des adversaires humains, soit un niveau de grand maître
- Les comparaisons incluent Leela Chess Zero et AlphaZero
- Les deux systèmes sont comparés comme modèles entraînés par self-play
- Les cas avec recherche et sans recherche sont tous deux comparés
- L’algorithme fondé sur la recherche de Stockfish peut être très bien approché et distillé dans un grand Transformer, mais une distillation complète n’est pas encore possible
Structure du dépôt et flux d’exécution
- Les principaux répertoires et fichiers ont les rôles suivants
src/engines: Stockfish, Leela Chess Zero, interface pour moteurs neuronauxsrc/transformer.py: Transformer decoder-onlysrc/train.py: script d’exemple pour l’entraînement et l’évaluationsrc/puzzles.py: script d’évaluation des puzzlessrc/tournament.py: script de tournoi Elosrc/searchless_chess.ipynb: notebook d’analyse du comportement du modèlesrc/tokenizer.py: tokenisation du plateau d’échecs
- Des checkpoints préentraînés sont fournis pour les modèles
9M,136Met270M - Le notebook d’analyse du comportement du modèle permet d’effectuer des analyses telles que le calcul du taux de victoire pour tous les coups légaux
Installation et dépendances
- L’environnement d’exécution requiert Python 3.10
- Les dépendances nécessaires s’installent avec
pip install -r requirements.txt - En présence d’un GPU, l’installation de JAX avec support CUDA est recommandée pour accélérer l’entraînement
- L’exemple utilise la commande d’installation
jax[cuda12_pip]pour CUDA 12 - La version de JAX doit correspondre à l’installation CUDA utilisée
- L’exemple utilise la commande d’installation
- L’installation de moteurs et outils externes est nécessaire
Évaluation et mode d’emploi
- L’entraînement local s’exécute depuis
srcavecpython train.py- Les checkpoints sont enregistrés dans
/checkpoints/local
- Les checkpoints sont enregistrés dans
- L’évaluation des puzzles s’exécute sous la forme
python puzzles.py --num_puzzles 10 --agent=local - Les agents pris en charge par
puzzles.pysont les suivants- modèle entraîné localement :
local - modèles préentraînés :
9M,136M,270M - Stockfish :
stockfish,stockfish_all_moves - Lc0 :
leela_chess_zero_depth_1,leela_chess_zero_policy_net,leela_chess_zero_400_sims
- modèle entraîné localement :
- Le calcul Elo se fait en générant des parties avec
python tournament.py --num_games=200, puis en lisantdata/tournament.pgnavec BayesElo
Licence et limitations
- Le logiciel est distribué sous Apache License 2.0
- Les poids du modèle suivent la licence Creative Commons Attribution 4.0
- Une partie du jeu de données suit la licence Creative Commons CC0 public domain de lichess.org, le reste étant sous licence CC-BY
- La distribution est fournie en l’état, sur une base
"AS IS", sans garantie explicite ni implicite - Ce projet n’est pas un produit officiel de Google
1 commentaires
Avis de Hacker News
C’est hors sujet, mais je me demande où en est aujourd’hui le jeu d’échecs informatique à un niveau non-GM
Il m’arrive de vouloir jouer contre un adversaire proche de mon niveau, ou environ 100 points de Elo au-dessus de moi pour m’entraîner
On peut affaiblir la plupart des moteurs en réduisant la profondeur de recherche, mais en général ça ne marche pas très bien. Si on la réduit suffisamment, on finit bien par gagner environ la moitié des parties, mais la plupart du temps on a l’impression d’être dominé toute la partie, puis de gagner parce que le moteur commet une ou deux grosses bourdes
Ce que je voudrais, c’est un adversaire ordinateur qui joue au niveau que j’ai choisi, mais qui donne l’impression d’être un joueur humain typique de cette tranche de Elo. Je me demande si un tel moteur existe
Il y a eu plusieurs moments où il m’a vraiment semblé « humain », par exemple en tombant dans des pièges qu’un algorithme de recherche traditionnel éviterait facilement, mais dans lesquels un humain pourrait se faire prendre
Ce n’est pas réglable, mais il existe quelques versions avec des Elo différents. La plage n’est toutefois pas très large
https://www.maiachess.com/
https://lichess.org/@/maia1
Plus le Elo du joueur monte, plus il devient difficile de prédire le coup suivant, car il faut modéliser non seulement le choix intuitif des coups, mais aussi le processus de recherche lui-même
On peut aussi entraîner le système uniquement sur les parties d’un joueur donné pour le personnaliser davantage
L’approche est proche de Maia, mais avec un autre réseau de neurones ; la correspondance des coups était un peu meilleure, et j’y ai ajouté un algorithme de maximisation de l’espérance pour que le bot exploite mes erreurs
Si l’on ne jouait pas de façon suffisamment stable, on perdait tout simplement
À mon avis, cette fonction a disparu. Comme il donnait l’impression de commettre des erreurs humaines sous pression, c’était le seul ordinateur qui m’ait vraiment semblé être un véritable adversaire, contrairement à un moteur qui joue comme une machine puis fait arbitrairement un coup idiot
Il est très rare d’avoir le sentiment que l’adversaire a bien joué, mais que j’ai globalement joué un peu mieux et mérité ma victoire
Presque toujours, cela ressemble moins à une victoire de ma part qu’à une défaite de l’adversaire. Ce n’est pas un problème propre à l’intelligence artificielle
Si quelqu’un parvenait à créer une IA qui perde de manière satisfaisante dans des jeux symétriques, tout en rendant la défaite satisfaisante et formatrice, ce serait une affaire à un milliard de dollars. Je pense que ce serait difficile sans une recherche sérieuse en psychologie
J’ai fait une présentation sur ce sujet, et j’en ai aussi rédigé le contenu[1]. Cet article est un bon exemple de distillation de connaissances
Plutôt qu’un article sur les échecs eux-mêmes, c’est davantage un article montrant qu’une fonction de recherche non linéaire complexe, réglée par des experts, peut être distillée, pour des entrées standardisées comme aux échecs, en un modèle Transformer presque linéaire
[1]: https://hlfshell.ai/posts/deepmind-grandmaster-chess-without...
Le temps est donc probablement un facteur. Les humains sont plus susceptibles de tomber au temps, ou de commettre des erreurs lorsqu’il leur reste peu de temps
Le fait d’avoir appris une très bonne fonction d’évaluation sans recherche reste impressionnant. J’aurais toutefois aimé que les parties où le repli vers Stockfish s’est déclenché soient exclues. Pour les humains aussi, un mat en 2 coups et un mat en 10 coups peuvent faire la différence entre une victoire et une nulle/défaite du point de vue de la défaite au temps
J’aurais aussi voulu voir un affrontement direct contre Stockfish avec une profondeur de recherche limitée. Cela aurait donné une idée approximative de la quantité de l’arbre de recherche que cette fonction d’évaluation a distillée
Pour quelqu’un qui veut se lancer dans les réseaux de neurones pour les échecs, je recommande vivement ce dépôt : https://github.com/sgrvinod/chess-transformers
Le code PyTorch est facile à lire, suit une implémentation classique, et l’architecture ressemble aussi à celles des réseaux de neurones d’échecs actuellement performants
https://lczero.org/blog/2024/02/how-well-do-lc0-networks-com...
Un billet écrit par les auteurs du meilleur moteur d’échecs neuronal à propos de cet article de DeepMind
L’immense jeu de données synthétiques utilisé pour l’entraînement a finalement été produit au moyen de beaucoup de recherche traditionnelle. Il y a donc un côté un peu amusant, mais cela reste impressionnant
Je me souviens que Matthew Sadler, GM et auteur sur les échecs, avait configuré Leela Zero pour jouer des parties d’entraînement quasiment à l’intuition, avec très peu, voire pas du tout, de recherche
En général, il gagnait, mais pas toujours. Je crois que c’était dans The Silicon Road to Chess Improvement
Si l’on génère les données d’entraînement en faisant tourner Stockfish sur toutes les positions de plateau de toutes les parties, n’est-on pas, au final, en train d’encoder l’arbre de recherche dans le modèle Transformer ?
Dans ce cas, plus on augmente le nombre de paramètres du modèle, plus il peut contenir une grande partie de l’arbre de recherche et meilleures seront ses performances ; cela ne me paraît pas très intéressant
Ce dépôt fournit l’implémentation de notre article Grandmaster-Level Chess Without Search : https://arxiv.org/abs/2402.04494
Les percées récentes en apprentissage automatique sont principalement venues du passage à l’échelle : des architectures à grande échelle fondées sur l’attention et des jeux de données d’une ampleur sans précédent. Cet article étudie l’impact de l’apprentissage à grande échelle aux échecs
Contrairement aux moteurs d’échecs traditionnels, qui s’appuient sur des heuristiques complexes, une recherche explicite ou une combinaison des deux, nous entraînons de façon supervisée un modèle Transformer à 270 millions de paramètres sur un jeu de données de 10 millions de parties d’échecs
Chaque position du jeu de données est annotée avec la valeur d’action fournie par le puissant moteur Stockfish 16, ce qui représente environ 15 milliards de points de données
Le plus grand modèle a atteint un Elo blitz Lichess de 2895 contre des humains, et a résolu des problèmes d’échecs difficiles sans réglages spécifiques au domaine ni algorithme de recherche explicite
Il dépasse également les réseaux de politique et de valeur d’AlphaZero sans MCTS, ainsi que GPT-3.5-turbo-instruct. Une étude systématique des tailles de modèles et de jeux de données montre que de fortes performances aux échecs n’apparaissent qu’à une échelle suffisante. Nous avons aussi mené de nombreuses expériences d’ablation sur les choix de conception et les hyperparamètres
J’aimerais qu’il existe un moteur qui pense davantage comme un humain. Comme cette méthode utilise des parties annotées par Stockfish, elle semble fondamentalement amenée à penser comme un ordinateur
S’il pensait comme un humain, ce serait très utile dans les analyses de parties pour indiquer, à chaque position, ce qu’il faut regarder, en l’adaptant à mon Elo
Ce qui rend Magnus Carlsen extraordinaire, c’est qu’il a atteint son niveau actuel aux échecs sous des contraintes de temps et de calcul énormes par rapport à un ordinateur. Son efficacité d’apprentissage est exceptionnelle comparée à n’importe quel moteur d’échecs
Cela donne l’impression d’un programme de la demoscene. Il existe même un programme d’échecs de 1 Ko qui fonctionne réellement
Résoudre complètement les échecs produirait un arbre trop grand pour être calculé aujourd’hui. Il me semble que c’est de l’ordre de 10^80, mais je peux me tromper
Si l’on annotait cet arbre avec victoire/défaite/nulle, on pourrait obtenir un joueur optimal sans recherche
Les deux approches évidentes de compression et d’optimisation consistent à approximer l’arbre, ou à approximer les annotations. L’efficacité de ces deux méthodes dépend fortement de la structure de l’arbre
Ce résultat semble montrer davantage à quel point l’arbre des parties d’échecs se prête à ces deux approches, plutôt que la puissance absolue de l’approche par apprentissage elle-même. La conclusion que j’en tire est qu’une approximation raisonnable de cet arbre est possible avec des données de l’ordre de 270 millions de mots
Les échecs sont résolus avec une base de données de 18,4 To lorsqu’il reste 7 pièces sur l’échiquier, comme expliqué ici : https://lichess.org/@/lichess/blog/7-piece-syzygy-tablebases...