Matériel utilisé dans AlphaZero vs Stockfish match


23

Je comprends qu'AlphaZero doit utiliser un type de matériel différent de celui de Stockfish ordinaire. Je m'attendrais à ce que le matériel ait un grand effet sur la force du moteur. C'est pourquoi je me demande si des tentatives ont été faites pour fournir du matériel comparable aux deux. Que signifierait également «comparable» ici?

Plus précisément, j'ai lu que les gens se plaignent:

  • Stockfish ne disposant que de 1 Go de cache, et
  • la limite de temps de 1 min / mouvement (Comment cela désavantagerait-il Stockfish?)

Taille de hachage , pas de cache, apparemment.
Federico Poloni

2
Je suggère fortement de poser cette question sur un forum technique (comme AI Stack Exchange , peut-être intitulé "Équité de l'évaluation dans les matchs AlphaZero vs Stockfish"), car les réponses ici ne sont pas bonnes.
Veedrac

Réponses:


20

C'est pourquoi je me demande si des tentatives ont été faites pour fournir du matériel comparable aux deux.

C'est Google dont vous parlez! La réponse est donc évidemment «non».

Du matériel papier d'origine utilisé pour l'initialisation et la formation -

La formation s'est déroulée sur 700 000 étapes (mini-lots de taille 4 096) à partir de paramètres initialisés de manière aléatoire, en utilisant 5 000 TPU de première génération (15) pour générer des jeux en self-play et 64 TPU de deuxième génération pour former les réseaux de neurones

et le matériel utilisé pour les jeux -

AlphaZero et le précédent AlphaGo Zero utilisaient une seule machine avec 4 TPU Stockfish et Elmo jouaient à leur plus haut niveau de compétence en utilisant 64 threads et une taille de hachage de 1 Go.

Ainsi, AlphaZero a utilisé du matériel spécial développé par Google. Il a utilisé des unités de processeur de tenseurs (TPU) spécialisées plutôt que des unités centrales de traitement (CPU) générales comme celles disponibles dans le commerce.

C'est ainsi que Wikipedia décrit les TPU de deuxième génération qu'ils ont utilisés -

Le TPU de deuxième génération a été annoncé en mai 2017. Google a déclaré que la conception de TPU de première génération était limitée à la bande passante mémoire, et l'utilisation de 16 Go de mémoire à bande passante élevée dans la conception de deuxième génération a augmenté la bande passante à 600 Go / s et les performances à 45 TFLOPS. Les TPU sont ensuite organisés en modules TFLOPS 180 à 4 puces

Ils ont utilisé 4 TPU pour les jeux, donc une puissance de traitement de 180 TFLOPS. Remarque TFLOPS = 1000 milliards d'opérations en virgule flottante par seconde.

A titre de comparaison, la dernière puce la plus puissante d'Intel est le processeur Core i9 Extreme Edition qui se connecte à 1 TFLOP. Un I7 haut de gamme que vous trouverez dans une machine de jeu serait généralement d'environ 100 GFLOP (soit un dixième d'un TFLOP).

Je pense qu'il est juste de dire que AlphaZero utilisait un gorille de 800 livres d'une configuration matérielle par rapport à la souris Stockfishes.


1
FLOPS signifie opérations à virgule flottante par seconde. L'arithmétique en virgule flottante n'est probablement pas du tout utilisée dans les algorithmes de base de Stockfish et AlphaZero. Le nombre de FLOPS n'est donc pas vraiment une mesure significative de la vitesse du processeur pertinente pour le moteur d'échecs.
René Pijl

9
Au contraire, je crois que les réseaux de neurones utilisent l'arithmétique à virgule flottante de manière assez intensive. (Mais bien sûr, votre remarque est parfaitement logique et s'applique à Stockfish.)
Federico Poloni

3
Une comparaison beaucoup plus appropriée serait avec un GPU; le NVIDIA Tesla V100 peut faire 120 TFLOPS, en hausse par rapport à la génération précédente (P100) qui n'en faisait qu'environ 20. Les processeurs sont optimisés très différemment des GPU qui font de gros volumes de nombres.
Nick T

12

Je pense qu'il est préférable que j'élabore sur votre deuxième point avec un exemple de mouvement dans le jeu 1 entre AlphaZero et Stockfish qui a également servi à satisfaire ma curiosité aujourd'hui.

