FR3045893A1 - Circuit electronique, notamment apte a l'implementation de reseaux de neurones a plusieurs niveaux de precision. - Google Patents

Circuit electronique, notamment apte a l'implementation de reseaux de neurones a plusieurs niveaux de precision. Download PDF

Info

Publication number
FR3045893A1
FR3045893A1 FR1562912A FR1562912A FR3045893A1 FR 3045893 A1 FR3045893 A1 FR 3045893A1 FR 1562912 A FR1562912 A FR 1562912A FR 1562912 A FR1562912 A FR 1562912A FR 3045893 A1 FR3045893 A1 FR 3045893A1
Authority
FR
France
Prior art keywords
subwords
electronic circuit
processors
word
columns
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR1562912A
Other languages
English (en)
Other versions
FR3045893B1 (fr
Inventor
Jean-Marc Philippe
Alexandre Carbon
Marc Duranton
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Commissariat a lEnergie Atomique et aux Energies Alternatives CEA
Original Assignee
Commissariat a lEnergie Atomique CEA
Commissariat a lEnergie Atomique et aux Energies Alternatives CEA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Commissariat a lEnergie Atomique CEA, Commissariat a lEnergie Atomique et aux Energies Alternatives CEA filed Critical Commissariat a lEnergie Atomique CEA
Priority to FR1562912A priority Critical patent/FR3045893B1/fr
Priority to US15/781,680 priority patent/US11308388B2/en
Priority to EP16809743.4A priority patent/EP3394799A1/fr
Priority to PCT/EP2016/079998 priority patent/WO2017108398A1/fr
Publication of FR3045893A1 publication Critical patent/FR3045893A1/fr
Application granted granted Critical
Publication of FR3045893B1 publication Critical patent/FR3045893B1/fr
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/061Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using biological neurons, e.g. biological neurons connected to an integrated circuit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Theoretical Computer Science (AREA)
  • Molecular Biology (AREA)
  • Evolutionary Computation (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Logic Circuits (AREA)
  • Image Processing (AREA)
  • Multi Processors (AREA)

Abstract

Le circuit comporte au moins : - Une série de blocs de calcul aptes à implémenter chacun un ensemble de neurones ; - Un bloc (6) de transformation relié auxdits blocs de calcul par un moyen de communication et apte à être relié en entrée dudit circuit à un bus de données externe (7), ledit bloc de transformation (6) effectuant la transformation du format des données d'entrée et transmettant lesdites données auxdits blocs de calcul au moyen de K canaux de communications indépendants (21, 22, 23, 24), un mot de donnée d'entrée (M1) étant découpé en sous-mots de sorte que lesdits sous-mots sont transmis sur plusieurs cycles de communication successifs, un sous-mot étant transmis par cycle de communication sur un canal de communication (21) dédié audit mot(M1) de sorte que lesdits N canaux sont aptes à transmettre parallèlement K mots (M1, M2, M3, M4).

Description

CIRCUIT ELECTRONIQUE, NOTAMMENT APTE A L’IMPLEMENTATION DE RESEAUX DE NEURONES A PLUSIEURS NIVEAUX DE PRECISION.
La présente invention concerne un circuit électronique, notamment apte à l’implémentation de réseaux de neurones sur silicium pour le traitement de signaux divers, y compris des signaux multidimensionnels comme des images.
Les réseaux de neurones sont utilisés dans de nombreuses applications, notamment dans les dispositifs, systèmes ou procédés faisant appel à des approches ou des mécanismes d’apprentissage servant à définir la fonction à réaliser.
Les architectures matérielles de systèmes neuronaux comportent en général des modules élémentaires aptes à implémenter un ensemble de neurones. Un neurone d’ordre i dans un système neuronal réalise une fonction du type : ^=/<Σ*Ά> <1) j wtj et Ej étant respectivement les poids synaptiques associés au neurone et ses entrées, / étant une fonction dite d’activation.
Les circuits intégrés liés à l’implémentation de réseaux de neurones étaient au début essentiellement de type ASIC (Application-Specific Integrated Circuit). Puis des architectures sur FPGA (Field Programmable Gâte Array) ont vu le jour. En première approche, on peut classer les architectures neuronales selon deux axes. Le premier axe concerne leur implémentation, celle-ci pouvant être numérique ou analogique, voire hybride. Le second axe concerne leur degré de spécialisation vis-à-vis des réseaux de neurones implémentables, les architectures pouvant être spécialisées dans l’implémentation de quelques types de réseaux de neurones bien définis, par exemple un réseau RBF (Radial-Basis Function) ou une carte de Kohonen, ou pouvant être programmables pour implémenter une plus grande variété de réseaux.
Les architectures visées par la présente invention sont liées à des circuits à implémentation numérique, ces circuits étant génériques ou spécialisés.
Un problème technique à résoudre est notamment de permettre la réalisation efficace sur silicium d’une chaîne complète de traitement du signal, au sens générique, par l’approche de réseaux de neurones et cela avec plusieurs niveaux de précision dans le codage des données manipulées au cours du traitement. Cette problématique se décline en plusieurs problèmes.
Les chaînes de traitement de signal de ce type incluent en général des traitements du signal plus classiques, par exemple des convolutions sur un signal ou une image, en pré ou post-traitement. Les systèmes classiques utilisent des processeurs spécialisés pour effectuer ce type de traitement en plus de l’architecture neuronale proprement dite, aboutissant à un système plus complexe et plus volumineux, consommant plus d’énergie.
Le type de réseau de neurones utilisé dépend très fortement de l’application, voire du jeu de données en entrée. En règle générale, les circuits utilisés pour implémenter des réseaux de neurones sont spécialisés pour quelques types de réseaux. Il y aurait donc un avantage certain à pouvoir implémenter efficacement plusieurs types de réseau sur un même circuit afin d’élargir son domaine applicatif.
En liaison avec le point précédent, un autre paramètre d’implantation pouvant varier est la taille du réseau, en particulier en ce qui concerne le nombre d’entrées et le nombre de neurones. Certains circuits utilisés pour le traitement neuronal ne sont pas extensibles, ce qui ne permet pas l’implémentation de réseaux de neurones dont la taille dépasse leur capacité matérielle. L’invention combine des mécanismes permettant d’obtenir cette extensibilité, à la fois en cascade, ou extension unidirectionnelle, et en diffusion (« broadcast >>) ou extension multidirectionnelle. Cette extensibilité est aussi étendue par des mécanismes de virtualisation des poids ou des coefficients.
Enfin, les domaines applicatifs des réseaux de neurones étant très variés, la dynamique nécessaire au codage des poids et des entrées d’un réseau de neurones est très variable. De plus, pour une même application et un même réseau, la dynamique nécessaire au codage des poids peut varier en fonction de la phase dans laquelle on se trouve dans le cas d’un apprentissage en ligne. Sur des cas typiques, un codage sur 16 bits des poids lors de la phase d’apprentissage est nécessaire, tandis que dans la phase de traitement un codage sur 8 bits est suffisant. Les architectures classiques sont dimensionnées au pire cas, tant au niveau des opérateurs et des interconnexions qu’au niveau de la mémoire. Pour éviter ce dimensionnement au pire cas, il est nécessaire de pouvoir fonctionner avec une dynamique flexible, adaptée à la phase de fonctionnement (permettant de coder plus ou moins de valeurs en fonction de la précision requise).
Une analyse des solutions connues montre qu’elles ne parviennent pas à résoudre la problématique évoquée précédemment, ou la résolvent de façon insatisfaisante. Aucune solution de l’art antérieur ne surmonte tous les inconvénients exposés ci-dessus.
Un but de l’invention est notamment de pallier ces inconvénients, plus particulièrement en permettant une utilisation efficace de la surface silicium utilisée pour réaliser les unités de calcul sur lesquelles sont implantés les réseaux de neurones, tout en permettant des calculs avec plusieurs niveaux de précision. A cet effet, l’invention a pour objet un circuit électronique apte à l’implémentation de réseaux de neurones, ledit circuit comportant au moins : - Une série de blocs de calcul aptes à implémenter chacun un ensemble de neurones ; - Un bloc de transformation relié auxdits blocs de calcul par un moyen de communication et apte à être relié en entrée dudit circuit à un bus de données externe, ledit bloc de transformation effectuant la transformation du format des données d’entrée et transmettant lesdites données à tout ou partie desdits blocs de calcul au moyen de K canaux de communication indépendants, un mot de donnée d’entrée étant découpé en sous-mots de sorte que lesdits sous-mots sont transmis sur plusieurs cycles de communication successifs, un sous-mot étant transmis par cycle de communication sur un canal de communication dédié audit mot de sorte que lesdits K canaux sont aptes à transmettre parallèlement K mots en plusieurs cycles de communication.
Ledit moyen de communication est par exemple apte à router ou à diffuser les données transmises par lesdits K canaux vers un ou plusieurs desdits blocs de calcul.
Dans un mode de réalisation possible, chaque bloc de calcul comporte au moins un module de calcul incorporant : - des processeurs élémentaires en parallèle apte à implémenter chacun les opérations d’un neurone formel ; - une mémoire stockant lesdites données à destination desdits processeurs élémentaires, organisée en colonnes ayant chacune une largeur de N bits, N étant supérieur ou égal à 1 ; - un module de transformation apte à découper ou à réunir les sous-mots transmis par ledit bloc de transformation en d’autres sous-mots adaptés à largeur desdites colonnes ; un ensemble de sous-mots en sortie dudit module de transformation formant un mot, ledit mot étant réparti sur une ou plusieurs desdites colonnes en fonction du mode de couplage desdits processeurs auxquels ils sont destinés.
La largeur desdits canaux est par exemple égale à la largeur desdites colonnes, chaque canal ayant une largeur de N bits.
La granularité desdits processeurs élémentaires est par exemple égale à la largeur desdites colonnes.
Dans un cas où un processeur est couplé temporellement à lui-même, au moins deux sous-mots qui lui sont par exemple destinés sont stockés dans une même colonne pour être routés vers ledit processeur sur plusieurs cycles de communication successifs.
Dans un cas où au moins deux processeurs sont couplés spatialement, les sous-mots qui leurs sont destinés sont par exemple stockés sur plusieurs colonnes à une même adresse, lesdits sous-mots étant routés vers lesdits processeurs en un ou plusieurs cycles de communication successifs.
Les sous-mots constituant un même mot sont par exemple stockés à la fois sur plusieurs adresses et sur plusieurs colonnes de ladite mémoire.
Ledit circuit électronique comporte par exemple un module de routage connecté entre ladite mémoire et lesdits processeurs, ledit module de routage ayant un nombre d’entrées au moins égal au nombre de colonnes, chaque entrée étant reliée à une colonne et une seule, ledit module de routage étant apte à router les sous-mots vers lesdits processeurs.
Ledit module de routage est par exemple apte à diffuser des données d’une colonne vers plusieurs processeurs.
Ledit circuit électronique comporte par exemple un bloc de virtualisation de la mémoire relié aux mémoires de tous les blocs et à une mémoire externe via un circuit de type DMA. L’invention concerne également un système de traitement du signal, apte à l’implémentation de réseaux de neurones, dans lequel ledit système comporte une pluralité de circuits électroniques tels que celui décrit précédemment. D’autres caractéristiques et avantages de l’invention apparaîtront à l’aide de la description qui suit, faite en regard de dessins annexés qui représentent : - La figure 1, un exemple d’architecture matérielle selon l’invention ; - La figure 2, un schéma fonctionnel d’un bloc de transformation de données situé en entrée/sortie d’un circuit selon l’invention ; - La figure 3, une présentation de blocs élémentaires composant un bloc de calcul utilisé dans un circuit selon l’invention ; - La figure 4, une illustration des différents modes de couplage possibles entre les processeurs élémentaires en relation avec l’organisation de stockage de la mémoire, à l’intérieur d’un bloc de calcul.
La figure 1 présente une architecture matérielle selon l’invention pour l’implémentation d’un réseau de neurones mais aussi pour d’autres applications de traitement du signal. L’invention sera décrite par la suite pour une application de réseaux de neurones.
Cette architecture est donc décrite par un circuit 10 apte à implémenter un réseau de neurones. Ce circuit peut lui-même être connecté à d’autres circuits identiques, en cascade et/ou juxtaposés, pour former une chaîne complète de traitement neuronal, incluant des pré et post-traitements d’images et/ou de signaux en général. Cette architecture est composée d’un ou plusieurs blocs 6 de transformation de données 7 en entrée et en sortie, d’un bloc 5 de contrôle général, de blocs 3 de contrôle plus locaux contrôlant une série de blocs de calcul 1 comprenant chacun des processeurs élémentaires. Chaque bloc de calcul est apte à implémenter un ensemble de neurones. D’autres types de traitement du signal peuvent bien sûr être implémentés dans ces blocs.
Dans l’exemple de la figure 1, les blocs de calcul 1 sont répartis par branches. Une branche comporte alors plusieurs blocs de calcul 1, un bloc de contrôle 3 et un bus de communication 2 que partagent ces blocs 1,3.
Les branches, plus précisément les bus de communication 2, sont reliés au bloc de contrôle général 5 et à un bloc de transformation 6 via un bus d’interconnexion 4. La communication entre les blocs est commandée par le bloc de contrôle général. Cette communication est par exemple asynchrone. Les bus 2, 4 peuvent être remplacés par tout autre moyen de communication.
La fonction d’un bloc 6 de transformation de données est notamment de découper un mot d’entrée 7, venant par exemple d’une mémoire système, en plusieurs sous-mots d’un nombre de bits inférieur, transmis sur le bus d’interconnexion 4 de manière séquentielle. Typiquement, le mot d’entrée peut être codé sur 32 bits et les sous-mots peuvent être codés sur 8 bits. Plus généralement, on considère à titre d’exemple un mot d’entrée de 2P bits est découpé en 2° sous-mots de 2P/2Q bits, Q étant strictement inférieur à P, avec un mode de transmission à l’intérieur du circuit 10 tel que décrit ci-après en regard de la figure 2. On verra par la suite que les mots d’entrée peuvent être codés sur un nombre de bits qui n’est pas une puissance de 2, du type 2°. Un mot d’entrée peut ainsi être formé de 10 ou 12 bits par exemple.
Le bloc de transformation comporte les ressources nécessaires pour faire la transformation inverse, de la sortie vers l’entrée.
Comme on le verra par la suite, le bloc 6 de transformation permet avantageusement de convertir les données en entrée du circuit vers la précision interne de l’architecture la plus efficace en termes de surface ou d’énergie consommée, voire de capacité de transfert de données, en ce qui concerne les différents composants de l’interconnexion, notamment les bus 2, 4. Ainsi, les aspects liés à la conversion des mots en entrée et en sortie associés aux mécanismes internes permettent d’optimiser le circuit à la fabrication en fonction des contraintes liées aux données, à l’application ou encore aux caractéristiques du circuit en termes de surface et de consommation.
La figure 2 est un schéma fonctionnel interne du bloc de transformation 6 illustrant le découpage des mots d’entrée. Le fonctionnement est décrit pour des mots d’entrée de 32 bits. Dans cet exemple, les bus internes de l’architecture ont une largeur 32 bits au total pour les données et 4 canaux indépendants ont été choisis. Ainsi, la granularité de chaque canal est de 8 bits. Les sous-mots sont donc codés sur 8 bits dans le bloc de transformation. Un codage parallèle partiel est ainsi utilisé dans toute la structure interne du circuit, notamment dans les différentes interconnexions 2, 4.
Dans l’exemple de la figure 2, quatre canaux 21, 22, 23, 24 de communication indépendants sont en sortie du bloc de transformation, chaque canal ayant une capacité de 8 bits. Dans cette configuration, un mot d’entrée de 32 bits est transmis par l’un des quatre canaux en quatre cycles de communication (possiblement appelés transactions).
Pour illustrer cette transformation et transmission, on considère à titre d’exemple quatre mots d’entrée successifs codés chacun sur 32 bits, chaque mot étant composé de quatre sous-mots de 8 bits.
Par ordre d’arrivée, les mots suivants sont présentés en entrée du bloc de transformation 6 : - Un premier mot M1 composé des sous-mots SM11, SM12, SM13, SM14 ; - Un deuxième mot M2 composé des sous-mots SM21, SM22, SM23, SM24 ; - Un troisième mot M3 composé des sous-mots SM31, SM32, SM33, SM34 ; - Un quatrième mot M4 composé des sous-mots SM41, SM42, SM43, SM44 ;
Lors d’un premier cycle de communication, les sous-mots SM11, SM21, SM31 et SM41 sont transmis respectivement sur le premier canal 21, sur le deuxième canal 22, sur le troisième canal 23 et sur le quatrième canal 24. Lors du deuxième cycle, les sous-mots SM12, SM22, SM32 et SM42 sont transmis respectivement sur le premier canal 21, sur le deuxième canal 22, sur le troisième canal 23 et sur le quatrième canal 24.
Lors du troisième cycle, les sous-mots SM13, SM23, SM33 et SM43 sont transmis respectivement sur le premier canal 21, sur le deuxième canal 22, sur le troisième canal 23 et sur le quatrième canal 24.
Lors du quatrième cycle, les sous-mots SM14, SM24, SM34 et SM44 sont transmis respectivement sur le premier canal 21, sur le deuxième canal 22, sur le troisième canal 23 et sur le quatrième canal 24.
Ainsi, le premier mot M1 est transmis sur le premier canal 21, le deuxième mot M2 est transmis sur le deuxième canal 22, le troisième mot M3 est transmis sur le troisième canal 23 et le quatrième mot M4 sur le quatrième canal 24, tous en quatre cycles. Pour transmettre un mot de 32 bits, il faut donc quatre cycles de communication.
Dans un cas plus général, avec une granularité de 2° pour chaque canal des interconnexions à l’intérieur du circuit 10, un mot d’entrée de 2P bits est découpé en 2P/ 2° sous-mots de 2° bits puis est transmis en 2P/ 2° cycles dans un des canaux de communication 21, 22, 23, 24. Dans le cas où l’on a 2° canaux en parallèle, 2° mots peuvent ainsi être transmis parallèlement en 2° cycles. Dans l’exemple de la figure 2, P est égal à 5 et Q est égal à 2. La description est poursuivie par la suite avec cet exemple numérique. Il faut noter ici que la granularité des différents canaux des interconnexions du circuit peut aussi ne pas être une puissance de 2 (i.e. les sous-mots peuvent ne pas être codés sur 2° bits).
Comme indiqué précédemment, les mots en entrée du bloc de transformation ne sont pas nécessairement codés sur un nombre de bits qui est une puissance de 2. De façon générale, un mot d’entrée est découpé en sous-mots de sorte que ces sous-mots soient transmis en plusieurs cycles de communication successifs, un sous-mot étant transmis par cycle sur un canal de communication dédié à ce mot. Si le bloc 6 comporte K canaux de communications indépendants à sa sortie, il peut ainsi transmettre K mots en parallèle sur plusieurs cycles de communication successifs.
Ces mots M1, M2, M3, M4 sont ensuite transmis vers les blocs de calcul 1 aptes à les traiter. La transmission se fait par routage s’il y a une seule destination ou par diffusion, possiblement partielle, si tous ou partie des blocs de calcul doivent recevoir ces mots. Des lignes de contrôle, non représentées, complètent ces canaux pour contrôler les échanges. Le type de transmission est notamment commandé par les blocs de contrôle 3 affectés aux branches en association avec le bloc de contrôle général.
En fonction des caractéristiques souhaitées et du découpage des données à traiter, les blocs de calcul peuvent être configurés afin de coupler leurs opérateurs de manière à traiter des données de précision plus grande que la granularité de base de leurs opérateurs. Les caractéristiques mentionnées ci-dessus définissent un compromis entre la rapidité, faible latence, et la précision souhaitée. De plus, les possibilités de couplage permettent, sur une architecture optimisée grâce au découpage des mots, d’exécuter des applications ayant besoin de données codées avec des précisions différentes de la précision nominale des opérateurs. Cette caractéristique permet donc, après fabrication du circuit, d’implémenter des applications de domaines variés. En ce qui concerne les compromis, pour une même configuration matérielle et des données de même taille à traiter, on pourra préférer une faible latence de traitement pour chaque donnée, ou la possibilité de traiter plus de données en même temps en plus de temps. De même, on pourra préférer diminuer la précision des données traitées de manière à en traiter plus en parallèle, ou inversement. Ces choix de compromis sont précisés par la suite.
La figure 3 illustre de façon schématique les modules composant un bloc de calcul 1. Un tel bloc est apte à implémenter un ensemble de neurones.
Un bloc 1 comporte un module de transformation local 31, une mémoire 32 (par exemple de type RAM pour Random Access Memory), un module de routage 33, un module de contrôle 34 et un module de calcul composé de plusieurs processeurs élémentaires PE. Chaque processeur élémentaire peut réaliser a minima une fonction du type de la relation (1) : *,=/Œ>A)· j
La mémoire 32 stocke notamment des coefficients synaptiques et des résultats de calculs intermédiaires, toutes ces données étant destinées aux processeurs élémentaires PE. Cette mémoire est donc banalisée.
Cette mémoire 32 est organisée en colonnes 40 ayant chacune une largeur de N bits, N étant supérieur à 1. Les sous-mots constituant chaque mot mémorisé sont répartis sur une ou plusieurs colonnes en fonction du mode de couplage des processeurs élémentaires PE. Le stockage et les modes de couplage seront décrits plus précisément en regard de la figure 4.
Les données traitées par le bloc 1 sont les sous-mots récupérées sur le bus de communication 2 par le module de transformation local 31, ces sous-mots étant issus du bloc de transformation 6. Ce module de transformation a notamment pour fonction de transformer les données adaptées au bus de communication 2, par le bloc de transformation 6, en données adaptées au stockage dans la mémoire 32, ou adaptées au calcul par les processeurs élémentaires PE. Cela permet notamment aux données de prendre le moins de place possible en mémoire 32, ou d’être traitées directement par les processeurs PE sur la granularité la mieux adaptée pour l’application en cours. Ainsi, ce bloc 31 de transformation permet avantageusement de convertir les données en entrée du bloc de calcul 1 vers la précision interne la plus efficace en termes de surface ou d’énergie consommée, les blocs mémoires (« memory cuts >>) ayant par exemple des caractéristiques très différentes en fonction de leur facteur de forme (largeur, hauteur) pour une même capacité totale.
La transformation opérée par le module de transformation 31 consiste à découper ou à réunir les sous-mots transmis par le bus de communication 2 en d’autres sous-mots adaptés à la largeur des colonnes de la mémoire 32. Dans certains cas, cette adaptation n’est pas nécessaire car les sous-mots issus du bloc de transformation 6 peuvent avoir la même largeur que les colonnes de la mémoire 32. C’est par exemple le cas lorsque chaque canal 21,22, 23, 24 a la même largeur que les colonnes, véhiculant N bits en parallèle.
Après adaptation ou non par le module de transformation 31, ces données sont écrites dans la mémoire 32. Au moment de l’exécution de la suite d’opérations, l’association du module de contrôle 44 et du module de routage 33 permet de coupler les processeurs élémentaires PE de manière à les faire coopérer si besoin, soit temporellement (un module traite une même donnée en plusieurs cycles de calcul), soit spatialement (plusieurs modules traitent une donnée en un cycle de calcul, possiblement sur plusieurs cycles d’horloge), soit temporellement et spatialement à la fois. En particulier, le module de contrôle 44 commande l’interconnexion des processeurs élémentaires entre eux.
La figure 4 illustre ces différents couplages. Plus particulièrement, la figure 4 illustre les différents modes d’exécution possibles, en présentant les différents modes de stockage des mots dans la mémoire 32 et les interactions entre cette mémoire et le module de calcul 35 via le module de routage 33.
La granularité de base choisie à l’intérieur du circuit définit la largeur de colonnes 40 à l’intérieur de la mémoire 32. La granularité de base est le nombre de bits maximum en entrée des opérateurs du processeur élémentaire PE (par exemple, un additionneur 8 bits traite des données d’entrée sur 8 bits, etc.).
Dans l’exemple de la figure 4, la mémoire comporte huit colonnes de 8 bits, la mémoire ayant une largeur de 64 bits. Il serait possible de prévoir une mémoire de 32 bits composée de quatre colonnes, par exemple ou toute autre combinaison. Le module de calcul 35 comporte le même nombre de processeurs élémentaires PE que de colonnes 40 dans la mémoire, les mots ou sous-mots de chaque colonne étant dirigés vers les processeurs PE par le routage 33. L’unité de routage permet d’associer n’importe quelle colonne à chaque processeur élémentaire PE, voire même de diffuser la donnée d’une colonne à tout (diffusion totale) ou partie (diffusion partielle) des processeurs élémentaires PE. En outre, en utilisant ce principe, les données de plusieurs colonnes peuvent être diffusées partiellement à différents processeurs élémentaires PE. La granularité des processeurs PE (le nombre de bits qu’ils traitent en parallèle en un seul cycle) est la même que celle des colonnes 40.
Cette granularité des opérateurs de base est choisie à la conception du circuit 10 et peut être un compromis entre les exigences de consommation, des contraintes de surface, des exigences de vitesse d’exécution et des besoins de l’application. Par la suite, en fonctionnement, deux mécanismes internes à un bloc de calcul 1 permettent de faire varier dynamiquement le nombre de bits des données traitées, et donc la précision.
Le premier mécanisme réalise un couplage temporel sur chaque processeur élémentaire PE. Chacun des processeurs PE du bloc de calcul dispose d’une possibilité de se coupler avec lui-même temporellement de manière à traiter en plusieurs cycles des données de taille plus importante que sa granularité originale. Dans l’exemple de la figure 4, cette granularité est égale à 8 bits. Dans ce premier mécanisme, avec un chemin de données de 8 bits par exemple un processeur élémentaire PE pourrait traiter des données de 16 bits sur deux cycles, notamment pour une addition. Un nombre plus important de cycles serait nécessaire pour une multiplication. Dans cette configuration, chaque processeur PE communique directement avec une seule colonne de la mémoire 32 et n’interagit pas avec ses voisins.
Avant de décrire ce couplage temporel sur la figure 4, on décrit un premier mode d’exécution, illustré sur la première colonne, correspondant au cas simple ou la taille du mot de données 41 de la colonne est parfaitement adaptée à la granularité du processeur 410. Ainsi, une seule ligne et une seule colonne de mémoire suffisent à stocker ce mot 41.
Un second cas, illustré sur la deuxième colonne de la mémoire, présente un exemple de couplage temporel. Dans ce cas, le stockage d’un mot nécessite plusieurs sous-mots 421, 422 sur une seule colonne, donc plusieurs adresses mémoires. Le processeur 420 effectue les opérations en plusieurs cycles. Des données codées sur un grand nombre de bits nécessitent d’autant plus de cycles que la granularité des opérateurs choisies à la conception est faible.
Le second mécanisme réalise un couplage spatial entre les processeurs PE. Par ce mécanisme, ceux-ci peuvent être couplés entre eux de manière à augmenter la taille des données traitées sans augmenter le nombre de cycles nécessaires à leur traitement, notamment pour l’addition. Pour d’autres opérations, ce peut ne pas être le cas.
Ce couplage spatial est illustré sur les troisième et quatrième colonnes de la mémoire 32. Dans cet exemple, deux processeurs élémentaires PE, par exemple voisins, sont couplés afin de traiter ensemble des mots deux fois plus large que leur granularité. Un mot traité est alors composé de deux sous-mots 43, 44 stockés à la même adresse de mémoire, sur deux colonnes. Par couplage C1, les deux processeurs 430, 440 traitent ensemble des données de 16 bits. Il est bien sûr possible de prévoir un traitement de mots plus larges, par exemple 24 ou 32 bits. Dans ces cas, le mot traité sera composé de trois ou quatre sous-mots stockés à une même adresse mémoire.
Un quatrième cas, illustré sur les trois dernières colonnes, illustre un couplage spatial C2 pour traiter un mot 45 de 24 bits, stocké sur ces trois colonnes à une même adresse.
Un cinquième cas plus complexe, illustré sur les quatre dernières colonnes de la figure, montre que l’organisation de la mémoire 32 permet un remplissage optimum de celle-ci.
Ce cas combine les deux mécanismes. En d’autres termes, il combine le couplage temporel et le couplage spatial. Plus précisément, dans ce cas le couplage spatial est réalisé avec un contrôle plus fin du module de routage afin de maximiser, ou d’optimiser, l’utilisation de la mémoire et de son espace. Dans ce cas, on cherche à titre d’exemple à optimiser l’espace pour le traitement de quatre mots de 24 bits. Dans cet exemple quatre mots 46, 47, 48, 49 de 24 bits sont stockés sur seulement trois adresses mémoires, par exemple trois adresses successives. L’ensemble de ces mots est stocké sur une largeur de 32 bits.
Pour l’exécution des opérations, dans un premier cycle le premier mot 46 est envoyé directement aux processeurs 450, 460, 470 correspondant aux trois colonnes sur lesquelles est stocké le mot 46, à une même adresse mémoire. Cela est effectué pendant que le sous-mot du deuxième mot 47, stocké à la même adresse mémoire sur la dernière colonne est positionné pour le deuxième cycle, et stocké dans un registre temporaire, par exemple. Lors de ce deuxième cycle, les deux autres sous-mots du deuxième mot 47, stockés à l’adresse suivante, sont routés afin d’être traités en même temps que le premier sous-mot, deux sous-mots du troisième mot 48 stockés à la même adresse étant gardés pour le troisième cycle. Lors de ce troisième cycle, le dernier sous-mot du troisième mot est routé vers les processeurs pour être traité en même temps que les deux sous-mots stockés à l’adresse précédente. Au quatrième cycle, aucun accès mémoire n’a lieu, le quatrième mot 49 étant directement disponible. Ainsi, avec seulement trois lectures mémoire dans cette configuration, quatre mots ont pu être traités. Cela permet à la fois de maximiser la place mémoire et de diminuer la consommation énergétique liée à la lecture de la mémoire 32, de type RAM ou SRAM (Synchronous Random Access Memory) par exemple.
La figure 4 illustre un autre avantage notable de l’invention qui rend possible des traitements multi-précision, par exemple des traitements de données 16 bits par des opérateurs 8 bits en étendant le traitement dans le temps ou en effectuant un couplage physique entre les opérateurs, par interconnexion de deux opérateurs voisins.
Le bloc de contrôle général 5 a notamment pour mission de configurer ces couplages, temporels ou spatiaux, en envoyant temporellement des signaux de commande aux différents blocs de calcul 1 pour appliquer les suites d’opérations nécessaires au traitement en cours ou à venir, les signaux de commande étant transmis aux unités de contrôle interne 34.
Les lignes précédentes ont décrit un circuit, notamment apte à implémenter un réseau de neurones. Ce circuit peut être avantageusement utilisé pour l’exécution de réseaux de neurones. D’une part, la structure d’un circuit selon l’invention par ses différents mécanismes de diffusion (« broadcast ») hiérarchiques et de routage permet, à moindre coût en silicium, de réaliser des réseaux de neurones allant du très peu connecté au totalement connecté (dit « fully-connected »). D’autre part, cette structure permet une extensibilité par cascade (routage) ou par diffusion (« broadcast ») entre plusieurs circuits 10 du même type, tout en gardant le codage partiellement parallèle, gage de généralité au niveau de la dynamique des calculs ou en d’autres termes de l’adaptation à toutes les dynamiques implémentables. L’interconnexion et l’extensibilité sont facilitées par le mécanisme de communication asynchrone entre les blocs de calcul 1.
Dans un mode de réalisation particulier, un mécanisme de DMA (« Direct Memory Access ») intelligent relie tous les blocs de calcul. On peut ainsi réaliser une virtualisation des données, permettant de réaliser des réseaux de neurones ou des traitements sur des images dépassant la taille de la mémoire interne du circuit. A cet effet, le circuit 10 comporte un bloc de virtualisation de la mémoire, non représenté, relié aux mémoires 32 de tous les blocs et à une mémoire externe via un circuit à accès direct mémoire (DMA).
La combinaison de l’interconnexion et des mécanismes de virtualisation permet de plus un partage des poids efficace, très utile dans l’implémentation de nouveaux types de réseaux de neurones. En effet, on peut ainsi augmenter la mémoire totale disponible pour l’architecture, soit pour stocker de grandes quantités de données en entrée dans le mode traitement du signal, soit pour stocker de grandes quantités de poids synaptiques pour les réseaux complexes dans le mode reconnaissance.

