- Lorsque plusieurs LLM ont été mis aux échecs dans les mêmes conditions, la plupart se sont effondrés après l’ouverture, mais gpt-3.5-turbo-instruct a affiché de très fortes performances face au niveau de difficulté minimal de Stockfish
- L’expérience consistait à faire jouer le LLM avec les Blancs contre Stockfish au niveau minimal, puis à évaluer la position après chaque coup avec le score en centipions d’un moteur d’échecs
llama-3.2-3b,llama-3.1-70b,Qwen-2.5-72b,command-r-v01,gemma-2-27b,gpt-3.5-turbo,gpt-4o-mini,gpt-4oeto1-minin’ont tous pas réussi à s’approcher degpt-3.5-turbo-instruct- Dans la comparaison de modèles de familles similaires, le réglage instruction/chat semblait dégrader les performances aux échecs, mais l’ampleur de la baisse variait selon les modèles, de faible à très importante
- Sur les modèles ouverts, un problème de tokenizer faisait qu’un simple espace à la fin du prompt modifiait fortement les performances, et l’entrée en notation échiquéenne réagit de façon sensible aux représentations internes des LLM et aux contraintes de génération
Configuration de l’expérience et méthode d’évaluation
- Le LLM recevait un prompt lui demandant de choisir le prochain coup comme un grand maître d’échecs, avec en entrée une partie d’échecs partiellement avancée
- La notation utilisée était la notation algébrique standard, comme
e4,Rdf8,R1a3 - Les instructions précisaient de ne pas écrire les numéros de coups et de ne pas expliquer les raisons du choix
- La notation utilisée était la notation algébrique standard, comme
- Dans toutes les parties, le LLM jouait avec les Blancs, et l’adversaire était Stockfish, une IA d’échecs standard, réglée sur son niveau de difficulté minimal
- La position après chaque coup était notée par un moteur d’échecs afin de comparer les performances des modèles
- L’unité était le centipion, où un pion vaut 100 points, en tenant aussi compte de la valeur positionnelle
- Quand la partie était terminée, une victoire du LLM valait +1500, une nulle 0 et une défaite -1500
Des modèles qui faiblissent brutalement après l’ouverture
llama-3.2-3best un base model de 3 milliards de paramètres, et il a perdu ses 50 parties- Il pouvait jouer quelques coups d’ouverture standard, mais commençait rapidement à perdre des pièces
- Il a tout perdu alors même que l’adversaire était Stockfish au réglage minimal
llama-3.1-70b, avec 70 milliards de paramètres, n’a été qu’un peu meilleur, mais ses résultats sont restés très mauvaisllama-3.1-70b-instruct,Qwen-2.5-72b,command-r-v01etgemma-2-27bont aussi été testés de la même manière, sans montrer de fortes performances aux échecsllama-3.1-405b, testé sur quelques parties, est lui aussi un modèle plus grand quegpt-3.5-turbo, mais ses résultats sont restés mauvais
Le cas exceptionnellement fort de gpt-3.5-turbo-instruct
gpt-3.5-turbo-instructest un modèle fermé d’OpenAI, donc ses détails sont flous, mais il a montré de très bonnes performances sur 10 essais- Il était assez fort pour gagner toutes les parties même en augmentant de plusieurs crans la difficulté de Stockfish
gpt-3.5-turbo, au nom similaire, est un modèle davantage réglé pour la conversation, et ses performances aux échecs différaient fortement de celles degpt-3.5-turbo-instructgpt-4o-mini,gpt-4oeto1-minifaisaient aussi partie des modèles testés ;gpt-4oa perdu un peu plus lentement, mais a perdu toutes ses parties- La dynamique des expériences d’échecs avec des LLM sur Internet avait suscité, en septembre-octobre 2023, un intérêt autour d’un niveau d’amateur avancé, avant de revenir récemment à une situation où les modèles s’effondrent à nouveau après l’ouverture
Réglage instruction/chat et performances aux échecs
- En comparant, dans des familles similaires, des modèles proches du base model et des modèles réglés davantage, le réglage instruction supplémentaire apparaît toujours comme un facteur de dégradation des performances aux échecs
- L’ampleur de la dégradation n’était pas constante
- Dans deux cas, l’écart était faible
- Dans un cas, l’écart était très important
- Le nom
gpt-3.5-turbo-instructdoit être interprété différemment des conventions habituelles de nommage- Ici, il est traité comme un modèle plus proche du base model que
gpt-3.5-turbo - C’est l’inverse de ce que désignent généralement
instructouit, qui impliquent davantage de réglage pour la conversation et le suivi d’instructions
- Ici, il est traité comme un modèle plus proche du base model que
Causes possibles
-
Les grands base models peuvent jouer aux échecs, mais l’instruction tuning pourrait les dégrader
- Cela correspond aux résultats expérimentaux, mais il existe un contre-exemple : le plus grand
llama-3.1-405ba lui aussi obtenu de mauvais résultats
- Cela correspond aux résultats expérimentaux, mais il existe un contre-exemple : le plus grand
-
gpt-3.5-turbo-instructa peut-être été entraîné sur davantage de parties d’échecs- Il est probable que tous les modèles aient appris sur de nombreuses parties d’échecs, mais il est difficile d’en connaître la quantité exacte
-
Les différences d’architecture Transformer ont peut-être eu un effet
- Il est aussi difficile d’exclure la possibilité que les modèles de la famille Llama soient particulièrement faibles aux échecs
-
Il a peut-être existé une concurrence entre différents types de données
- Un Transformer entraîné uniquement sur des parties d’échecs peut très bien jouer aux échecs
- Si
gpt-3.5-turbo-instructa été entraîné sur des données contenant une plus forte proportion de parties d’échecs, une plus grande part de ses paramètres a pu être consacrée aux échecs - Si cette hypothèse est correcte, un modèle suffisamment grand devrait pouvoir bien jouer aux échecs s’il a appris assez de données échiquéennes, même avec une faible proportion de parties dans ses données
Détails d’implémentation et contraintes
- Les modèles ouverts ont été exécutés directement, et les modèles non issus d’OpenAI ont été classés comme modèles ouverts
- L’exécution des modèles ouverts a utilisé la quantification
Q5_K_M - Pour les modèles ouverts, les coups légaux disponibles étaient générés directement, et la sortie était contrainte avec les grammars llama.cpp afin de toujours produire un coup légal
- Les modèles OpenAI ne prenant pas en charge une grammar complète, jusqu’à 10 générations étaient tentées ; si aucun coup légal n’était produit, un coup était choisi au hasard
- Un system prompt distinct a été utilisé pour les modèles de chat
llama-3.1-70b-instruct,gemma-2-27b-it,gpt-3.5-turbo,gpt-4o-minietgpt-4o o1-minine permettant pas de modifier le system prompt, il a été exécuté tel quel- Les modèles ouverts ont été exécutés avec une temperature de 0,7, et les modèles OpenAI avec les valeurs par défaut
L’étrangeté de l’espace dans le prompt et du tokenizer
- Sur les modèles ouverts, un prompt se terminant par un espace, comme
1. e4 e5 2., produisait des performances bien plus mauvaises qu’un prompt se terminant sans espace, comme1 e4 e5 2. - La cause semble liée au tokenizer
- Le tokenizer de Llama génère
ecomme un seul token après1. - Ce n’est pas la même chose que générer
eaprès un token d’espace - Si l’on met un espace à la fin de l’entrée puis qu’on demande au modèle de générer le token suivant, il se retrouve dans une situation confuse
- Le tokenizer de Llama génère
- La bonne façon de traiter cela est le token healing : supprimer le dernier token de l’entrée, puis faire de la génération contrainte pour toutes les chaînes qui commencent par la chaîne supprimée
- Dans l’implémentation, au lieu du token healing, l’espace a été retiré, puis la grammar a été modifiée pour pouvoir générer ou non un espace, avant de générer le coup légal courant avec un espace optionnel
- Dans la mise à jour, il est précisé que la cause de ce phénomène a réellement été identifiée, avec l’indice que personne n’a encore trouvé la bonne explication
Possibilité d’une optimisation par OpenAI
- Une hypothèse est qu’OpenAI, voyant l’intérêt suscité par les performances aux échecs, ait optimisé certaines données d’entraînement, un fine-tuning ou un algorithme afin d’améliorer les performances échiquéennes de
gpt-3.5-turbo-instruct - Dans cette même hypothèse, cette optimisation n’aurait peut-être pas été conservée dans les modèles ultérieurs en raison de compromis, comme le coût ou une dégradation d’autres capacités
- Il ne s’agit pas d’un élément clairement étayé, mais d’une supposition du type « OpenAI l’a fait intentionnellement », et il n’est pas certain que le calendrier corresponde
1 commentaires
Avis sur Hacker News
L’article semble passer à côté d’une possibilité évidente : OpenAI a pu considérer les échecs comme un benchmark « à gagner » et ajouter un traitement spécial pour les échecs dans
gpt-3.5-turbo-instruct, puis ne pas l’intégrer dans les modèles suivants parce que cela ne générait plus d’attention médiatique durableCertains éléments importants ressortent du test : pour les modèles fermés d’OpenAI, si aucun coup légal n’était produit, ils généraient jusqu’à 10 fois, puis choisissaient au hasard si cela échouait encore ; les modèles ouverts étaient exécutés localement avec une quantification
Q5_K_M; la présence ou non d’un espace à la fin du prompt modifiait fortement les performances des modèles ouverts ; les modèles ouverts utilisaient une température de 0,7, tandis que les modèles OpenAI utilisaient la valeur par défautEntre les comportements étranges du tokenizer, la température, la quantification, les coups aléatoires et le prompt d’échecs, je ne sais pas trop comment interpréter les résultats. L’article reste intéressant malgré tout
Peut-être que si l’on veut un modèle vraiment intelligent, il faut arrêter la tokenisation elle-même. On limite dès le départ ce que le modèle voit et la manière dont il perçoit le monde par la structure du flux d’informations en entrée
Je sais que traiter des bits ou des octets bruts est lent, mais réfuter l’hypothèse selon laquelle de gros problèmes viendraient de la tokenisation semble relativement peu coûteux et facile. Je suis surpris de ne pas voir davantage de recherches sur des tokenisations radicalement différentes
Par exemple, on dit souvent que les LLM ne savent pas compter des choses simples à cause de la tokenisation, mais le même LLM compte correctement si on utilise un prompt de chaîne de pensée. Cela ne s’explique donc pas par la tokenisation. Le problème est qu’un humain doit lui indiquer que la résolution étape par étape permet d’obtenir la réponse exacte ; sans cette aide, il a simplement tendance à deviner
Si l’on peut transformer des images en tokens, et aussi de l’audio en tokens, je me demande sans cesse s’il ne serait pas possible de créer un ensemble de tokens de représentation sémantique choisis directement par le modèle, puis de redécoder ces tokens en texte. L’inconvénient est que le retour des tokens encodés vers le texte serait avec perte, ce qui empêcherait de citer mot pour mot le texte vu
D’après ce que j’ai compris, OpenAI a fait exactement ce genre de chose avec les images dans le rapport
gpt-4o. Voir « Explorations of capabilities » : https://openai.com/index/hello-gpt-4o/Karpathy partage aussi cette idée. C’est une vidéo de deux heures où il recrée un tokenizer tout en expliquant pourquoi il déteste les tokenizers
Il vaudrait la peine d’expérimenter en modifiant le prompt et la position sur l’échiquier de plusieurs façons. Pour référence, la position donnée au modèle est cette image : https://i.imgur.com/qRxalgH.png
Il peut y avoir au moins une bizarrerie dans cette expérience. Par exemple, donner des instructions à une variante de modèle qui n’a pas été ajustée par instruction peut au contraire être contre-productif. Plus important encore, quand on ne fournit qu’un PGN tronqué, je me demande si cette position donne l’impression que les blancs jouent comme un grand maître. Même si le modèle comprend bien les échecs, il cherchera probablement à prédire le coup le plus plausible dans la position actuelle ; s’il estime que les blancs sont un mauvais joueur, il peut juger plus probable un mauvais coup
Cela dit, le fait d’avoir réglé Stockfish au niveau le plus bas tout en le présentant comme un « adversaire très fort » a peut-être un peu perturbé le modèle. Si j’interprète correctement le graphique, les premiers coups du modèle semblent acceptables, puis les problèmes apparaissent ensuite. Il vaudrait la peine de répéter l’expérience en modifiant le guide du prompt, la force de Stockfish, la position de départ, les noms des joueurs fictifs, etc.
Si l’on ne testait qu’un seul coup isolé, que pourraient bien signifier « gagner » ou « perdre » ?
D’accord. On peut essayer quelques variantes de prompt : que se passerait-il si l’on autorisait le modèle à avoir une chaîne de pensée ? Dans cette expérience, c’était explicitement interdit. Et si l’on décrit à chaque étape la position sur l’échiquier dans le prompt, le modèle n’a pas besoin de la calculer ou de l’estimer en interne.
Je me demande si le modèle tente des coups illégaux. L’auteur original ne le mentionne pas, mais les règles des échecs sont assez arbitraires, et les LLM sont tristement célèbres pour inventer quelque chose de plausible face à des problèmes difficiles plutôt que d’admettre qu’ils n’ont pas de réponse ; j’imagine donc que cela doit forcément arriver au moins une fois.
Je ne comprends pas pourquoi des personnes instruites s’attendent à ce qu’un LLM puisse jouer aux échecs à un niveau plausible.
Un LLM ne connaît pas la qualité de ses données. Un prompt du type « comporte-toi comme x » ne remplace pas le raisonnement réel ni le calcul déterministe qui sont manifestement nécessaires aux échecs.
turbo-instructjoue effectivement bien ? Il y a énormément d’affirmations approximatives fondées sur des intuitions anthropomorphiques sans fondement du genre « vrai raisonnement ». La situation actuelle me semble être une bonne preuve que personne ne comprend vraiment ce qui se passe.Si un modèle mental dit que les LLM ne devraient pas savoir jouer aux échecs, il ne peut pas expliquer un LLM qui joue fortement aux échecs. À l’inverse, un modèle qui dit qu’ils devraient bien jouer n’explique pas pourquoi beaucoup de grands modèles échouent lamentablement aux échecs. Il se passe clairement quelque chose de plus complexe.
« Niveau plausible » est subjectif, mais à ce stade il devrait pouvoir battre un débutant. Le niveau le plus bas de Stockfish utilisé dans l’article correspond déjà à un joueur intermédiaire très faible. Cela dépend de si l’on parle des implémentations publiques actuelles ou de l’idée générale des LLM ; et si l’on veut de meilleurs résultats, on pourrait aussi leur donner beaucoup plus de livres d’échecs et d’analyses de parties passées.
GPT-3.5-turbo-instructjouer au niveau d’un amateur avancé. Cela dit, le RLHF et la distillation intégrés aux nouveaux modèles semblent dégrader cette capacité.gpt-3.5-instructpeut battre Stockfish.Dire qu’un modèle public a été exécuté avec une quantification
Q5_K_Msignifie simplement que tous les paramètres ont été compressés avec perte. Ce n’est probablement pas important, si ?À mon avis, apprendre les échecs comme une séquence crée plus de problèmes que d’avantages. Même 1 000 milliards de parties ne suffiraient pas : https://en.wikipedia.org/wiki/Shannon_number
Pour être complet, les moteurs d’échecs modernes utilisent des modèles spécialisés de haute qualité comme partie de leur outillage, et peuvent au minimum faire nulle à chaque fois contre n’importe quel joueur actuel ou passé. Si l’adversaire commet la moindre petite erreur, il perd. Monter Stockfish au niveau maximal, ou au moins à un joueur de 1800+ Elo, pourrait donner des parties plus réussies, mais ce serait seulement le résultat d’une réduction du bruit dans les données d’entraînement, parce que les joueurs avancés jouent moins de coups absurdes, pas la preuve d’un meilleur jeu.
Apprendre les meilleurs coups sur des milliards ou des milliers de milliards de positions, puis intégrer cela dans une IA, pourrait mieux fonctionner. Des positions similaires ont souvent le même type de meilleur coup.
J’ai trouvé un ensemble d’expériences liées incluant
gpt-3.5-turbo-instruct,gpt-3.5-turboetgpt-4.La conclusion est tout aussi surprenante : gpt-3.5-turbo-instruct joue beaucoup mieux aux échecs.
https://blog.mathieuacher.com/GPTsChessEloRatingLegalMoves/
OpenAI a énormément d’expérience dans la création d’IA de jeu. Si je me souviens bien, c’était leur domaine principal pendant plusieurs années. Ils ont donc probablement adapté un modèle pour qu’il soit bon aux échecs, afin de voir si l’apprentissage des échecs influence l’intelligence générale. De la même manière qu’un humain peut devenir plus intelligent en apprenant les échecs, ou en apprenant les mathématiques ou la programmation.
Un LLM ne raisonne pas et ne fait pas de recherche ; il écrit du texte à partir du texte précédent. Cela peut donc ressembler à du jeu à nos yeux, mais en réalité c’est une estimation intelligente fondée sur des parties précédentes. C’est un peu comme si Kasparov notait des coups sans imaginer la disposition réelle des pièces. L’expérience intéressante serait de voir si le modèle peut jouer avec seulement les règles ; il ne le pourrait probablement pas. Pour l’instant, il ne suit pas un objectif, il rejoue de mémoire. Il n’y a pas encore quelque chose comme une attention prospective, et la beam search est suffisamment coûteuse pour qu’il vaille mieux se rabattre sur un algorithme d’échecs classique.
OpenAI n’a rien fait d’autre que des agents conversationnels.