Suprématie de l'IA: Leela Chess. Ou comment un réseau de neurones entièrement ouvert a gagné

image

Honnêtement, je suis très déçu de Habr. Pourquoi personne n'a-t-il mis en avant une telle chose comme gagner une approche de réseau neuronal avec une source entièrement ouverte , hein? Et des données de réseau neuronal complètement ouvertes? En effet, eh bien, DeepMind Technologies a décrit comment ils ont enseigné une IA aux échecs en jouant avec elle-même ... Seulement maintenant, le code est fermé là-bas, et la formation a eu lieu sur des clusters Google, et non distribuée sur Nvidia Turing avec des noyaux de tenseur , comme dans ce cas. Pourquoi dois-je modifier le Wikipedia anglais moi-même pour attirer l'attention sur cela?

D'accord, je suis allé trop loin avec les émotions, je suppose. (Il y a toujours un lien dans les commentaires mentionnant leela.) Cet article est une expérience: un moyen de me montrer comment mon autre article , trop populaire, à mon avis, affectera cela.

L'histoire a commencé lorsque j'ai mis à niveau mon ancien Nvidia Geforce GTX 770 vers le RTX 2080 Ti. Et bien, vu combien ça coûte, je voulais le maximiser. Au début, j'ai joué avec Ray Tracing , j'ai lu comment cela fonctionne avec CUDA via NVIDIA OptiX . J'ai lu comment une personne a réussi à utiliser des cœurs RT à d'autres fins. Je l'ai répété. Mais le nombre de commentaires selon lesquels une veste en cuir a divorcé était si grand que j'étais fatigué de lire à ce sujet. Surtout si l'on considère que je sais que le traçage de chemin est l'algorithme le plus important de l'industrie du cinéma et des jeux, et ce n'est pas la découverte de Nvidia. Pas du tout. Même matériel.

J'ai alors décidé de me tourner vers NVENC . Je suis généralement un amateur de cadeaux. Il s'est avéré qu'il y en avait beaucoup dans cet encodeur matériel. Tout d'abord, l' article le plus populaire sur Habr à propos de NVENC explique comment YourChief , armé d'un débogueur, a réussi à dépasser la limite du nombre de flux d'encodage simultanés pour lui (et ma carte, comme il s'est avéré, peut être géniale ). De plus, le correctif, comme cela arrive généralement, ne change que quelques octets .

Ensuite, il s'est avéré que la technologie NvFBC (capture ultrarapide d'un cadre complet) peut également être activée sur la carte geforce, si vous utilisez un patch magique au-dessus du cadre Looking glass, avant d'activer cette technologie (le patch peut être vu ici ).

Ensuite, je voulais une couleur 30 bits dans Photoshop. Répétant le succès des autres, j'ai trouvé un octet qui limitait la prise en charge d'OpenGL en mode fenêtré (comme dans DirectX dans les modes fenêtré et plein écran et dans OpenGL en mode plein écran, la couleur 30 bits fonctionnait de cette façon). Et Nvidia a écrit à ce sujet, promettant de dévoiler le patch. C'est peut-être une coïncidence, mais ils ont supprimé cette restriction à la Gamescom 2019. Mais il existe toujours un support non officiel pour HDR10 + (métadonnées HDR dynamiques).

Donc, maintenant le temps est venu pour l'accélérateur matriciel, l'accélérateur neuronal, les noyaux tenseurs, appelez-le comme vous voulez. C'était un peu plus compliqué. Je dirai tout de suite que j'ai trop dormi une conférence sur le réseau neuronal à l'université, donc j'ai dû le comprendre. Mais après avoir regardé quelques vidéos où un homme engendre des milliers d'oiseaux pour passer par le Flappy Bird, et après quelques générations, ces oiseaux passent des obstacles comme des rouages ​​d'horlogerie, j'ai été inspiré par l'idée. La question était de savoir quoi lancer. Et puis je me suis souvenu que Google se vantait récemment d'avoir battu son meilleur joueur de Go avec son IA, ce qui était considéré comme impossible avant d'utiliser des algorithmes «normaux». Honnêtement, il aime le versioning complexe de Google DeepMind. Eh bien, c'est qui l'a inventé: AlphaGo Lee → AlphaGo Master → AlphaGo Zero → AlphaZero (ce dernier peut déjà être dans les échecs, et dans shogov, et dans go, et en général, car ils ont mis en place un long mécanisme pour expliquer les règles du jeu, il le poker peut être adapté). Je suis au courant du poker, si quoi que ce soit, ne l’écris pas, sinon je te connais.

Ma recherche Google «code source alphazero» n'a rien donné. Eh bien, c'est qu'il s'est avéré qu'ils ne pensaient pas à ouvrir le code! Mais je ne pouvais pas le croire. Eh bien, c'est-à-dire, Elon Musk signifie OpenAI (soi-disant pour que lorsque l'IA se développe, elle est plus étudiée, ou quelque chose, et est plus libre du droit d'auteur des auteurs). Et ici, sur reddit, je suis tombé sur un lien . Il s'est avéré que certaines personnes compatissantes de DeepMind ont quand même décidé de donner une partie du code source, en l'imprimant directement dans un fichier pdf. / facepalm

Eh bien, ici, j'ai immédiatement téléchargé et le réseau de neurones d'ici . Et après avoir joué avec elle, j'ai réalisé que pour une raison quelconque, il ne jouait pas aux échecs. Il m'a fallu environ 20 minutes pour comprendre qu'il joue, pas les échecs, et encore 40 minutes pour trouver une version pour les échecs. Et là, j'ai été surpris. Premièrement, ils ont déjà réussi à implémenter le backend cuda avec un support pour les noyaux tenseurs de Nvidia à la fois pour le jeu et pour la formation ( volontaire et distribué , en outre). Deuxièmement, à ce moment-là, ils ont eu un duel avec Stockfish pour la 1ère place du classement des échecs informatiques! Je n'ai pas dormi une demi-nuit en regardant la super finale TCEC et le réseau de neurones a gagné! J'ai immédiatement couru pour éditer Wikipédia, qui à l'époque n'avait que peu d'informations, et le lendemain, tout le monde en a parlé! Il s'est avéré que pendant le jeu, leela n'a utilisé qu'un tas de 2080 Ti et 2080, c'est-à-dire que ma carte était bien suffisante. Ayant téléchargé le réseau de neurones d'ici , je l'ai lancé assez calmement sur mon ordinateur! Eh bien, bien sûr, le réseau neuronal m'a brisé. Voici comment le configurer.

Personnellement, j'ai vraiment utilisé le shell de l'explorateur HIARCS Chess. De plus, j'ai également donné aux gens sur Android de tester leela dans DroidFish. Android utilise un réseau distillé, plus simple et plus petit, mais toujours pas faible.

En principe, je peux peindre les instructions d'installation plus en détail, ajouter des liens, écrire: =))
Au fait, une telle question, quelqu'un a-t-il entendu parler de l'utilisation non standard de NVENC et NVDEC? Il semble pouvoir être adapté pour accélérer les opérations mathématiques. J'en ai lu quelque part, mais il n'y avait aucun détail.

Source: https://habr.com/ru/post/fr468775/


All Articles