Deep Learning sur le MO5

Cette catégorie traite de développements récents destinés à nos vieilles machines, applications, jeux ou démos... Amis programmeurs, c'est ici que vous pourrez enfin devenir célèbres!

Modérateurs : Papy.G, fneck, Carl

Répondre
Rémi C.
Messages : 8
Inscription : 14 juin 2021 11:27

Deep Learning sur le MO5

Message par Rémi C. »

Bonjour,

Je suis le fils de Daniel qui est bien connu ici, et je travaille dans le domaine de l'intelligence artificielle. Ces derniers temps, je me suis amusé à faire fonctionner un réseau de neurones à convolutions pour jouer au Go sur le MO5. C'est le même algorithme qu'AlphaGo, pour ceux qui en auraient entendu parler.

J'ai écrit un article sur le sujet que je vais présenter au Game Programming Workshop au Japon dans deux semaines. Je ne peux pas le diffuser pour des raisons de copyright, mais il devrait être mis en ligne publiquement dans quelques temps sur cette page: https://ipsj.ixsq.nii.ac.jp/ej/index.ph ... block_id=8

J'ai aussi préparé un poster dont je n'ai pas cédé les droits, que je partage là: https://www.kayufu.com/files/crazy_ston ... poster.pdf
Je serais content d'en discuter si vous avez des questions.

En bref, le programme marche bien, joue un coup en 12 secondes environ sur un plateau 9x9, et peut battre un humain pas trop fort. Il a un niveau similaire à GNU Go, et est considérablement plus fort que tout ce qui existait à l'époque. L'apprentissage s'est fait sur un PC moderne.

Je ne peux pas diffuser le programme pour des raisons juridiques.

Je remercie les membres du forum que j'ai spammés avant mon départ pour leur généreuse offre d'aide. J'avais cassé mon SDDRIVE juste avant de partir, et j'ai pu en récupérer un in extremis. J'ai vu qu'une personne a laissé un message sur mon répondeur, mais j'étais déjà dans l'avion et je n'ai pas pu répondre, désolé. Merci beaucoup à cette personne et aux autres à qui j'ai répondu aussi.
gotcha
Messages : 2802
Inscription : 30 mars 2017 11:39
Localisation : Isère
Contact :

Re: Deep Learning sur le MO5

Message par gotcha »

Bonjour Remi,

C'est sympa de mixer techniques modernes avec ordinateurs anciens. Les réseaux neuronaux existaient déjà dans les années 80/90 (on a une machine dédiée du CEA à l'Aconit, la MIND-1024), mais sous une forme plus simple que les réseaux modernes à convolution qui eux consomment beaucoup de puissance de calcul.

Peux-tu en dire plus sur la complexité du modèle que tu infères sur le MO5 ? Pour l'apprentissage du réseau, tu as utilisé un dataset existant, ou tu as dû le créer ?

EDIT: en fait, il y a pas mal de réponses dans la présentation partagée.
Amstrad CPC et Goupil power :mrgreen:
Bénévole à l'association pour un conservatoire de l’informatique et de la télématique (https://www.aconit.org)
Rémi C.
Messages : 8
Inscription : 14 juin 2021 11:27

Re: Deep Learning sur le MO5

Message par Rémi C. »

C'est un réseau de convolutions 3x3, 8 canaux en entrée, 2 en sortie, 8 couches cachées de 8 canaux. Le nombre de poids est 3*3*8*(8*8 + 2) = 4752. J'ai un schéma de calcul à 26 cycles d'horloge par multiplication, ce qui fait 4752*9*9*26=10007712, soit 10 secondes pour les convolutions. Chaque convolution est compilée "just-in-time" avant d'être exécutée 81 fois. Il y a aussi des multiplications à chaque couche pour remettre les entrées de la couche suivante à l'échelle, et d'autres petits calculs additionnels, pour un total d'environ 12 secondes pour un calcul complet du réseau.

J'ai créé mes données moi-même avec une méthode de type Alpha Zero (le programme joue plein de parties contre lui-même avec une recherche arborescente) sur mon PC.
gotcha
Messages : 2802
Inscription : 30 mars 2017 11:39
Localisation : Isère
Contact :

Re: Deep Learning sur le MO5

Message par gotcha »

Tu compiles 'just-in-time' sur le MO5 ? Peux-tu développer ?