Claims (12)

  1. REVENDICATIONS
    1. Circuit électronique apte à l’implémentation de réseaux de neurones, caractérisé en ce qu’il comporte au moins : - Une série de blocs de calcul (1) aptes à implémenter chacun un ensemble de neurones ; - Un bloc (6) de transformation relié auxdits blocs de calcul (1) par un moyen de communication (2, 4) et apte à être relié en entrée dudit circuit (10) à un bus de données externe (7), ledit bloc de transformation (6) effectuant la transformation du format des données d’entrée et transmettant lesdites données à tout ou partie desdits blocs de calcul (1) au moyen de K canaux de communication indépendants (21, 22, 23, 24), un mot de donnée d’entrée (M1) étant découpé en sous-mots (SM11, SM12, SM13, SM14) de sorte que lesdits sous-mots sont transmis sur plusieurs cycles de communication successifs, un sous-mot étant transmis par cycle de communication sur un canal de communication (21) dédié audit mot(M1) de sorte que lesdits K canaux sont aptes à transmettre parallèlement K mots (M1, M2, M3, M4) en plusieurs cycles de communication.
  2. 2. Circuit électronique selon la revendication 1, caractérisé en ce que ledit moyen de communication (2, 4) est apte à router ou à diffuser les données transmises par lesdits K canaux vers un ou plusieurs desdits blocs de calcul (1).
  3. 3. Circuit électronique selon l’une quelconque des revendications précédentes, caractérisé en ce que chaque bloc de calcul (1) comporte au moins un module de calcul (35) incorporant : - des processeurs élémentaires (PE) en parallèle apte à implémenter chacun les opérations d’un neurone formel ; - une mémoire (32) stockant lesdites données à destination desdits processeurs élémentaires, organisée en colonnes (40) ayant chacune une largeur de N bits, N étant supérieur ou égal à 1 ; - un module de transformation (31) apte à découper ou à réunir les sous-mots transmis par ledit bloc de transformation (6) en d’autres sous-mots adaptés à largeur desdites colonnes (40) ; un ensemble de sous-mots (421, 422, 43, 44) en sortie dudit module de transformation (31) formant un mot, ledit mot étant réparti sur une ou plusieurs desdites colonnes en fonction du mode de couplage desdits processeurs (PE) auxquels ils sont destinés.
  4. 4. Circuit électronique selon la revendication 3, caractérisé en ce que la largeur desdits canaux est égale à la largeur desdites colonnes, chaque canal ayant une largeur de N bits.
  5. 5. Circuit électronique selon l’une quelconque des revendications 3 ou 4, caractérisé en ce que la granularité desdits processeurs élémentaires (PE) est égale à la largeur desdites colonnes.
  6. 6. Circuit électronique selon l’une quelconque des revendications 3 à 5, caractérisé en ce qu’un processeur (PE, 420) étant couplé temporellement à lui-même, au moins deux sous-mots (421, 422) qui lui sont destinés sont stockés dans une même colonne pour être routés (33) vers ledit processeur (420) sur plusieurs cycles de communication successifs.
  7. 7. Circuit électronique selon l’une quelconque des revendications 3 à 6, caractérisé en ce qu’au moins deux processeurs (PE, 430, 440) étant couplés spatialement, les sous-mots (43, 44) qui leurs sont destinés sont stockés sur plusieurs colonnes à une même adresse, lesdits sous-mots (43, 44) étant routés (33) vers lesdits processeurs en un ou plusieurs cycles de communication successifs.
  8. 8. Circuit électronique selon l’une quelconque des revendications 5 ou 6, caractérisé en ce que les sous-mots constituant un même mot (47, 48) peuvent être stockés à la fois sur plusieurs adresses et sur plusieurs colonnes de ladite mémoire (32).
  9. 9. Circuit électronique selon l’une quelconque des revendications 3 à 7, caractérisé en ce qu’il comporte un module de routage (33) connecté entre ladite mémoire (32) et lesdits processeurs (PE), ledit module de routage ayant un nombre d’entrées au moins égal au nombre de colonnes (40), chaque entrée étant reliée à une colonne et une seule, ledit module de routage (33) étant apte à router les sous-mots vers lesdits processeurs (PE).
  10. 10. Circuit électronique selon l’une quelconque des revendications 3 à 9, caractérisé en ce que ledit module de routage (33) est apte à diffuser des données d’une colonne (40) vers plusieurs processeurs (PE).
  11. 11. Circuit électronique selon l’une quelconque des revendications 3 à 8, caractérisé en ce qu’il comporte un bloc de virtualisation de la mémoire relié aux mémoires (32) de tous les blocs et à une mémoire externe via un circuit de type DMA.
  12. 12. Système de traitement du signal, apte à l’implémentation de réseaux de neurones, caractérisé en ce qu’il comporte une pluralité de circuits électroniques selon l’une quelconque des revendications 1 à 10.
