
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.