Pourquoi ne pas compiler 'offline' étant donné que la dimension de tous les tenseurs est connue statiquement ?
Est-ce pour économiser de la mémoire étant donné j'imagine que les boucles des convolutions sont 'unrollées' ?
Amstrad CPC et Goupil power :mrgreen:
Bénévole à l'association pour un conservatoire de l’informatique et de la télématique (https://www.aconit.org)
Rémi C.
Messages : 8
Inscription : 14 juin 2021 11:27

Re: Deep Learning sur le MO5

Message par Rémi C. »

C'est par manque de place. Au début, j'avais essayé de générer le code de tout le réseau (avec les constantes en dur), mais ça faisait plus de 30 kB. Du coup je stocke les 4752 poids, et c'est rentable de les copier une fois dans le code de la convolution avant de l'exécuter 81 fois.

Une autre solution, sans compilation just-in-time, serait de lire dynamiquement les valeurs des poids dans un tableau au moment où on en a besoin. Mais c'est beaucoup plus rapide de pré-compiler en mettant les constantes en dur. En particulier, le MUL du 6809 est non-signé, et les poids du réseau sont signés. Donc j'accumule dans X ou dans Y selon le signe du poids, puis je calcule X - Y tout à la fin. C'est beaucoup plus rapide de pré-compiler dans quel registre on fait l'accumulation plutôt que de faire le test du signe à chaque fois.

Il y a d'ailleurs beaucoup de possibilités d'optimisation que je n'exploite pas encore. En particulier, je pourrais éliminer les multiplications par zéro et par 1, utiliser des décalages, ou des ABX au lieu de LEAX D, X quand je sais que le produit tient sur 8 bits, etc.
Avatar de l’utilisateur
Carl
Modérateur
Messages : 13301
Inscription : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Re: Deep Learning sur le MO5

Message par Carl »

Bonjour Rémi et bienvenue sur le forum…
Sur l’autre fil de discussion, j’avais supposé que Daniel était au Japon…finalement, je n’étais pas très loin… :wink:
Carl
sporniket
Messages : 254
Inscription : 22 mars 2022 20:23
Localisation : Pas trop loin au sud de Paris

Re: Deep Learning sur le MO5

Message par sporniket »

Chouette, un peu de lecture pour plus tard, merci.
Rémi C. a écrit : 06 nov. 2023 11:10 C'est par manque de place. Au début, j'avais essayé de générer le code de tout le réseau (avec les constantes en dur), mais ça faisait plus de 30 kB. Du coup je stocke les 4752 poids, et c'est rentable de les copier une fois dans le code de la convolution avant de l'exécuter 81 fois.
La prochaine étape, c'est exploiter les nouvelles extensions de mémoire, et n'oublions pas l'IA collective avec le nanoréseau :) (bon par contre à transporter au japon, ça serait un peu plus la galère...)
Rémi C.
Messages : 8
Inscription : 14 juin 2021 11:27

Re: Deep Learning sur le MO5

Message par Rémi C. »

Carl a écrit : 06 nov. 2023 19:48 Sur l’autre fil de discussion, j’avais supposé que Daniel était au Japon…finalement, je n’étais pas très loin… :wink:
Je n'avais pas vu l'autre fil. Désolé pour le doublon. Je mets le lien ici: viewtopic.php?f=17&t=14873&p=238566&hilit=Japon#p238566
Daniel
Messages : 17426
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Deep Learning sur le MO5

Message par Daniel »

Une autre piste d'optimisation est le remplacement du processeur 6809 par un 6309. En mode natif les instructions ont presque toutes un cycle de moins, mais surtout il y a plus de registres et de nouvelles instructions qui peuvent faire gagner du temps.

Dans beaucoup de MO5 le processeur est sur support, il n'est pas difficile de le changer. Pour les autres c'est plus compliqué, il faut dessouder.
Daniel
L'obstacle augmente mon ardeur.
Bentoc
Messages : 179
Inscription : 14 sept. 2019 13:35
Localisation : Var - France

Re: Deep Learning sur le MO5

Message par Bentoc »

Merci pour toutes ces informations, le sujet est très intéressant.
ça fait plaisir de croiser d'autres personnes qui développent pour le 6809.
Rémi C.
Messages : 8
Inscription : 14 juin 2021 11:27

Re: Deep Learning sur le MO5

Message par Rémi C. »

L'article est maintenant en ligne sur le site de l'IPSJ:

https://ipsj.ixsq.nii.ac.jp/ej/?action= ... block_id=8
__sam__
Messages : 7989
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Deep Learning sur le MO5

Message par __sam__ »

Intéressant ! 8) Je mets ici le lien direct sur le PDF car la page est en Japonais et qu'il n'est pas facile de trouver le bon lien en clickant au hasard. ;)
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Répondre