FR1562912A 2015-12-21 2015-12-21 Circuit electronique, notamment apte a l'implementation de reseaux de neurones a plusieurs niveaux de precision. Active FR3045893B1 (fr)

Priority Applications (4)

Application Number Priority Date Filing Date Title
FR1562912A FR3045893B1 (fr) 2015-12-21 2015-12-21 Circuit electronique, notamment apte a l'implementation de reseaux de neurones a plusieurs niveaux de precision.
US15/781,680 US11308388B2 (en) 2015-12-21 2016-12-07 Electronic circuit, particularly for the implementation of neural networks with multiple levels of precision
EP16809743.4A EP3394799A1 (fr) 2015-12-21 2016-12-07 Circuit electronique, notamment apte a l'implementation de reseaux de neurones a plusieurs niveaux de precision
PCT/EP2016/079998 WO2017108398A1 (fr) 2015-12-21 2016-12-07 Circuit electronique, notamment apte a l'implementation de reseaux de neurones a plusieurs niveaux de precision

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR1562912A FR3045893B1 (fr) 2015-12-21 2015-12-21 Circuit electronique, notamment apte a l'implementation de reseaux de neurones a plusieurs niveaux de precision.

Publications (2)

Publication Number Publication Date
FR3045893A1 true FR3045893A1 (fr) 2017-06-23
FR3045893B1 FR3045893B1 (fr) 2017-12-29

