Bon donc on se comprend au moins sur le sparse. Pourrais-tu STP expliciter ton critère pour "à peu près diagonale" ainsi que les obstacles que tu perçois comme associés à l'absence de cette caractéristique?
Que les interconnexions entre les noeuds de calcul doivent etre le plus court possibles (donc la plupart des éléments qui communique avec un noeud de calcul doivent etre à proximité). Sinon ça fait de la distance, des switch, et donc de la saturation. Or, si on prend un problème 2D, sur un calculateur cablé en 2D, alors ça sera optimal puisque les plus proches voisins sont "physiquement" ceux que l'on a. Quand on passe au 3D (ou bien à des problèmes où les communications sont globales, type équation de Poisson), alors la disposition des noeud devient critique. Dans ces cas là (simulation de 3D avec communications aux voisins), la topologie de branchement des noeuds devient cruciale lorsqu'on souhaite de vraies grosses puissances de calcul.
Donc, plus la matrice de connexion est "diagonale" (en tous cas les coefficients pas trop loin de la diagonale), moins les distances entre noeuds sont grandes. Et ça, si on a une topologie 3D (donc une matrice NxNxN), alors les coefficients seront plus proches de la diagonale que si on prend des connexion 3D que l'on projete sur une topologie 2D (i.e. avoir une matrice de connexion en NxN).
\o\ \o\ Dunning-Kruger encore vainqueur ! /o/ /o/
Concrêtement, quel est l'aspect quantitatif qui te convaincrait qu'un système est suffisament proche de 2D pour être facile ou suffisament proche de 3D pour être difficile?
En HPC la question est délicate. En gros moins les noeuds sont éloignés les uns des autres sur des communications critiques (synchronisées, ou avec barrières, ou réduction globales, par exemple), plus ça ira vite. Et des saturations de bande passante, ça apparaîtra d'autant plus vite qu'il y a un grand nombre de noeuds et qu'ils sont éloignés (et que la quantité de donnée est élevée, évidement). Quantitativement, ça dépend de quasiment tous les paramètres hardware et algorithmiques de ce que l'on veut faire.
Alors après si la topologie de branchement des noeuds est en hyper-tore (ça s'est fait), alors on optimise la distance pour des configurations 3D. Mais à ma connaissance peu de supercalculateurs ont une telle architecture (si je ne dis pas de betise, les seuls que je connais sont le GENCI à Montpellier). Si on les relie en 3D, alors on restreint la manière dont les calculs sont distribués.
\o\ \o\ Dunning-Kruger encore vainqueur ! /o/ /o/
Pourrais-tu formuler une relation quantitative quelquonque, que ce soit une borne supérieure ou en borne inférieure ou les deux? Par ailleurs qu'est-ce que tu qualifierais de "communication critique", spécifiquement dans un réseau de neurone artificiel comportant 50% de dropout toutes les deux trois couches?
PS: pour des infos sur la connectivité des cerveaux biologiques voir ici. En bref on a presque la moitié des synapses qui connectent des neurones à leur plus proche ou second plus proche neurone, et le nombre de connection varie de façon inversement proportionnelle à la distance, avec disons 90% de connection locales aux quelques mm, 9% locales à quelques cm, et 1% de connections réellement longues distances.
Dernière modification par Jiav ; 15/03/2018 à 00h01.
Non, trop de paramètres, trop spécifique au matos.
Communication bloquante si vous préférez.
1% sur de longues distance, ça fait une matrice de connectivité avec des termes très loin de la diagonale, et ce sont bien ceux là qui vont être embêtant.PS: pour des infos sur la connectivité des cerveaux biologiques voir ici. En bref on a presque la moitié des synapses qui connectent des neurones à leur plus proche ou second plus proche neurone, et le nombre de connection varie de façon inversement proportionnelle à la distance, avec disons 90% de connection locales aux quelques mm, 9% locales à quelques cm, et 1% de connections réellement longues distances.
\o\ \o\ Dunning-Kruger encore vainqueur ! /o/ /o/
Alors fixons les paramètres et le matos, disons dans le cas d'un resnet et d'une carte GPU NVIDIA-like. Pour mémoire un resnet comporte m blocs identiques recevant chacun les entrées plus le résultats du bloc précédent. Dans une version récente chaque bloc comporte 2 séries de trois couches 2D (chacune de taille n*n) alternant batch normalisation, relu et convolution. Quels obstacles vois-tu, avec des GPU NVIDIA-like, pour faire tourner un resnet de taille (m, n)?
Qu'est-ce que tu qualifierais de "communication bloquante", spécifiquement dans un réseau de neurone artificiel comportant 50% de dropout toutes les deux trois couches?
Dernière modification par Jiav ; 15/03/2018 à 14h11.
PS: bien entendu on sait déjà le faire pour un certain m,n. La question est de savoir si tu vois (et peux expliquer) un obstacle au scaling de m,n dans ce cas de figure?
Je crois que l'on ne parle pas tout à fait de la meme chose. Je parlais d'un cluster constitué de N noeuds (allez, bi-Xeon chacun à la limite), avec un bon gros infiniband entre eux (et donc les switch 40Gb/s qui vont avec, et qui du coup peuvent etre rapidement saturés si les comm sont anarchiques et/ou distantes entre les noeuds).Alors fixons les paramètres et le matos, disons dans le cas d'un resnet et d'une carte GPU NVIDIA-like. Pour mémoire un resnet comporte m blocs identiques recevant chacun les entrées plus le résultats du bloc précédent. Dans une version récente chaque bloc comporte 2 séries de trois couches 2D (chacune de taille n*n) alternant batch normalisation, relu et convolution. Quels obstacles vois-tu, avec des GPU NVIDIA-like, pour faire tourner un resnet de taille (m, n)?
Recherche d'un max dans tout le domaine, par exemple.
Dernière modification par obi76 ; 15/03/2018 à 15h17.
\o\ \o\ Dunning-Kruger encore vainqueur ! /o/ /o/
Quel est le rapport avec l'IA?Je crois que l'on ne parle pas tout à fait de la meme chose. Je parlais d'un cluster constitué de N noeuds (allez, bi-Xeon chacun à la limite), avec un bon gros infiniband entre eux (et donc les switch 40Gb/s qui vont avec, et qui du coup peuvent etre rapidement saturés si les comm sont anarchiques et/ou distantes entre les noeuds).
Ok merci, mais... même question.
Pour faire du multiagent massif, il faut beaucoup de coeurs, les CG en sont une architecture, tout comme un cluster de calcul, c'est tout.
Ben s'il y a une communication bloquante, elle se cale sur la transmission la plus lente, c'est tout.
\o\ \o\ Dunning-Kruger encore vainqueur ! /o/ /o/
Bon, si je résume tu vois un problème de scaling en HPC pour du multiagent massif comportant des communications critiques/bloquantes, ce qui correspond à la modélisation de plusieurs problèmes physiques mais à aucun modèle d'IA actuel. Bon résumé?
\o\ \o\ Dunning-Kruger encore vainqueur ! /o/ /o/
C'est justement parce que j'en ai encore vu passer il y a peu que je parlais de ça. Après c'est sur que si on parle d'autres modèles, leur implémentation peut ne pas poser ce genre de soucis, là je ne me suis pas penché sur le sujet.
\o\ \o\ Dunning-Kruger encore vainqueur ! /o/ /o/