la limite de temps de 1 min / mouvement (Comment cela désavantagerait-il Stockfish?)

Les performances de Stockfish dépendent à la fois de la limite de temps et de la configuration matérielle, alors pensez à quelqu'un qui double les threads du processeur, alors Stockfish a besoin de moins de temps (pas nécessairement la moitié) pour trouver la solution qu'il ne le ferait avec la première configuration.

Dans le premier rapport publié sur Chess.com, quelqu'un a affirmé que Stockfish ne jouait pas de manière optimale car il ne pouvait pas reproduire les mêmes résultats en utilisant le même Stockfish sur son ordinateur. Il a dit que sur la position ci-dessous (match 1 - coup 11) Stockfish a joué Kg1-h1 (a déplacé son roi), ce qui n'avait aucun sens. En revanche, le stockfish sur son ordinateur a montré un mouvement plus évolutif comme Be3 (déplacer l'évêque carré noir), permet de regarder la position:

Match 1 en mouvement 11

Oui, c'était un mouvement passif et il semble que Stockfish aurait dû jouer un mouvement plus développé. Mais il avait tort. Pourquoi? Parce qu'il a couru Stockfish pendant 15 secondes, et s'il l'avait couru pendant une heure, il aurait obtenu Kg1-h1 comme le meilleur mouvement dans cette position. Stockfish change de décision en analysant plus en profondeur tous les mouvements possibles. Voici ce que j'ai initialement dit dans ma réponse :

J'ai dirigé le dernier stockfish sur la position (au coup 11):

  • Au début, il donne le b4 comme mouvement optimal lorsque le moteur tourne pendant environ une minute. Après cela, il décide que Be3 est meilleur.
  • Mais après 5 minutes sur mon matériel qui fonctionne sur 1400 nœuds / s, il décidera de choisir Kh1 comme le mouvement optimal.

  • Dans le document, il est dit que stockfish calcule 70 000 k positions par seconde et est exécuté pendant 1 minute par mouvement, c'est environ 50 fois mon matériel, donc je vais laisser le mien fonctionner pendant 50 minutes ... Kg1-h1 est toujours le choix pour Stockfish.

La limite de temps est la clé

Dans le cas ci-dessus, cela n'avait probablement pas beaucoup d'importance si Stockfish courait deux fois plus longtemps parce que la décision aurait été la même, mais au prochain coup, cela aurait certainement :

entrez la description de l'image ici

Dans cette position, Stockfish a choisi de déplacer le pion sur le côté gauche ( a4-a5 ). Disons que j'ai un ordinateur qui exécute le moteur Stockfish à une vitesse de 1400 nœuds par seconde, soit environ 50 fois plus bas que le Stockfish dans le jeu réel ( dans le document , il est écrit 70 000kn / s). Je peux donc simuler le jeu si je l'exécute pendant 50 minutes à chaque coup. D'accord.

J'ai effectué une analyse Stockfish sur la position ci-dessus et j'ai obtenu les résultats suivants:

  • Stockfish a commencé à suggérer quelques mouvements, mais après 6 minutes sur mon ordinateur (ce qui correspond à 7,2 secondes sur Stockfish dans le vrai jeu), il a préféré a4-a5 au fur et à mesure du jeu .

C'est bien, mais je l'ai fait fonctionner pendant 50 minutes complètes afin d'atteindre les calculs du Stockfish dans le jeu qui était autorisé à 1 minute:

La triste vérité est que je crois que Stockfish a perdu tous ses jeux à cause du délai. Stockfish obtient une recherche et une évaluation plus approfondies au fil du temps et dans le jeu, il n'était pas autorisé à utiliser un livre d'ouverture, ce qui lui permet de considérer de nombreux mouvements dans des profondeurs peu profondes. Notez que dans le jeu réel a4-a5 a été joué, ce qui montre que (en supposant qu'il puisse évaluer 70 millions de positions par seconde) le Stockfish dans le jeu n'a pas passé plus de 21,6 secondes en mouvement. Sinon, il aurait changé sa décision pour ces trois autres mouvements dans le jeu réel. La raison de cela n'est toujours pas claire pour moi car mon Stockfish consomme également moins de mémoire (environ ~ 130 Mo de RAM par rapport aux 1 Go mentionnés dans le document d'origine , en supposant que tout cela va aux tables de hachage).


Conclusion

Le matériel qui exécutait Stockfish, comme je l'ai souligné, était au mieux 18 fois plus rapide que le mien (mise à jour: sur un seul cœur) en fonction du mouvement que j'ai analysé. Je ne sais pas si AlphaZero pourrait vraiment utiliser un tel matériel pour entraîner ses réseaux en 4 heures, je ne peux que supposer qu'il est trop bas pour un jeu comme les échecs. En outre, AlphaZero a passé ces heures à apprendre, ce qui comprend également la construction d'ouvertures solides (et comme le souligne le document, les préférences par rapport à certaines ouvertures). En revanche, Stockfish était handicapé sur les ouvertures, et il n'a pas évalué 70 millions de positions par seconde pendant 60 secondes à chaque mouvement.

Pour terminer, tout ce que j'ai dit était basé sur mes hypothèses. Bien sûr, le résultat d'AlphaZero et des jeux était super intéressant pour moi. Cependant, j'aurais adoré voir un jeu où le jeu Stockfish était comme ce que j'obtiens sur mon ordinateur aussi. Autrement dit, plus de temps et un livre d'ouverture autorisés. Il est également facile d'obtenir les résultats de l'analyse Stockfish à chaque mouvement, et je souhaite qu'ils la libèrent afin de montrer à quel point elle a fonctionné.


1
En ce qui concerne la limite de temps, la figure 2 du document AlphaZero montre le contraire: Stockfish est meilleur avec un budget inférieur, mais évolue moins bien, quand plus de puissance est disponible. arxiv.org/pdf/1712.01815.pdf
old-ufo

1
@ old-ufo Merci d'avoir signalé cela. Comme je l'ai dit, les performances de Stockfish (et AlphaZero) dépendent du matériel ainsi que de la limite de temps. Par exemple, si nous donnions plus de matériel à Stockfish (et moins AlphaZero) et régénérons ce chiffre, sa ligne pourrait être transformée de sorte qu'elle reste toujours au-dessus de la ligne AlphaZero. Je suppose donc que c'est un bon point pour comparer le matériel des deux systèmes, ce qui répond également à la question principale.
ReZzT

4

L'un des auteurs originaux de Stockfish répond aux plaintes spécifiques que vous avez mentionnées ici:

Pendant ce temps, Chess.com a également reçu un long commentaire de l'un des auteurs originaux de Stockfish, Tord Romstad, que nous donnerons dans son intégralité:

Les résultats du match en eux-mêmes ne sont pas particulièrement significatifs en raison du choix assez étrange des commandes de temps et des réglages des paramètres de Stockfish: les jeux ont été joués à un temps fixe de 1 minute / mouvement, ce qui signifie que Stockfish n'a aucune utilisation de son heuristique de gestion du temps ( beaucoup d'efforts ont été faits pour que Stockfish identifie les points critiques du jeu et décide quand passer un peu de temps supplémentaire lors d'un coup; à un moment fixe par coup, la force en souffrira considérablement). La version de Stockfish utilisée a un an, jouait avec beaucoup plus de threads de recherche que jamais auparavant, et avait des tables de hachage beaucoup trop petites pour le nombre de threads. Je pense que le pourcentage de tirages aurait été beaucoup plus élevé dans un match avec des conditions plus normales.

D'un autre côté, il ne fait aucun doute qu'AlphaZero aurait pu mieux jouer si plus de travail avait été mis dans le projet (bien que les "4 heures d'apprentissage" mentionnées dans le document soient très trompeuses si l'on prend en compte les ressources matérielles massives utilisées pendant ces 4 heures). Mais dans tous les cas, Stockfish vs AlphaZero est vraiment une comparaison des pommes et des orangs-outans. L'un est un programme d'échecs conventionnel fonctionnant sur des ordinateurs ordinaires, l'autre utilise des techniques fondamentalement différentes et s'exécute sur du matériel conçu sur mesure qui n'est pas disponible à l'achat (et serait ainsi largement hors du budget des utilisateurs ordinaires s'il l'était).

D'un autre point de vue, l'angle pommes vs orangs-outans est la chose la plus excitante à ce sujet: nous avons maintenant deux entités créées par l'homme extrêmement différentes (tant du côté matériel que logiciel) qui affichent toutes deux des capacités de jeu d'échecs surhumaines. C'est beaucoup plus intéressant qu'un autre programme d'échecs qui fait la même chose que les programmes d'échecs existants, juste un peu mieux. En outre, l'adaptabilité de l'approche AlphaZero à de nouveaux domaines ouvre des possibilités intéressantes pour l'avenir.

Pour les joueurs d'échecs utilisant des programmes d'échecs informatiques comme outil, cette percée ne devrait pas avoir un grand impact, au moins à court terme, en raison du manque de matériel adapté à des prix abordables.

Pour les programmeurs de moteurs d'échecs - et pour les programmeurs de nombreux autres domaines intéressants - l'émergence de techniques d'apprentissage automatique qui nécessitent des ressources matérielles massives pour être efficaces est un peu décourageante. Dans quelques années, il est tout à fait possible qu'un programme d'échecs similaire à AlphaZero puisse être exécuté sur des ordinateurs ordinaires, mais les ressources matérielles nécessaires pour les créer seront toujours bien au-delà du budget des amateurs ou des entreprises de taille moyenne. Il est possible qu'un projet open source avec un grand réseau distribué d'ordinateurs géré par des bénévoles puisse fonctionner, mais le temps de centaines de moteurs d'échecs uniques, chacun avec ses propres bizarreries et personnalités, sera révolu.

Source: https://www.chess.com/news/view/alphazero-reactions-from-top-gms-stockfish-author


2

L'exécution sur un matériel comparable serait nécessaire si l'objectif final de Google était de créer un moteur d'échecs supérieur, mais cet exercice ne concernait pas vraiment les échecs. Les échecs sont juste un moyen pratique de démontrer la capacité de l'IA à apprendre des tâches compliquées à partir de zéro. S'il peut bien fonctionner contre une configuration vaguement raisonnable de Stockfish, il est coché la case.

Je prédis que l'équipe Google ne consacrera pas beaucoup plus d'efforts aux échecs; au lieu de cela, ils passeront à d'autres problèmes que l'IA n'a jamais pu résoudre.


J'ai donné +1 parce que j'ai le même sentiment.
SmallChess

Cela semble probable, même si je doute qu'ils l'auraient publié, si Alphazero n'avait perdu que par une petite marge (ce qui signifie qu'il serait toujours d'une force comparable à celle du stockfish).
user1583209

@ user1583209 Ils l'ont probablement exécuté plusieurs fois pour déterminer le temps d'apprentissage minimum nécessaire pour écraser Stockfish. Ils ont ensuite effectué une dernière analyse et publié ces résultats.
T Scherer

1

Visitez le forum Talkchess pour en savoir plus, c'est là que vous trouverez quelque 3000 programmeurs. Ce n'était qu'une arnaque. Alpha a joué sur un matériel 30 fois plus grand que SF, 4TPU vs 64 cœurs. 4TPU, c'est environ 1000 cœurs ou même plus. Alpha avait simulé le livre d'ouverture, formé sur d'innombrables jeux gagnants GM. SF avait très peu de hachage. TC a été fixé à 1 minute par mouvement, ce qui est à nouveau préjudiciable à SF, qui dispose d'une gestion du temps avancée. Les TPU n'ont pas les inefficacités SMP avec plus de cœurs, donc l'avantage matériel était encore plus grand. Etc, etc., donc en gros, ce n'était qu'un énorme coup de publicité de la part de Google. Actuellement, Alpha est autour de 2800 sur un seul cœur, donc 400 élos en dessous de SF, et ne progressera pas beaucoup à l'avenir, car, à partir de maintenant, il aura besoin d'une évaluation avancée qu'il ne pourra pas découvrir. Concernant le problème des 4 heures, eh bien, LOL, c'était il y a 48 heures, alors maintenant Alpha est à 5000 elo? Allons.


5
Vous semblez croire qu'AlphaZero fait la même chose que Stockfish, seulement 1000 fois plus vite car il utilise un matériel 1000 fois plus puissant. Ce n'est pas vrai du tout. Il utilise une approche très différente et cette approche est très gourmande en ressources. En fait, pendant le match, AlphaZero évaluait 80 000 positions par seconde tandis que Stockfish affichait 70 millions de positions par seconde. Maintenant, dites-moi que AlphaZero a gagné grâce à un matériel plus solide. Bien sûr, sur 64 CPU, ce serait plus lent et qui sait comment cela jouerait, mais le fait est qu'AlphaZero le fait mieux, bien qu'à un coût plus élevé.
IA Petr Harasimovic

3
Le matériel SF coûte moins de 10 000 $, Alpha un plus de 250 000 $. Tirez vous-même les conclusions. Les Nps n'ont aucun sens, et chaque programmeur d'échecs le sait. Vous pouvez faire toutes sortes de tours pour que les nps diminuent, mais cela ne signifie pas que vous jouerez plus fort. J'aimerais le voir implémenter cette approche sur le matériel SF et SF son sur le matériel Alpha. Devinez le résultat? +85 -0 = 15 pour SF. S'ils sont si géniaux, laissez-les publier leur code.
Lyudmil Tsvetkov

3
"Alpha avait simulé le livre d'ouverture, formé sur d'innombrables jeux gagnants GM." Livre d'ouverture simulé, oui, mais il s'est entraîné sur les jeux GM? Avez-vous une source pour cela? Ma compréhension était qu'Alpha était entièrement bootstrapé.
Akavall

0

Stockfish est limité aux processeurs, il ne pourra donc jamais évoluer au niveau auquel les GPU sont capables.

Les GPU de calcul de la matrice Gor évoluent avec le n, tandis que les processeurs évoluent avec n 3 , ces cœurs de tenseurs sont encore optimisés, ce qui améliore probablement les performances à mesure que vous évoluez.


-2

Premier paragraphe plus détaillé, deuxième réponse courte et simple troisième paragraphe mes opinions sur la situation

Avec AlphaZero, le matériel n'a aucun effet sur la force de son jeu. Cela peut prendre plus de temps, mais pas parce qu'il réfléchit. C'est un réseau de neurones, ce qui signifie que vous lui fournissez des informations dans un vecteur (un tableau à une seule colonne), il fait des calculs simples à travers un tenseur géant (un tableau à 3 dimensions ou plus) puis il crache la réponse. Le stockfish a besoin de temps pour être bon car il vérifie les positions possibles pour voir si un mouvement est bénéfique, donc plus il étudie le problème plus il peut vérifier la position / les mouvements.

Il n'y a pas vraiment de configuration matérielle comparable. Parce qu'ils ont des besoins différents, Stockfish doit analyser plus de positions tandis qu'AlphaZero a juste besoin de bouger. Et les gens sont contrariés parce que l'ordinateur d'AlphaZero est techniquement beaucoup plus puissant et ils pensent qu'ils devraient être égaux à cet égard. Mais, AlphaZero n'a pas besoin de ce superordinateur après l'entraînement.

À mon avis, peu importe ce qu'ils donnent à chaque camp, à moins que Stockfish ne dispose d'un temps déraisonnable, il y aura probablement encore quelques matchs, mais en général, un effet similaire se produira. C'est pourquoi je pense que cela, Stockfish évalue d'abord avec des pièces et leurs valeurs tandis qu'Alpha a joué (probablement) des millions de jeux pour réaliser ce qui est important stratégiquement. C'est pourquoi les sacs Alpha sont beaucoup plus nombreux que Stockfish, mais bénéficient d'énormes avantages positionnels.


C'est juste faux. AlphaZero effectue une recherche dans les arbres. Plus de matériel le rend plus fort. Et il a besoin d'une tonne de matériel pour mieux jouer que le stockfish.
BlindKungFuMaster

Rien dans ce post n'est correct ...
SmallChess

Ce système est basé sur 3 neuralnets et une recherche partielle d'arbres Monroe Carlo, donc vous avez raison à ce sujet en utilisant la recherche d'arbres. Pendant le jeu, il utilise 2 principes de réseau neuronal développés en alphago de valeur et de politique. Go est un jeu qui ne peut pas être fait via la puissance de calcul car il est astronomiquement plus complexe que les échecs. Donc, si je crois qu'il a besoin de plus de puissance de calcul qu'un algorithme de force brute, alors vous êtes délirant. Ou manquez informé. Le troisième réseau neuronal est utilisé pour essayer d'accélérer le processus d'apprentissage en devinant les changements de propagation arrière. La puissance d'Alphazeros est dans les filets et non dans les mcts.
Ezecal
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.