Family

ID=56068978

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1562912A Active FR3045893B1 (fr) 2015-12-21 2015-12-21 Circuit electronique, notamment apte a l'implementation de reseaux de neurones a plusieurs niveaux de precision.

Country Status (4)

Country Link
US (1) US11308388B2 (fr)
EP (1) EP3394799A1 (fr)
FR (1) FR3045893B1 (fr)
WO (1) WO2017108398A1 (fr)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108475347A (zh) * 2017-11-30 2018-08-31 深圳市大疆创新科技有限公司 神经网络处理的方法、装置、加速器、系统和可移动设备
CN110596668B (zh) * 2019-09-20 2021-06-04 中国人民解放军国防科技大学 基于互逆深度神经网络的目标外辐射源被动定位方法
FR3114422B1 (fr) 2020-09-22 2023-11-10 Commissariat Energie Atomique Calculateur électronique de mise en œuvre d’un réseau de neurones artificiels, avec blocs de calcul de plusieurs types

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130282945A1 (en) * 2012-04-19 2013-10-24 Lockheed Martin Corporation Apparatus and method emulating a parallel interface to effect parallel data transfer from serial flash memory
WO2015090885A1 (fr) * 2013-12-18 2015-06-25 Commissariat A L'energie Atomique Et Aux Energies Alternatives Module de traitement du signal, notamment pour reseau de neurones et circuit neuronal.

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3011659B1 (fr) 2013-10-04 2015-10-16 Commissariat Energie Atomique Circuit electronique, notamment apte a l'implementation d'un reseau de neurones, et systeme neuronal
US9805303B2 (en) * 2015-05-21 2017-10-31 Google Inc. Rotating data for neural network computations
US10061537B2 (en) * 2015-08-13 2018-08-28 Microsoft Technology Licensing, Llc Data reordering using buffers and memory

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130282945A1 (en) * 2012-04-19 2013-10-24 Lockheed Martin Corporation Apparatus and method emulating a parallel interface to effect parallel data transfer from serial flash memory
WO2015090885A1 (fr) * 2013-12-18 2015-06-25 Commissariat A L'energie Atomique Et Aux Energies Alternatives Module de traitement du signal, notamment pour reseau de neurones et circuit neuronal.

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
CLEMENT FARABET ET AL: "NeuFlow: A runtime reconfigurable dataflow processor for vision", COMPUTER VISION AND PATTERN RECOGNITION WORKSHOPS (CVPRW), 2011 IEEE COMPUTER SOCIETY CONFERENCE ON, IEEE, 20 June 2011 (2011-06-20), pages 109 - 116, XP031926582, ISBN: 978-1-4577-0529-8, DOI: 10.1109/CVPRW.2011.5981829 *
MARCELO TOSINI ET AL: "NNGen: a powerful tool for the implementation of Artificial Neural Networks on a chip", SADIO ELECTRONIC JOURNAL OF INFORMATICS AND OPERATIONS RESEARCH, vol. 6, no. 1, 1 January 2004 (2004-01-01), pages 42 - 52, XP055303177 *
MISRA J ET AL: "Artificial neural networks in hardware: A survey of two decades of progress", NEUROCOMPUTING, ELSEVIER SCIENCE PUBLISHERS, AMSTERDAM, NL, vol. 74, no. 1-3, 5 May 2010 (2010-05-05), pages 239 - 255, XP027517200, ISSN: 0925-2312, [retrieved on 20101123], DOI: 10.1016/J.NEUCOM.2010.03.021 *

Also Published As

Publication number Publication date
EP3394799A1 (fr) 2018-10-31
US11308388B2 (en) 2022-04-19
FR3045893B1 (fr) 2017-12-29
WO2017108398A1 (fr) 2017-06-29
US20190005378A1 (en) 2019-01-03

Similar Documents

Publication Publication Date Title
EP3084588B1 (fr) Module de traitement du signal, notamment pour reseau de neurones et circuit neuronal.
EP3660849B1 (fr) Circuit mémoire adapté à mettre en oeuvre des opérations de calcul
EP3053108B1 (fr) Circuit electronique, notamment apte a l&#39;implementation d&#39;un reseau de neurones, et systeme neuronal
EP0154340A1 (fr) Processeur de calcul d&#39;une transformée discrète inverse du cosinus
EP0558125B1 (fr) Processeur neuronal à cellules synaptiques reparties
EP3844679A1 (fr) Architecture de calculateur d&#39;une couche de convolution dans un reseau de neurones convolutionnel
EP0597028A1 (fr) Architecture de systeme en tableau de processeurs a structure parallele.
FR2860313A1 (fr) Composant a architecture reconfigurable dynamiquement
EP0552074A1 (fr) Système de traitement de données multiprocesseur
FR2622713A1 (fr) Circuit de calcul utilisant une arithmetique residuelle
WO2017108398A1 (fr) Circuit electronique, notamment apte a l&#39;implementation de reseaux de neurones a plusieurs niveaux de precision
EP0259231A1 (fr) Dispositif de détermination de la transformée numérique d&#39;un signal
FR2724741A1 (fr) Circuit electronique de calcul modulaire dans un corps fini
FR2604270A1 (fr) Additionneur binaire comportant un operande fixe, et multiplieur binaire parallele-serie comprenant un tel additionneur
FR2568036A1 (fr) Circuit de calcul
WO2020012105A1 (fr) Processeur ntt incluant une pluralite de bancs de memoires
EP0478431A1 (fr) Procédé et circuit de codage d&#39;un signal numérique pour déterminer le produit scalaire de deux vecteurs et traitement TCD correspondant
EP0319421B1 (fr) Comparateur binaire et opérateur de tri de nombres binaires
EP0317413A1 (fr) Dispositif de traitement de données relatives à des éléments d&#39;image
EP2553655B1 (fr) Architecture de traitement d&#39;un flux de données permettant l&#39;extension d&#39;un masque de voisinage
FR2716321A1 (fr) Procédé et dispositif de quantification vectorielle d&#39;un signal numérique, notamment appliqué à la compression d&#39;images numériques.
EP1052575A1 (fr) Système de transmission, récepteur et réseau d&#39;interconnexion
FR2570853A1 (fr) Dispositif de traitement en temps reel de signal numerique par convolution
EP0329572A1 (fr) Multiplieur de nombres binaires à très grand nombre de bits
FR2838222A1 (fr) Systeme reconfigurable de controle base sur la mise en oeuvre materielle de graphes de petri

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

PLSC Publication of the preliminary search report

Effective date: 20170623

PLFP Fee payment

Year of fee payment: 3

PLFP Fee payment

Year of fee payment: 5

PLFP Fee payment

Year of fee payment: 6

PLFP Fee payment

Year of fee payment: 7

PLFP Fee payment

Year of fee payment: 8

PLFP Fee payment

Year of fee payment: 9